Greenplum集群搭建
关闭SELINUX
1 | vi /etc/selinux/config |
系统设置
设置hostname
1
2
3
4
5vi /etc/hosts
添加各个主机的hostname如:
192.168.171.75 master
192.168.171.76 node1
192.168.171.77 node2设置系统参数至sysctl.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28vi /etc/sysctl.conf
在文件中添加以下代码
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 500 2048000 200 40960
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 10000 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
vm.swappiness = 10
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 0
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296在/etc/security/limits.conf中修改以下参数
1
2
3
4
5
6vi /etc/security/limits.conf
修改以下参数
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072同步集群时间
1
2
3
4
5
6
7
8
9
10
11在所有主机上安装ntp
yum install -y ntp
添加如下内容
server 127.127.1.0
fudge 127.127.1.0 stratum 10
保存退出,然后启动ntp 服务并设为开机启动:
systemctl start ntpd
systemctl enable ntpd
在集群其他节点安装ntp 服务,并将ntp 服务server 指向主节点
echo "server <ip> iburst" > /etc/ntp.conf
<ip> 替换为主节点ip 地址免密登录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20用root用户登录
所有主机编辑文件 /etc/ssh/sshd_config
将以下两行前面的#号去掉,保存
RSAAuthentication yes
PubkeyAuthentication yes
在所有主机上执行以下命令
ssh-keygen -t rsa
按四下回车得到public key
在所有主机上执行以下命令,将所有主机的public key 拷贝到主节点上
ssh-copy-id root@<hostname>
<hostname>更换为主节点主机的主机名
在主节点机器上通过scp 命令将文件 /root/.ssh/authorized_keys 发送到所有其他
节点主机的 /root/.ssh/ 目录下:
scp /root/.ssh/authorized_keys root@<hostname>:/root/.ssh/
重启所有主机的sshd 服务
systemctl restart sshd.service
systemctl enable sshd.service
验证免密码登陆 :
ssh <hostname>
<hostname> 更换为主机名。在主节点安准Greenplum
1
2
3
4
5
6rpm -Uvh ./greenplum-db-<version>-<platform>.rpm
数据库软件安装在/usr/local/greenplum-db-<version>目录下
修改目录权限为gpadmin所有
chown -R gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*在集群中安装Greenplum
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20su -
切换至root用户
touch hostfile_exkeys
创建一个hostfile_exkeys文件将所有主机hostname放入其中(主机包含所有
master, standby master,segments)如
mdw
mdw-1
mdw-2
smdw
smdw-1
smdw-2
sdw1
sdw1-1
sdw1-2
sdw2
sdw2-1
sdw2-2
sdw3
sdw3-1
sdw3-21
2
3
4
5创建groupadd账号和groupadd组
groupadd gpadmin
useradd gpadmin -g gpadmin
passwd gpadmin1
2
3
4
5
6
7安装Greenplum rpm包
rpm -Uvh ./greenplum-db-<version>-<platform>.rpm
数据库默认安装在/usr/local/greenplum-db-<version>目录下
更改安装目录权限为gpadmin用户所有
chown -R gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28将安装分发给集群其它主机
执行创建一个空文件
touch hostfile_exkeys
将集群所有hostname写入文件,如:
mdw
mdw-1
mdw-2
smdw
smdw-1
smdw-2
sdw1
sdw1-1
sdw1-2
sdw2
sdw2-1
sdw2-2
sdw3
sdw3-1
sdw3-2
执行以下命令在集群中安装数据库
gpseginstall -f hostfile_exkeys
确认集权是否安装成功
su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh
gpssh -f hostfile_exkeys -e ls -l $GPHOME
如果可以看到集群信息则安装成功创建数据目录
1
2
3
4
5
6
7
8在主节点中创建目录,目录地址根据实际情况更改
mkdir -p /data/master
改变目录所有者
chown gpadmin /data/master
如果有副主节点,执行以下命令在副主节点中创建相同目录,smdw为副主节点hostname
source /usr/local/greenplum-db/greenplum_path.sh
gpssh -h smdw -e 'mkdir -p /data/master'
gpssh -h smdw -e 'chown gpadmin /data/master'
创建段节点(数据节点)目录
1 | 创建空文件 |
用gpssh命令在段节点(数据节点)创建目录和更改其权限
1 | source /usr/local/greenplum-db/greenplum_path.sh |
配置数据库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36切换至gpadmin
su - gpadmin
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
备份配置文件到新目录下
修改备份文件gpinitsystem_config,
修改以下参数
DATA_DIRECTORY(将创建主段数据目录的文件系统位置,有几个DATA_DIRECTORY, 每个节点上便会启动几个segments
#### 指定Primary Segment的数据目录, DATA_DIRECTORY参数指定每个Segment主机配置多少个Instance。如果
#### 在host文件中为每个Segment主机列出了多个网口,这些Instance将平均分布到所有列出的网口上。
#### 这里的案例,hosts里有2个segment,sdw1,sdw2俩主机,都是单网卡
段的数量划分要根据服务器的cpu,网卡,磁盘因数划分最好达到share nothing的效果,每个
段都有独自的处理器,磁盘或者网卡
)
MASTER_HOSTNAME(主节点hostname)
MASTER_DIRECTORY(将创建主数据目录的文件系统位置)
MIRROR_DATA_DIRECTORY(建立节点的镜像mirror节点的地址,镜像的数量必须和DATA_DIRECTORY的数量一致)
详细参数说明查阅
https://gpdb.docs.pivotal.io/5190/utility_guide/admin_utilities/gpinitsystem.html
----------------------------------------------------------------
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/data/primary)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432
TRUSTED SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
...
MIRROR_PORT_BASE=7000
REPLICATION_PORT_BASE=8000
MIRROR_REPLICATION_PORT_BASE=9000
declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror)
-----------------------------------------------------------------
运行初始化脚本
1 | 创建文件里面所有段节点(数据节点)hostname |
在主节点和备份主节点设置环境变量
1
2
3
4
5
6
7
8su - gpadmin
vi ~/.bashrc
添加以下内容,MASTER_DATA_DIRECTORY为实际master目录路径
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
(注意)如果是RHEL 7 or CentOS 7系统,需要在.bashrc文件的末尾添加如下内容:
export LD_PRELOAD=/lib64/libz.so.1 ps
至此安装完成设置账号
1
2
3
4
5
6
7
8
9登录master节点运行psql
修改管理员密码
alter role gpadmin with password 'hzt_2019';
输入\q退出客户端
设置账号访问权限,路径根据实际路径填写
vi /data/master/gpseg-1
添加以下代码,设置gpadmin可远程登录
host all gpadmin 0.0.0.0/0 trust