- 原Greenplum集群状态
- 1 服务器配置
服务器名称 | IP | 角色 |
---|---|---|
mdw | 10.10.10.170 | master + data |
sdw1 | 10.10.10.171 | data |
sdw2 | 10.10.10.172 | data |
smdw | 10.10.10.173 | standby master+data |
1.2 目标配置: 添加两台服务器,做为Data segment。新服务器为:
服务器名称 | IP | 角色 |
---|---|---|
ext1 | 10.10.10.174 | data |
ext2 | 10.10.10.175 | data |
注:应至少添加两台服务器,否则无法使用grouped方式扩展。
1.3 原数据库配置:
原集群的一个master节点,一个standby master节点和2个数据节点,每一个数据节点上有4个primary计算节点,4个mirror节点。具体信息如下:
nngp=# select * from gp_segment_configuration order by dbid;
dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir
------+---------+------+----------------+------+--------+------+----------+---------+-----------------------
1 | -1 | p | p | n | u | 5432 | mdw | mdw | /data/master/gpseg-1
2 | 0 | p | p | s | u | 6000 | mdw | mdw | /data/primary/gpseg0
3 | 1 | p | p | s | u | 6001 | mdw | mdw | /data/primary/gpseg1
4 | 2 | p | p | s | u | 6000 | sdw1 | sdw1 | /data/primary/gpseg2
5 | 3 | p | p | s | u | 6001 | sdw1 | sdw1 | /data/primary/gpseg3
6 | 4 | p | p | s | u | 6000 | sdw2 | sdw2 | /data/primary/gpseg4
7 | 5 | p | p | s | u | 6001 | sdw2 | sdw2 | /data/primary/gpseg5
8 | 6 | p | p | s | u | 6000 | smdw | smdw | /data/primary/gpseg6
9 | 7 | p | p | s | u | 6001 | smdw | smdw | /data/primary/gpseg7
10 | 0 | m | m | s | u | 7000 | sdw1 | sdw1 | /data/mirror/gpseg0
11 | 1 | m | m | s | u | 7001 | sdw1 | sdw1 | /data/mirror/gpseg1
12 | 2 | m | m | s | u | 7000 | sdw2 | sdw2 | /data/mirror/gpseg2
13 | 3 | m | m | s | u | 7001 | sdw2 | sdw2 | /data/mirror/gpseg3
14 | 4 | m | m | s | u | 7000 | smdw | smdw | /data/mirror/gpseg4
15 | 5 | m | m | s | u | 7001 | smdw | smdw | /data/mirror/gpseg5
16 | 6 | m | m | s | u | 7000 | mdw | mdw | /data/mirror/gpseg6
17 | 7 | m | m | s | u | 7001 | mdw | mdw | /data/mirror/gpseg7
18 | -1 | m | m | s | u | 5432 | smdw | smdw | /data/master/gpseg-1
19 | 8 | p | p | s | u | 6002 | mdw | mdw | /data/primary/gpseg8
20 | 9 | p | p | s | u | 6003 | mdw | mdw | /data/primary/gpseg9
21 | 10 | p | p | s | u | 6002 | sdw1 | sdw1 | /data/primary/gpseg10
22 | 11 | p | p | s | u | 6003 | sdw1 | sdw1 | /data/primary/gpseg11
23 | 12 | p | p | s | u | 6002 | sdw2 | sdw2 | /data/primary/gpseg12
24 | 13 | p | p | s | u | 6003 | sdw2 | sdw2 | /data/primary/gpseg13
25 | 14 | p | p | s | u | 6002 | smdw | smdw | /data/primary/gpseg14
26 | 15 | p | p | s | u | 6003 | smdw | smdw | /data/primary/gpseg15
27 | 14 | m | m | s | u | 7002 | mdw | mdw | /data/mirror/gpseg14
28 | 15 | m | m | s | u | 7003 | mdw | mdw | /data/mirror/gpseg15
29 | 8 | m | m | s | u | 7002 | sdw1 | sdw1 | /data/mirror/gpseg8
30 | 9 | m | m | s | u | 7003 | sdw1 | sdw1 | /data/mirror/gpseg9
31 | 10 | m | m | s | u | 7002 | sdw2 | sdw2 | /data/mirror/gpseg10
32 | 11 | m | m | s | u | 7003 | sdw2 | sdw2 | /data/mirror/gpseg11
33 | 12 | m | m | s | u | 7002 | smdw | smdw | /data/mirror/gpseg12
34 | 13 | m | m | s | u | 7003 | smdw | smdw | /data/mirror/gpseg13
(34 rows)
- 配置并安装 2.1 所有主机,配置hosts
[root@mdw data]#more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.10.170 mdw
10.10.10.171 sdw1
10.10.10.172 sdw2
10.10.10.173 smdw
10.10.10.174 ext1
10.10.10.175 ext2
2.2 配置ext1, ext2系统参数(略) 2.3 为ext1,ext2建gpadmin用户并授权(略) 2.4 在ext1,ext2上安装greenplum-db软件(略) 2.5 打通免密登录(略) 2.6 修改all_host,供扩容使用
mdw
sdw1
sdw2
smdw
ext1
ext2
2.7 创建扩容参数
[gpadmin@mdw ~]$ gpexpand -f all_host
…………
Would you like to initiate a new System Expansion Yy|Nn (default=N):
>y
…………
What type of mirroring strategy would you like?
spread|grouped (default=grouped):
>
…………
How many new primary segments per host do you want to add? (default=0):
>
Generating configuration file...
20220601:15:53:23:003157 gpexpand:mdw:gpadmin-[INFO]:-Generating input file...
Input configuration file was written to 'gpexpand_inputfile_20220601_155323'.
Please review the file and make sure that it is correct then re-run
with: gpexpand -i gpexpand_inputfile_20220601_155323
20220601:15:53 23:003157 gpexpand:mdw:gpadmin-[INFO]:-Exiting...
2.8 使用参数扩容:
[gpadmin@mdw ~]$ gpexpand -i gpexpand_inputfile_20220601_155323
20220601 15:53:35 003205 gpexpand:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 6.20.4 build commit:cab494fbdd8bcb0cc7fe3fb7255cb1e343a541cd'
20220601:15:53:35:003205 gpexpand:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 9.4.26 (Greenplum Database 6.20.4 build commit:cab494fbdd8bcb0cc7fe3fb7255cb1e343a541cd) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on May 18 2022 21:57:12'
…………
20220601:15:54:07:003205 gpexpand:mdw:gpadmin-[INFO]:-Starting new mirror segment synchronization
20220601:15:54:17:003205 gpexpand:mdw:gpadmin-[INFO]:-************************************************
20220601:15:54:17:003205 gpexpand:mdw:gpadmin-[INFO]:-Initialization of the system expansion complete.
20220601:15:54:17:003205 gpexpand:mdw:gpadmin-[INFO]:-To begin table expansion onto the new segments
20220601:15:54:17:003205 gpexpand:mdw:gpadmin-[INFO]:-rerun gpexpand
20220601:15:54:17:003205 gpexpand:mdw:gpadmin-[INFO]:-************************************************
20220601:15:54:17:003205 gpexpand:mdw:gpadmin-[INFO]:-Exiting...
2.9 完成后检查
nngp=# select * from gp_segment_configuration order by dbid;
dbid | content | role | preferred_role | mode | status | port | hostname | address | datadir
------+---------+------+----------------+------+--------+------+----------+---------+-----------------------
1 | -1 | p | p | n | u | 5432 | mdw | mdw | /data/master/gpseg-1
2 | 0 | p | p | s | u | 6000 | mdw | mdw | /data/primary/gpseg0
3 | 1 | p | p | s | u | 6001 | mdw | mdw | /data/primary/gpseg1
4 | 2 | p | p | s | u | 6000 | sdw1 | sdw1 | /data/primary/gpseg2
5 | 3 | p | p | s | u | 6001 | sdw1 | sdw1 | /data/primary/gpseg3
6 | 4 | p | p | s | u | 6000 | sdw2 | sdw2 | /data/primary/gpseg4
7 | 5 | p | p | s | u | 6001 | sdw2 | sdw2 | /data/primary/gpseg5
8 | 6 | p | p | s | u | 6000 | smdw | smdw | /data/primary/gpseg6
9 | 7 | p | p | s | u | 6001 | smdw | smdw | /data/primary/gpseg7
10 | 0 | m | m | s | u | 7000 | sdw1 | sdw1 | /data/mirror/gpseg0
11 | 1 | m | m | s | u | 7001 | sdw1 | sdw1 | /data/mirror/gpseg1
12 | 2 | m | m | s | u | 7000 | sdw2 | sdw2 | /data/mirror/gpseg2
13 | 3 | m | m | s | u | 7001 | sdw2 | sdw2 | /data/mirror/gpseg3
14 | 4 | m | m | s | u | 7000 | smdw | smdw | /data/mirror/gpseg4
15 | 5 | m | m | s | u | 7001 | smdw | smdw | /data/mirror/gpseg5
16 | 6 | m | m | s | u | 7000 | mdw | mdw | /data/mirror/gpseg6
17 | 7 | m | m | s | u | 7001 | mdw | mdw | /data/mirror/gpseg7
18 | -1 | m | m | s | u | 5432 | smdw | smdw | /data/master/gpseg-1
19 | 8 | p | p | s | u | 6002 | mdw | mdw | /data/primary/gpseg8
20 | 9 | p | p | s | u | 6003 | mdw | mdw | /data/primary/gpseg9
21 | 10 | p | p | s | u | 6002 | sdw1 | sdw1 | /data/primary/gpseg10
22 | 11 | p | p | s | u | 6003 | sdw1 | sdw1 | /data/primary/gpseg11
23 | 12 | p | p | s | u | 6002 | sdw2 | sdw2 | /data/primary/gpseg12
24 | 13 | p | p | s | u | 6003 | sdw2 | sdw2 | /data/primary/gpseg13
25 | 14 | p | p | s | u | 6002 | smdw | smdw | /data/primary/gpseg14
26 | 15 | p | p | s | u | 6003 | smdw | smdw | /data/primary/gpseg15
27 | 14 | m | m | s | u | 7002 | mdw | mdw | /data/mirror/gpseg14
28 | 15 | m | m | s | u | 7003 | mdw | mdw | /data/mirror/gpseg15
29 | 8 | m | m | s | u | 7002 | sdw1 | sdw1 | /data/mirror/gpseg8
30 | 9 | m | m | s | u | 7003 | sdw1 | sdw1 | /data/mirror/gpseg9
31 | 10 | m | m | s | u | 7002 | sdw2 | sdw2 | /data/mirror/gpseg10
32 | 11 | m | m | s | u | 7003 | sdw2 | sdw2 | /data/mirror/gpseg11
33 | 12 | m | m | s | u | 7002 | smdw | smdw | /data/mirror/gpseg12
34 | 13 | m | m | s | u | 7003 | smdw | smdw | /data/mirror/gpseg13
35 | 16 | p | p | s | u | 6000 | ext1 | ext1 | /data/primary/gpseg16
36 | 17 | p | p | s | u | 6001 | ext1 | ext1 | /data/primary/gpseg17
37 | 18 | p | p | s | u | 6002 | ext1 | ext1 | /data/primary/gpseg18
38 | 19 | p | p | s | u | 6003 | ext1 | ext1 | /data/primary/gpseg19
39 | 20 | p | p | s | u | 6000 | ext2 | ext2 | /data/primary/gpseg20
40 | 21 | p | p | s | u | 6001 | ext2 | ext2 | /data/primary/gpseg21
41 | 22 | p | p | s | u | 6002 | ext2 | ext2 | /data/primary/gpseg22
42 | 23 | p | p | s | u | 6003 | ext2 | ext2 | /data/primary/gpseg23
43 | 20 | m | m | s | u | 7000 | ext1 | ext1 | /data/mirror/gpseg20
44 | 21 | m | m | s | u | 7001 | ext1 | ext1 | /data/mirror/gpseg21
45 | 22 | m | m | s | u | 7002 | ext1 | ext1 | /data/mirror/gpseg22
46 | 23 | m | m | s | u | 7003 | ext1 | ext1 | /data/mirror/gpseg23
47 | 16 | m | m | s | u | 7000 | ext2 | ext2 | /data/mirror/gpseg16
48 | 17 | m | m | s | u | 7001 | ext2 | ext2 | /data/mirror/gpseg17
49 | 18 | m | m | s | u | 7002 | ext2 | ext2 | /data/mirror/gpseg18
50 | 19 | m | m | s | u | 7003 | ext2 | ext2 | /data/mirror/gpseg19
(50 rows)
2.10 数据重分布
[gpadmin@mdw ~]$ gpexpand -a -d 1:00:00
20220601:15:54:57:003927 gpexpand:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 6.20.4 build commit:cab494fbdd8bcb0cc7fe3fb7255cb1e343a541cd'
20220601:15:54:57:003927 gpexpand:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 9.4.26 (Greenplum Database 6.20.4 build commit:cab494fbdd8bcb0cc7fe3fb7255cb1e343a541cd) on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 6.4.0, 64-bit compiled on May 18 2022 21:57:12'
20220601:15:54:57:003927 gpexpand:mdw:gpadmin-[INFO]:-Querying gpexpand schema for current expansion state
20220601:15:54:58:003927 gpexpand:mdw:gpadmin-[INFO]:-Expanding nngp.public.t_tmp
20220601:15:55:30:003927 gpexpand:mdw:gpadmin-[INFO]:-Analyzing public.t_tmp
20220601:15:55:30:003927 gpexpand:mdw:gpadmin-[INFO]:-Finished expanding nngp.public.t_tmp
20220601:15:55:30:003927 gpexpand:mdw:gpadmin-[INFO]:-Expanding nngp.public.t
20220601:15:55:44:003927 gpexpand:mdw:gpadmin-[INFO]:-Analyzing public.t
20220601:15:55:44:003927 gpexpand:mdw:gpadmin-[INFO]:-Finished expanding nngp.public.t
20220601:15:55:48:003927 gpexpand:mdw:gpadmin-[INFO]:-EXPANSION COMPLETED SUCCESSFULLY
20220601:15:55:48:003927 gpexpand:mdw:gpadmin-[INFO]:-Exiting...
注:gpexpand -a -d 1:00:00命令中,此次使用的是1小时。生产环境中可能需要更长时间。这一点无需担忧,再执行几次即可。系统在执行时会在数据库中做记录,一次没完成,下次可根据记录再继续。