1、创建需要扩展segment的主机文件
[gpadmin@pgmaster ~]$ cat /usr/local/greenplum-db/new_hosts
pgsegment1
pgsegment2
2、每台机子上面装好rsync(好像greenplum是会调用rsync,我因为没装出错过,所以还是装上)
yum -y install rsync
3、创建一个扩容库(为了存储扩容数据,以及扩容失败回滚到最初状态)
postgres=# create database test;
4、产生配置文件
[gpadmin@test1 ~]$ gpexpand -f /usr/local/greenplum-db/new_hosts -D test
Would you like to initiate a new System Expansion Yy|Nn (default=N):
> y
spread|grouped (default=grouped):
>
How many new primary segments per host do you want to add? (default=0):
> 1
Enter new primary data directory 1:
> /data/primary
Enter new mirror data directory 1:
> /data/mirror
5、查看生成的配置文件信息(如果目录已变动可以手动更改)
[gpadmin@pgmaster ~]$ ls
gpAdminLogs gpexpand_inputfile_20190412_153734
[gpadmin@gpmaster ~]$ cat gpexpand_inputfile_20190412_153734
segment1:segment1:40001:/data1/gpdata/primary1/gpseg2:6:2:p:41001
segment2:segment2:50001:/data1/gpdata/mirror1/gpseg2:9:2:m:51001
segment2:segment2:40001:/data1/gpdata/primary1/gpseg3:7:3:p:41001
segment1:segment1:50001:/data1/gpdata/mirror1/gpseg3:8:3:m:51001
6、根据文件信息在每台segments主机上创建目录
mkdir -p /data1/gpdata/primary1/gpseg2
mkdir -p /data1/gpdata/mirror1/gpseg2
mkdir -p /data1/gpdata/primary1/gpseg3
mkdir -p /data1/gpdata/mirror1/gpseg3
chown -R gpadmin.gpadmin /data1
chown -R gpadmin.gpadmin /data1
7、接着就是执行扩展命令扩展计算节点了,指定刚才创建的扩容库。
[gpadmin@pgmaster ~]$ gpexpand -i gpexpand_inputfile_20190410_110839 -D test
*****如果失败了:
gpstart -R #开启数据库或者 gpstart -m
gpexpend -r -D test #按照错误提示输入这个命令进行回滚
然后再次执行
8、进入数据库可查询到扩展好了的节点
psql -d test
test=# select * from gp_segment_configuration;
9、用gpexpand重新分布表
gpexpand -d 60:00:00 -D test
这脚本会重新分布表,直到方案中最后一个表分布完成,或者指定的持续时间到达就结束。
10、查看扩展状态
SELECT * FROM gpexpand.expansion_progress;
name | value
------------------------------+-------
Estimated Expansion Rate |
Estimated Time to Completion |
(2 rows)
这样说明已经分布完成了,如果value有执行时间跟速度显示则是还在分布。
11、指定扩容库移除扩展方案
gpexpand -c -D test