目录
一、前期准备
1、确定服务器
2、修改主节点hosts
3、为所有主机创建gp用户
4、修改系统内核/etc/sysctl.conf文件(所有节点)
5、 修改系统资源限制(所有节点)
6、查看防火墙和selinux,关闭selinux防火墙如果无用也关闭(获取开发指定端口)
二、Greenplum安装
1、安装greenplum(每个节点都需要安装)
方法一(推荐)
方法二
2、配置greenplum环境变量
3、配置免密登录
4、创建数据存储区域
5、校验你的硬件以及网络性能
6、创建Greenplum Database配置文件
7、初始化数据库
8、Greenplum数据库操作
1)集群操作
2)数据库登录退出
我这里一共使用3台服务器,其中一台作为master,另外两台作为segment
IP |
主机名 |
角色 |
10.170.1.1 |
h_xx01 |
master |
10.170.1.2 |
h_xx02 |
segment |
10.170.1.3 |
h_xx03 |
segment |
注:这里的主机名为后续gp数据库之间通信的关键,所以如果你的服务器echo $HOSTNAME为空,那么需要你自己添加,方法网上有很多,这里不赘述了。
注:只需要修改master节点即可
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.170.1.1 h_xx01
10.170.1.2 h_xx02
10.170.1.3 h_xx03
我这里使用的用户名为gpadmin
groupadd gpadmin
useradd gpadmin -r -m -g gpadmin
passwd gpadmin
New password:
Retype new password:
vi /etc/sysctl.conf
kernel.shmall = 197951838 #控制可以使用的共享内存的总页数 kernel.shmmax = 810810728448 #定义单个共享内存段的最大值,建议值为多于物理内存的一半,可取的最大值为物理内存值 -1byte kernel.shmmni = 4096 #默认值4096 vm.overcommit_memory = 2 #说明在最后
kernel.sem = 500 2048000 200 40960
kernel.sysrq = 1 #设置为1表示开启sysrp功能
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_max_syn_backlog = 4096 #所能接受SYN同步包的最大客户端数量
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog = 10000
net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
保存后执行sysctl -p,让以上修改生效
说明:
vm.overcommit_memory可选值:0,1,2。
0,:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否 则,内存申请失败,并把错误返回给应用进程。
1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2: 表示内核允许分配超过所有物理内存和交换空间总和的内存
kernel.shmall参考值:
当内存为 12G 时, kernel.shmall = 3145728
当内存为 16G 时, kernel.shmall = 4194304
当内次为 32G 时, kernel.shmall = 8388608
当内存为 64G 时, kernel.shmall = 16777216
当内存为 128G 时, kernel.shmall = 33554432
kernel.sem 参数说明:
500 信号集容纳最大信号数量
2048000 所有信号的最大数量
200 调用单个信号集中最大信号数量
40960 信号集的最大值
kernel.msgmni:表示系统内最大消息队列个数 kernel.msgmnb:表示单个消息队列的最大容量 kernel.msgmax:表示消息队列中单个消息的最大容量
net.core.netdev_max_backlog 表示当每个网络接口 接受数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目
vi /etc/security/limits.conf
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
gp数据库在安装是需要以下依赖包 apr apr-util openssh openssh-clients openssh-server
因此在安装数据库前使用yum方式安装依赖包
yum -y install apr apr-util openssh openssh-clients openssh-server
再安装数据库
rpm -ivh --prefix=/greenplum/gp open-source-greenplum-db-6.20.4-rhel7-x86_64.rpm
说明:--prefix=/greenplum/gp 为指定的安装路径,可自己修改
这种方式无需考虑依赖包的情况,但是实际安装时会发现装了很多无用的依赖包
sudo yum -y install greenplum-db-6.20.4-rhel7-x86_64.rpm --installroot=/greenplum/gp
说明:--installroot=/greenplum/gp 指定安装路径
注:这一步可以省略,但是在执行gp的相关命令前要source greenplum_path.sh
在这里我配置的方式比较偷懒,使用root用户直接在 /etc/profile文件末添加
vi /etc/profile 在末尾添加
source /greenplum/gp/greenplum-db-6.20.4/greenplum_path.sh
在master服务器上使用gpadmin用户执行
source /greenplum/gp/greenplum-db-6.20.4/greenplum_path.sh
ssh-keygen -t rsa -b 4096
-bash-4.4$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/greenplum/.ssh/id_rsa): 回车
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
直接回车即可,如果输入密码还需要使用密码才可以打开key
使用ssh-copy-id命令添加gpadmin用户的公共密钥到集群中其余子节点的authorized_hosts SSH文件
执行命令
ssh-copy-id 主机名
根据提示输入yes,然后输入gpadmin设置的密码
创建文件,记录所有节点主机名
使用gpadmin创建免密互通主机名文件hostfile_exkeys(文件名自己随便起),该文件中记录所有记得主机名
执行如下命令为gpadmin用户配置免密SSH
source /greenplum/gp/greenplum-db-6.20.4/greenplum_path.sh
gpssh-exkeys -f hostfile_exkeys
当你看到[INFO] completed successfully 表示完成
进行免密操作测试
gpssh -f hostfile_exkeys -e 'pwd'
假如安装成功,您应该可以没有密码打断的登录到所有的子节点,所有子节点都应该展示他们的路径,并且目录是gpadmin用户拥有的权限
为主节点上创建数据存储区域,简单理解为创建一个目录用于存储主节点数据
mkdir /greenplum/gp/data_master
为子节点创建数据存储区域
创建一个文件segfile(文件名自定义),文件中记录所有从节点服务器的主机名
使用gpssh工具在所有从主机上创建主数据和镜像数据目录:
source /greenplum/gp/greenplum-db-6.20.4/greenplum_path.sh
gpssh -f segfile -e 'mkdir -p /greenplum/gp/primary'
gpssh -f segfile -e 'mkdir -p /greenplum/gp/mirror'
gpssh -f segfile -e 'chown -R gpadmin:gpadmin /greenplum/gp/primary'
gpssh -f segfile -e 'chown -R gpadmin:gpadmin /greenplum/gp/mirror'
上面命令中的路径和目录可依据需要自己随便取,但是在gp配置文件中,使用的目录名是primary和mirror
Greenplum提供了一个管理工具叫做gpcheckperf,它可以被用来测试以下性能:
校验网络性能
gpcheckperf -f segfile -r N -d /tmp > subnet1.out
校验磁盘I/O性能和内存带宽
gpcheckperf -f segfile -r ds -D -d /greenplum/gp/primary
gpcheckperf -f segfile -r ds -D -d /greenplum/gp/mirror
这个工具可能会花费好一会来进行测试,因为它将在节点间复制大量的文件,当它结束时,你将会看见磁盘读写的总结果
====================
== RESULT 2022-05-31T16:19:35.393088
====================
disk write avg time (sec): 1080.70
disk write tot bytes: 540826861568
disk write tot bandwidth (MB/s): 477.46
disk write min bandwidth (MB/s): 233.77 [h_xx02]
disk write max bandwidth (MB/s): 243.69 [h_xx03]
-- per host bandwidth --
disk write bandwidth (MB/s): 233.77 [h_xx02]
disk write bandwidth (MB/s): 243.69 [h_xx03]
disk read avg time (sec): 421.41
disk read tot bytes: 540826861568
disk read tot bandwidth (MB/s): 1223.95
disk read min bandwidth (MB/s): 608.91 [h_xx02]
disk read max bandwidth (MB/s): 615.04 [h_xx03]
-- per host bandwidth --
disk read bandwidth (MB/s): 608.91 [h_xx02]
disk read bandwidth (MB/s): 615.04 [h_xx03]
stream tot bandwidth (MB/s): 20407.00
stream min bandwidth (MB/s): 10011.20 [h_xx02]
stream max bandwidth (MB/s): 10395.80 [h_xx03]
-- per host bandwidth --
stream bandwidth (MB/s): 10395.80 [h_xx02]
stream bandwidth (MB/s): 10011.20 [h_xx03]
在$GPHOME/docs/cli_help/gpconfigs/目录下有一个名为gpinitsystem_config的文件,
这个配置文件告诉gpinitsystem 工具你想如何配置greenplum数据库
复制 gpinitsystem_config 文件 For example:
cp gpinitsystem_config 你的路径
设置所有必须的参数以及可选参数
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/data/primary) #可写多个,用空格分隔
MASTER_HOSTNAME=master
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432
MIRROR_PORT_BASE=50000
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror) #可写多个,用空格分隔
DATABASE_NAME=gpdb
使用gpinitsystem命令来进行数据库的初始化
gpinitsystem -c gpinitsystem_config -h segfile
这个工具将会验证你的设置信息,并且确保它能够连接到每一个节点,访问你在配置文件中指定的数据目录。假如所有的预查都成功了,那么工具将会提示你确认你的配置,如下:
=> Continue with Greenplum creation? Yy/Nn
输入y并回车开始初始化
在成功设置的最后,工具将会启动你的greenplum数据库系统,你应该会看见
=> Greenplum Database instance successfully created.
停止和启动集群
gpstop#停止
gpstart –a #启动
gpstop –ra #重启
gpstate -e #查看mirror的状态
gpstate -f #查看standby master的状态
gpstate -s #查看整个GP群集的状态
gpstate -i #查看GP的版本
gpstate --help #帮助文档,可以查看gpstate更多用法
登录数据库
$ psql -d gpdb -p 20001 -U gpadmin
退出数据库
gpdb=# \q