按计划将sdw2的m-seg0迁移到sdw3上去。
--先在数据库全部启动下备份gp_segment_configuration
[gpadmin@mdwmaster]$ pg_dump -t gp_segment_configuration -c -f~/gp_segment_configuration.dat
--只启动matser
[gpadmin@mdwmaster]$ gpstart -m
20150503:19:37:42:043837gpstart:mdw:gpadmin-[INFO]:-Starting gpstart with args: -m
20150503:19:37:43:043837gpstart:mdw:gpadmin-[INFO]:-Gathering information and validating theenvironment...
20150503:19:37:45:043837gpstart:mdw:gpadmin-[INFO]:-Greenplum Binary Version: 'postgres (GreenplumDatabase) 4.3.4.1 build 2'
20150503:19:37:45:043837gpstart:mdw:gpadmin-[INFO]:-Greenplum Catalog Version: '201310150'
20150503:19:37:45:043837gpstart:mdw:gpadmin-[INFO]:-Master-only start requested in configurationwithout a standby master.
Continuewith master-only startup Yy|Nn (default=N):
> y
20150503:19:37:48:043837gpstart:mdw:gpadmin-[INFO]:-Starting Master instance in admin mode
20150503:19:37:51:043837gpstart:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information
20150503:19:37:51:043837gpstart:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20150503:19:37:52:043837gpstart:mdw:gpadmin-[INFO]:-Setting new master era
20150503:19:37:52:043837gpstart:mdw:gpadmin-[INFO]:-Master Started...
--进入utility模式
[gpadmin@mdwmaster]$ PGOPTIONS="-cgp_session_role=utility" psql
psql(8.2.15)
Type"help" for help.
--获得修改systemcatalog的权限
default_login_database_name=#set allow_system_table_mods='dml';
SET
default_login_database_name=#update gp_segment_configuration sethostname='sdw3',address='sdw3',status='d' where(content in(0) and role='m'); #将要迁移的节点标记成d
UPDATE1
default_login_database_name=#update gp_segment_configuration set mode='c' where(content in (0) and role ='p'); #将down掉的primary的模式从同步S改为改变追踪c
UPDATE1
default_login_database_name=# select * from gp_segment_configuration ;
dbid | content | role | preferred_role | mode| status | port | hostname | address |replication_port | san_mou
nts
------+---------+------+----------------+------+--------+-------+----------+---------+------------------+--------
----
1 | -1 | p | p | s | u | 5432 | mdw | mdw | |
3 | 1 | p | p | s | u | 40000 | sdw2 | sdw2 | 41000 |
5 | 1 | m | m | s | u | 50000 | sdw1 | sdw1 | 51000 |
2 | 0 | p | p | c | u | 40000 | sdw1 | sdw1 | 41000 |
4 | 0 | m | m | s | d | 50000 | sdw3 | sdw3 | 51000 |
(5rows)
--在恢复前应先在对应主机上建好数据目录
[gpadmin@sdw3~]$ mkdir /data1/mirror/mirror_fspc
[gpadmin@sdw3~]$ mkdir /data1/mirror/mirror_fspc/gpseg0
--执行全量恢复
[gpadmin@mdw~]$ gprecoverseg -F
20150504:20:32:06:005249gprecoverseg:mdw:gpadmin-[INFO]:-Starting gprecoverseg with args: -F
20150504:20:32:07:005249gprecoverseg:mdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (GreenplumDatabase) 4.3.4.1 build 2'
20150504:20:32:07:005249gprecoverseg:mdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.2.15(Greenplum Database 4.3.4.1 build 2) on x86_64-unknown-linux-gnu, compiled byGCC gcc (GCC) 4.4.2 compiled on Feb 10 2015 14:15:10'
20150504:20:32:07:005249gprecoverseg:mdw:gpadmin-[INFO]:-Checking if segments are ready
20150504:20:32:07:005249gprecoverseg:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20150504:20:32:07:005249gprecoverseg:mdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20150504:20:32:08:005249gprecoverseg:mdw:gpadmin-[INFO]:-Performing persistent table check
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:-Greenplum instance recovery parameters
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:----------------------------------------------------------
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:-Recovery type = Standard
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:----------------------------------------------------------
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:-Recovery 1 of 1
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:----------------------------------------------------------
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Synchronization mode = Full
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance host = sdw3
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance address = sdw3
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance directory = /data1/mirror/gpseg0
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance port = 50000
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance replication port = 51000
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Failed instance fs_test directory = /data1/mirror/mirror_fspc/gpseg0
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance host = sdw1
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance address = sdw1
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance directory = /data1/primary/gpseg0
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance port = 40000
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance replication port = 41000
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Source instance fs_test directory = /data1/primary/primary_fspc/gpseg0
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:- Recovery Target = in-place
20150504:20:32:16:005249gprecoverseg:mdw:gpadmin-[INFO]:----------------------------------------------------------
Continuewith segment recovery procedure Yy|Nn (default=N):
>y
20150504:20:38:32:006421gprecoverseg:mdw:gpadmin-[INFO]:-1 segment(s) to recover
20150504:20:38:32:006421gprecoverseg:mdw:gpadmin-[INFO]:-Ensuring 1 failed segment(s) are stopped
20150504:20:38:33:006421gprecoverseg:mdw:gpadmin-[INFO]:-Ensuring that shared memory is cleaned up forstopped segments
20150504:20:38:38:006421gprecoverseg:mdw:gpadmin-[INFO]:-Cleaning files from 1 segment(s)
.
20150504:20:38:39:006421gprecoverseg:mdw:gpadmin-[INFO]:-Building template directory
20150504:20:38:40:006421gprecoverseg:mdw:gpadmin-[INFO]:-Validating remote directories
.
20150504:20:38:41:006421gprecoverseg:mdw:gpadmin-[INFO]:-Copying template directory file
.
20150504:20:38:42:006421gprecoverseg:mdw:gpadmin-[INFO]:-Configuring new segments
.
20150504:20:38:43:006421gprecoverseg:mdw:gpadmin-[INFO]:-Cleaning files
.
20150504:20:38:44:006421gprecoverseg:mdw:gpadmin-[INFO]:-Starting file move procedure forsdw3:/data1/mirror/gpseg0:content=0:dbid=4:mode=s:status=d
updatingflat files
20150504:20:38:44:006421gprecoverseg:mdw:gpadmin-[INFO]:-Updating configuration with new mirrors
20150504:20:38:44:006421gprecoverseg:mdw:gpadmin-[INFO]:-Updating mirrors
.
20150504:20:38:45:006421gprecoverseg:mdw:gpadmin-[INFO]:-Starting mirrors
20150504:20:38:46:006421gprecoverseg:mdw:gpadmin-[INFO]:-Commencing parallel primary and mirror segmentinstance startup, please wait...
..
20150504:20:38:48:006421gprecoverseg:mdw:gpadmin-[INFO]:-Process results...
20150504:20:38:48:006421gprecoverseg:mdw:gpadmin-[INFO]:-Updating configuration to mark mirrors up
20150504:20:38:48:006421gprecoverseg:mdw:gpadmin-[INFO]:-Updating primaries
20150504:20:38:48:006421gprecoverseg:mdw:gpadmin-[INFO]:-Commencing parallel primary conversion of 1segments, please wait...
.........................
20150504:20:39:14:006421gprecoverseg:mdw:gpadmin-[INFO]:-Process results...
20150504:20:39:14:006421gprecoverseg:mdw:gpadmin-[INFO]:-Done updating primaries
20150504:20:39:14:006421gprecoverseg:mdw:gpadmin-[INFO]:-******************************************************************
20150504:20:39:14:006421gprecoverseg:mdw:gpadmin-[INFO]:-Updating segments for resynchronization iscompleted.
20150504:20:39:14:006421gprecoverseg:mdw:gpadmin-[INFO]:-For segments updated successfully,resynchronization will continue in the background.
20150504:20:39:14:006421gprecoverseg:mdw:gpadmin-[INFO]:-
20150504:20:39:14:006421gprecoverseg:mdw:gpadmin-[INFO]:-Use gpstate -s to check theresynchronization progress.
20150504:20:39:14:006421gprecoverseg:mdw:gpadmin-[INFO]:-******************************************************************
恢复成功!
关闭数据库,并将原sdw2中m-seg0的文件重新另命名,再次启动数据库成功,删除该节点,数据节点迁移成功完毕。