greenplum 数据库单机部署

—————————————————————————————

1、安装说明

1.1、环境说明

系统:centos7.8 

在这里插入图片描述

Greenplum 版本:6.9

1.2、Greenplum6.9 下载

有两种版本下载,第一种Pivotal Greenplum这种是商业版的,与开源版 greenplum相比 多了一些功能,建议下载安装Pivotal Greenplum。

(1) 下载pivotal Greenplum:
下载地址

注意:需要先注册一下账号。
在这里插入图片描述
可在下拉框中选择自己需要的版本。

我选择下载 6.9.0 版本的。
在这里插入图片描述
点击 Greenplum Database Server
在这里插入图片描述

因为我的系统为centos 7 ,而centos 7与 RHEL相对应,所以这里下载第二个。
如果你的系统为centos 6,那么下载第三个。

详细的Greenplum 与系统的版本对照,请看文章结尾。

(2) 开源版Greenplum下载:

下载地址

在这里插入图片描述
在这里插入图片描述
下载完成。
在这里插入图片描述

1.3、集群介绍

因为是单机部署,所以只有一台虚拟机。Master与Segment都在同一台主机上。
虚拟机内存大小为1.5g,系统为centos7.8。

1.4、Master与Segment职责对比

Master:

(1) 建立与客户端的回话连接和管理
(2) SQL的解析并形成分布式的执行计划
(3) 将生成好的执行计划分发到每个 Segment 上执行
(4) 收集 Segment 的执行结果
(5) Master 不存储业务数据,只存储数据字典
(6) Master 主机可以一主一备,分布在两台机器上
(7) 为了提高性能, Master 最好单独占用一台机器

Segment:
(1) 业务数据的存储和存取
(2) 执行 Master 分发的 SQL 语句
(3) 对于 Master 来讲,每个 Segment 都是对等的,负责对应数据的存储和计算
(4) 每一台机器上可以配置一到多个 Segment
(5) 由于每个 Segment 都是对等的,建议采用相同的机器配置
(6) Segment 分 primary 和 mirror 两种,一般交错的存放在子节点上。

2、安装环境准备

2.1 查询linux虚拟机的ip地址

执行如下命令:

ifconfig

在这里插入图片描述
我的这台虚拟机的ip地址为192.168.88.129 。

2.2、主机名修改

永久生效,执行如下命令:

hostnamectl set-hostname mdw

在这里插入图片描述
执行完之后,进行查看。
在这里插入图片描述
测试显示的还是之前的主机名 hadoop_2,重启一下系统就可以显示主机名为mdw了。
在这里插入图片描述

2.3、配置/etc/hosts

我所谓的单机模式是指将Master和segment安装在一台机器上,尝试了网上的各种配置发现并不成功,尤其是将mdw和sdw都解析成127.0.0.1的设置根本行不通。你可以尝试设置Master为127.0.0.1,而segment为正式的ip地址,或者按我这么做:

执行如下命令:

vim /etc/hosts

后面添加以下内容:

192.168.191.131 mdw sdw

在这里插入图片描述

2.4、 关闭SELINUX

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。

SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。

在这里我们也关闭SELINUX。

执行如下命令:

vim  /etc/selinux/config 

设置 SELINUX=disabled
在这里插入图片描述

2.5、关闭防火墙

CentOS7版本的防火墙默认使用的是firewall,与之前的版本使用的iptables不一样。

所以执行如下命令关闭防火墙:

(1) 关闭防火墙 :

sudo systemctl stop firewalld.service

在这里插入图片描述

(2)、 关闭开机启动:

sudo systemctl disable firewalld.service

在这里插入图片描述

2.6、修改内核配置参数

在/etc/sysctl.conf文件中加入有关共享内存与网络参数配置

vim /etc/sysctl.conf

加入以下内容:

#是否打开ip转发。默认设置0。 0:禁止 1:转发
net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1
#处理无源路由的包
net.ipv4.conf.default.accept_source_route = 0

#0为禁用SysRq,1为启用SysRp
kernel.sysrq = 0
#Core文件的文件名是否添加应用程序pid做为扩展 0:不添加 1:添加
kernel.core_uses_pid = 1

#表示是否打开TCP同步标签(syncookie),可以防止一个套接字在有过多试图连接到达时引起过载。默认设置:0
net.ipv4.tcp_syncookies = 1

#单个消息队列中允许的最大字节长度(限制单个消息队列中所有消息包含的字节数之和)
kernel.msgmnb = 65536
#消息队列中单个消息的最大字节数
kernel.msgmax = 65536
#系统所允许的最大共享内存段的大小(以字节为单位)
kernel.shmmax = 68719476736
#系统上可以使用的共享内存的总量(以字节为单位
kernel.shmall = 4294967296

net.ipv4.tcp_tw_recycle=1
# 对于还未获得客户端确认的连接请求,需要保存在队列中最大数目。对于 超过 128Mb 内存的系统,默认值是 1024,低于 128Mb 的则为 128。
net.ipv4.tcp_max_syn_backlog=4096
#设置当个别接口接收包的速度快于内核处理速度时允许的最大的包序列
net.core.netdev_max_backlog=10000

vm.overcommit_memory=2

net.ipv4.conf.all.arp_filter = 1

在这里插入图片描述
手动执行命令让参数生效,当然,你也可以重启系统
执行命令:

sysctl -p

在这里插入图片描述

2.7、配置资源限制参数

在/etc/security/limits.conf中加入限制参数,修改文件打开数

vim /etc/security/limits.conf

在limits.conf文件中添加如下内容

* soft nofile 65536

* hard nofile 65536

* soft nproc 131072

* hard nproc 131072

在这里插入图片描述

2.8、创建用户和用户组

创建gpadmin 用户组

[root@mdw ~]# groupadd gpadmin

创建gpadmin用户,指定其属于gpadmin用户组,将其作为安装greenplum的操作系统用户。

[root@mdw ~]#  useradd -g gpadmin gpadmin

为gpadmin用户创建密码

[root@mdw ~]# passwd gpadmin

在这里插入图片描述

给gpadmin用户加上sudo权限

在root用户下执行如下命令:

visudo

在这里插入图片描述
找到这行 root ALL=(ALL) ALL,在他下面添加gpadmin ALL=(ALL) ALL
在这里插入图片描述

添加完之后,保存并退出!

3、安装Greenplum

3.1、上传Greenplum到虚拟机中

因为我是在本地下载的Greenplum,所以需要上传 greenplum-db-6.9.0-rhel7-x86_64.rpm 到虚拟机中。
在这里插入图片描述
查看:
在这里插入图片描述

3.2、安装

安装 greenplum,建议不要通过rpm命令去安装,因为会提示缺少依赖。

执行:

rpm -ivh greenplum-db-5.5.0-rhel7-x86_64.rpm

提示缺少依赖:

在这里插入图片描述
直接执行如下命令,就可以把需要的依赖自动下载。

[root@mdw ~]# yum install -y greenplum-db-6.9.0-rhel7-x86_64.rpm

在这里插入图片描述
安装成功!

默认安装到 /usr/local,授权给gpadmin
在这里插入图片描述
执行如下命令,完成授权:

[root@mdw local]# chown -R gpadmin /usr/local/greenplum*
[root@mdw local]# chgrp -R gpadmin /usr/local/greenplum*

在这里插入图片描述

将/usr/local/greenplum-db/greenplum_path.sh 添加到环境变量中:

[root@mdw greenplum-db]# source /usr/local/greenplum-db/greenplum_path.sh

4、环境配置

4.1、创建数据存储空间

切换到gpadmin账户下,在home目录下建立master和segment的数据存放目录。你也可以自行设定数据存放目录,如果你不是以gpadmin建立的目录,还需要修改目录的用户和用户组,最好是建在home目录下.

切换到gpadmin用户下:

su gpadmin

在这里插入图片描述
建立master 和 segment的数据存放目录。

mkdir -p /home/gpadmin/masterdata
mkdir -p /home/gpadmin/segmentdata 
mkdir -p /home/gpadmin/segmentmirror

在这里插入图片描述

4.2、配置.bashrc环境变量

修改 .bashrc环境变量,执行

vim ~、.bashrc

在这里插入图片描述
在最后添加如下内容 :

source /usr/local/greenplum-db/greenplum_path.sh 
export MASTER_DATA_DIRECTORY=/home/gpadmin/masterdata/gpseg-1 
export PGPORT=5432 
export PGUSER=gpadmin 
export PGDATABASE=gpadmin 

在这里插入图片描述
PS:greenplum_path的路径也是根据你的gp安装路径来的,如果和我不一样,自己改吧,若果路径不对,gp命令将无法执行,会提示没有这个命令

然后执行如下命令,使配置生效:

source .bashrc

在这里插入图片描述

4.3、配置.bashrc_profile 环境变量

执行如下命令:

vim ~/.bash_profile

在最后添加如下内容

export MASTER_DATA_DIRECTORY=/home/gpadmin/masterdata/gpseg-1 
export PGPORT=5432 
export PGUSER=gpadmin 
export PGDATABASE=gpadmin 

在这里插入图片描述
然后执行如下命令,使配置生效:

source .bash_profile

5、打通服务器之间的连接

创建包含所有主机的文件all_hosts:

vim /home/gpadmin/all_hosts

在这里插入图片描述
加入下面两行:

mdw
sdw

在这里插入图片描述

创建包含segment主机名的文件

vim /home/gpadmin/seg_hosts

加入下面一行:

sdw

在这里插入图片描述

6、初始化数据库

6.1、编辑Greenplum初始化配置文件

编辑初始化配置文件,直接编辑一个新文件,不要复制官方模板里的再改了,除非你想知道这些东西都是什么意思。官方模板所在位置:(/usr/local/greenplum-db/docs/cli_help/gpconfigs 目录下的gpinitsystem_config为模板文件)

vim /home/gpadmin/gpinitsystem_config

在这里插入图片描述
添加如下内容:

#数据库代号
ARRAY_NAME="EMC Greenplum DW"

#segment前缀
SEG_PREFIX=gpseg

#primary segment起始的端口号
PORT_BASE=33000

#指定primary segment的数据目录,网上写的是多个相同目录,多个目录表示一台机器有多个segment
declare -a DATA_DIRECTORY=(/home/gpadmin/segmentdata)

#master所在机器的host name
MASTER_HOSTNAME=mdw

#master的数据目录
MASTER_DIRECTORY=/home/gpadmin/masterdata

#master的端口
MASTER_PORT=5432

#包含segment主机名的文件
MACHINE_LIST_FILE=/home/gpadmin/seg_hosts

#指定bash的版本
TRUSTED_SHELL=ssh

#将日志写入磁盘的间隔,每个段文件通常 =16MB < 2 * CHECK_POINT_SEGMENTS + 1
CHECK_POINT_SEGMENTS=8

#字符集
ENCODING=UNICODE

#mirror segment起始的端口
MIRROR_PORT_BASE=43000

#指定第一个primary segment用于数据复制的端口号,其他primary segment以此为基础,每次加1,计算复制用的端口号。它的设置也不要与primary segment冲突。取值范围1到65535。
REPLICATION_PORT_BASE=34000

#指定第一个mirror segment用于数据复制的端口号,其他mirror segment以此为基础,每次加1,计算复制用的端口号。它的设置也不要与mirror  segment冲突。取值范围1到65535。
MIRROR_REPLICATION_PORT_BASE=44000

#mirror的数据目录,和主数据一样,一个对一个,多个对多个
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/segmentmirror)

在这里插入图片描述

PS:注意这里面的几个路径,如果你有多个segment,declare就多加几个路径,我这里只设了一个segment节点,所以只有一个路径

SSH 连接本机,无密码登录

如果安装的话,请执行如下命令:

sudo yum install openssh-server

若安装过了,会提示已经安装过。

安装后,可以使用如下命令登录本机:

ssh localhost

此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 ,这样就登陆到本机了。

但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。
首先退出刚才的 ssh,执行exit,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。

切换到/home/gpadmin目录下:

执行如下命令,使用gpssh-exkeys 打通所有服务器(Master),这样在每台机器之间跳转,就不需要输入密码:

gpssh-exkeys -f  ./all_hosts

在这里插入图片描述

6.2、初始化数据库:

gpinitsystem -c /home/gpadmin/gpinitsystem_config

在这里插入图片描述

7、数据库库的简单操作

7.1 进入shell

psql  postgres

在这里插入图片描述

7.2 创建一个角色

create role mumucgq with login password 'mumucgq';

在这里插入图片描述

7.3 修改角色密码

alter role gpadmin with password 'mumu';

在这里插入图片描述

7.4 创建一个新的数据库

create database orclDB

在这里插入图片描述

7.5 查看所有的数据库

执行如下语句,查看所有数据库:

select datname,datdba,encoding,datacl from pg_database;

在这里插入图片描述
或者 执行如下命令:

\l

可以看到:

7.6 切换到指定的数据库

执行如下命令:

\c 数据库名

注意:数据库名中大写字母,会变为小写。切换数据库的时候,注意都用小写。

比如:
切换到刚才创建的数据库 orclDB。

执行:

在这里插入图片描述

7.7 创建表

create table test01(a int , b text) distributed by (a);

在这里插入图片描述

7.8 插入数据

insert into test01 values(1,'hello');
insert into test01 values(2,'world');
insert into test01 values(3,'greenplum');
insert into test01 values(3,'cgq')

在这里插入图片描述

7.9 查询表记录

select * from test01;

在这里插入图片描述

7.10 查看数据分布

select gp_segment_id, count(*) from test01 group by 1;

在这里插入图片描述

7.11 退出

\q

在这里插入图片描述

7.12 使用刚才新创建的角色登录数据库

在上面的操作中 我新建了一个 名为 mumucgq 的角色,并赋予的登录的权限,现在我们用它来进行登录。

首先简单介绍下psql 命令的两种格式 (psql是PostgresSQL自带的psql命令行工具)。

psql postgres://username:password@host:port/dbname
psql -U username -h hostname -p port -d dbname

先解释第一个命令格式里各个参数:

  • username:连接数据的用户名,默认值是postgres

  • password:密码,默认值是postgres

  • host:主机名,默认值是localhost

  • port:端口,默认值是5432

  • dbname:要连接的数据库名,默认值是postgres

第二个命令的各个参数:

  • -U username 用户名,默认值postgres

  • -h hostname 主机名,默认值localhost

  • -p port 端口号,默认值5432

  • -d dbname 要连接的数据库名,默认值postgres

介绍完之后,好的让我们来登录吧

执行如下命令:

 psql -U mumucgq

在这里插入图片描述
呀!可以看到连接直接失败了,这是为什么呢?从出错信息里我们看到,原因是认证失败。

原因:因为greenplum是基于PostgreSQL的,PostgreSQL安装及初始化完成以后,在它的配置文件里,默认只允许本机连接,而且连接到服务器的认证方式是trust 和 ident。如下图所示:
在这里插入图片描述
这个配置是在/home/gpadmin/masterdata/gpseg-1 目录下的pg_hba.conf文件里设置的,
在这里插入图片描述
这个文件里的命令格式解释如下:

  • TYPE:指的是连接类型,一般有local和host两种,local指的是本地连接,host指的是从远程主机连接或本地主机的localhost地址连接

  • DATABASE:指的是要连接的数据库,all表示所有,还可以使用具体的数据库名,比如postgres

  • USER:指的是用来连接的用户名,all表示所有用户,还可以使用具体的用户名,比如postgres

  • ADDRESS:指的是连接数据库的客户端IP地址来源,127.0.0.1/32表示只允许来自己本机的连接,0.0.0.0/0表示允许来自所有ip的连接,192.168.1.0/24表示允许192.168.1.1-192.168.1.255这个地址段的ip地址连接

  • METHOD:表示连接的时候使用的认证方式,常用的有trust,表示信任所有连接。md5,表示需要连接的客户端提供一个加密密码来登录。password是以明文密码传送给数据库。

现在让我们来修改pg_hba.conf文件:
添加:

local    all         mumucgq         password

在这里插入图片描述
保存后退出!

执行如下命令:

gpstop -u

停止数据库,此选项将重新加载Master和Segment的pg_hba.conf文件以及postgresql.conf文件的运行时参数,但不会关闭数据库阵列。编辑postgresql.conf或pg_hba.conf之后,使用此选项可使新的配置设置处于活动状态。

在这里插入图片描述
OK这样就成功了!

8 常用命令

8.1 正常启动

gpstart
在这里插入图片描述

需要输入 y 启动
在这里插入图片描述

之后再执行 psql postgres

在这里插入图片描述

8.2 正常关闭

gpstop

在这里插入图片描述
需要输入 y ,确定关闭
在这里插入图片描述

关闭之后再 执行,psql postgres
在这里插入图片描述

4.3 快速关闭

gpstop -M fast
在这里插入图片描述

需要输入 y ,确定关闭
在这里插入图片描述

8.4 重启

gpstop -r

在这里插入图片描述

9、结语

参考文章:
https://blog.csdn.net/a2226701325/article/details/107243561/
https://www.jianshu.com/p/513935550350

如果感觉有帮助的话,请给我点个赞哦,有问题的地方欢迎指出。

  • 16
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
以下是在单台服务器上使用Docker安装Greenplum数据库的详细步骤: 1. 安装Docker 首先需要在服务器上安装Docker。可以参考官方文档进行安装。 2. 下载Greenplum镜像 执行以下命令下载Greenplum数据库的Docker镜像: ``` docker pull pivotaldata/gpdb ``` 3. 创建Greenplum容器 执行以下命令创建一个名为“gpdb”的Greenplum容器: ``` docker run --name gpdb -p 5432:5432 -v /data/gpdata:/gpdata -d pivotaldata/gpdb ``` 其中: - `--name gpdb`:指定容器名称为“gpdb”。 - `-p 5432:5432`:将容器内部的5432端口映射到宿主机的5432端口,方便外部访问。 - `-v /data/gpdata:/gpdata`:将宿主机上的`/data/gpdata`目录挂载到容器内部的`/gpdata`目录,用于存储Greenplum数据库的数据文件。 - `-d pivotaldata/gpdb`:指定使用pivotaldata/gpdb镜像来创建容器,并在后台运行。 4. 进入Greenplum容器 执行以下命令进入名为“gpdb”的容器: ``` docker exec -it gpdb bash ``` 5. 初始化Greenplum数据库 进入容器后,执行以下命令初始化Greenplum数据库: ``` source /usr/local/greenplum-db/greenplum_path.sh initdb ``` 6. 启动Greenplum数据库 执行以下命令启动Greenplum数据库: ``` gpstart ``` 7. 创建Greenplum数据库 执行以下命令创建一个名为“testdb”的Greenplum数据库: ``` createdb testdb ``` 至此,Greenplum数据库单机安装就完成了。可以使用以下命令查看数据库状态: ``` gpstate ``` 可以使用以下命令退出容器: ``` exit ``` 可以使用以下命令停止并删除容器: ``` docker stop gpdb docker rm gpdb ``` 可以使用以下命令删除Greenplum镜像: ``` docker rmi pivotaldata/gpdb ``` 注意事项: - 在使用Greenplum数据库之前,需要先熟悉Greenplum数据库的基本概念和操作方法。 - 在使用Docker时,需要注意Docker的安全性和隔离性,避免容器中的数据受到攻击或泄露。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值