greenplum的segment可以分为2类:
- 各个数据节点上的seg
- 数据节点内的seg
单机上的seg增加,我们称之为“纵向扩展”,单机不变,通过增加机器,我们称之为“横向扩展”。
扩展seg大致可分为2步:初始化seg;表重分布。
其中横向扩展需要增加host机器数,并配置互联互通。
横向扩展
1、生成扩展配置文件
#创建扩展目录
mkdir /home/gpdata/gp5
...
mkdir /home/gpdata/gp10
#切换用户
su gpadmin
vim hosts_expand #需要扩展的机器
gpexpand -f hosts_expand
- 选择备份策略
- 输入seg数量
- 输入seg目录(目录需要提前手工创建)
2、运行扩展脚本
gpexpand -i gpexpand_inputfile_??? #上步生成的配置文件
此步遇到个gp本身的bug,最后通过升级5.0到5.8得以解决。
https://github.com/greenplum-db/gpdb/issues/4298
3、重分布表
gpexpand -d 时长or结束时间
gpexpand -d 60:00:00 >gpexpand.log & #后台运行
# 可通过命令查看分布进度
select * from pg_stat_activity;
查看类似alter table only 表名 with (reoganization=true) distributed by (分布键)
4、检查分布情况
select gp_segment_id,count(*) from 表名 group by 1
网友评论