greenplum中的数据节点也是可以删除减少的。
现删除增加的1组主备节点。
[gpadmin@mdw~]$ gp_dump --gp-d=/home/gpadmin/backup testDB --先备份,再进行串行恢复。
Individual Results
segment 2 (dbid 6) Host sdw3 Port 40000Database testDB BackupFile /home/gpadmin/backup/gp_dump_0_6_20150506000259:Succeeded
segment 1 (dbid 3) Host sdw2 Port 40000Database testDB BackupFile /home/gpadmin/backup/gp_dump_0_3_20150506000259:Succeeded
segment 0 (dbid 2) Host sdw1 Port 40000Database testDB BackupFile /home/gpadmin/backup/gp_dump_0_2_20150506000259:Succeeded
Master (dbid 1) Host mdw Port 5432Database testDB BackupFile /home/gpadmin/backup/gp_dump_1_1_20150506000259:Succeeded
Master (dbid 1) Host mdw Port 5432Database testDB BackupFile/home/gpadmin/backup/gp_dump_1_1_20150506000259_post_data: Succeeded
[gpadmin@mdw~]$ gpstart -m --master 模式
[gpadmin@mdw~]$ PGOPTIONS="-c gp_session_role=utility" psql --进入utility
default_login_database_name=#set allow_system_table_mods='dml'; --获得修改权限
default_login_database_name=# select * from gp_segment_configuration ;
dbid |content | role | preferred_role | mode | status | port | hostname | address | replication_port |san_mounts
------+---------+------+----------------+------+--------+-------+----------+---------+------------------+------------
1 | -1 | p | p | s | u | 5432 | mdw | mdw | |
6 | 2 | p | p | c | u | 40000 | sdw3 | sdw3 | 41000 |
7 | 2 | m | m | s | d | 50000 | sdw2 | sdw2 | 51000 |
2 | 0 | p | p | s | u | 40000 | sdw1 | sdw1 | 41000 |
4 | 0 | m | m | s | u | 50000 | sdw3 | sdw3 | 51000 |
3 | 1 | p | p | s | u | 40000 | sdw2 | sdw2 | 41000 |
5 | 1 | m | m | s | u | 50000 | sdw1 | sdw1 | 51000 |
(7 rows)
删掉新加的segment.
default_login_database_name=#delete from gp_segment_configuration where contentin(2);
DELETE2
default_login_database_name=#select * from gp_segment_configuration order by dbid;
dbid | content | role | preferred_role | mode| status | port | hostname | address |replication_port | san_mounts
------+---------+------+----------------+------+--------+-------+----------+---------+------------------+------------
1 | -1 | p | p | s | u | 5432 | mdw | mdw | |
2 | 0 | p | p | s | u | 40000 | sdw1 | sdw1 | 41000 |
3 | 1 | p | p | s | u | 40000 | sdw2 | sdw2 | 41000 |
4 | 0 | m | m | s | u | 50000 | sdw3 | sdw3 | 51000 |
5 | 1 | m | m | s | u | 50000 | sdw1 | sdw1 | 51000 |
(5rows)
default_login_database_name=# \q
[gpadmin@mdw~]$ gpstop -m
[gpadmin@mdw~]$ gpstart -a
启动成功,但是下面的下面还有关于再增加节点时路径出错的问题,且应在删除节点这一步,一同操作。
恢复删除节点上的数据,只需将删除掉的节点上的数据重分布即可,gp_dump_0_6_20150506000259是保存在sdw3上的,先将其传到那mdw上,再执行以下命令。
[gpadmin@mdw~]$ psql testDB -f gp_dump_0_6_20150506000259
另删除原有目录下的文件。
如果再增加节点的话会会提示错误:
20150505:23:21:06:012345gpexpand:mdw:gpadmin-[ERROR]:-gpexpand failed: error 'ERROR: duplicate key violates unique constraint"pg_filespace_entry_fsdb_index"
'in 'SELECT gp_add_segment('sdw3', 'sdw3', 40000,'{{"pg_system","/data1/primary/gpseg2"}}')'
default_login_database_name=# select * frompg_filespace_entry;
fsefsoid | fsedbid | fselocation
----------+---------+------------------------------------
3052 | 1 | /data/master/gpseg-1
3052 | 2 | /data1/primary/gpseg0
3052 | 3 | /data1/primary/gpseg1
3052 | 6 | /data1/primarygpseg2
3052 | 5 | /data1/mirror/gpseg1
3052 | 7 | /data1/mirror/gpseg2
3052 | 4 | /data1/mirror/gpseg0
(7rows)
--可见,原有的路径还在,删掉它们。
default_login_database_name=#delete from pg_filespace_entry where fsedbid in(6,7);
DELETE2
default_login_database_name=# select * from pg_filespace_entry;
fsefsoid | fsedbid | fselocation
----------+---------+-----------------------
3052 | 1 |/data/master/gpseg-1
3052 | 2 |/data1/primary/gpseg0
3052 | 3 |/data1/primary/gpseg1
3052 | 5 |/data1/mirror/gpseg1
3052 | 4 |/data1/mirror/gpseg0
(5 rows)
现在再进行增加节点就OK了。