环境信息:
Red Hat Enterprise Linux Server release 7.5 (Maipo)
Greenplum Database 5.16.0
[gpadmin@rhmdw gpadata]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.15.201 rhmdw
192.168.15.202 rhsdw1
192.168.15.203 rhsdw2
192.168.15.205 rhsdw03
192.168.15.206 rhsdw04
移动gpmirror节点需要提前规划好新的mirror端口和路径。
规划的路径需要调整权限。
移动配置文件如下:
[gpadmin@rhmdw ~]$ more mirror_onfig
filespaceOrder=
rhsdw03:7000:/gp/gpdata/mirror/gpseg2 rhsdw04:7000:7001:/gp/gpdata/mirrors/gpseg2
rhsdw04:7000:/gp/gpdata/mirror/gpseg3 rhsdw03:7000:7001:/gp/gpdata/mirrors/gpseg3
mirror状态:
[gpadmin@rhmdw ~]$ gpstate -m
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:-Starting gpstate with args: -m
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 5.16.0 build commit:23cec7df0406d69d6552a4bbb77035dba4d7dd44'
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.3.23 (Greenplum Database 5.16.0 build commit:23cec7df0406d69d6552a4bbb77035dba4d7dd44) on x86_64-pc-linux-gnu, compiled by GCC gcc (GCC) 6.2.0, 64-bit compiled on Jan 16 2019 02:32:15'
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:--------------------------------------------------------------
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:--Current GPDB mirror list and status
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:--Type = Spread
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:--------------------------------------------------------------
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:- Mirror Datadir Port Status Data Status
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:- rhsdw2 /gp/gpdata/mirror/gpseg0 7000 Passive Synchronized
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:- rhsdw1 /gp/gpdata/mirror/gpseg1 7000 Passive Synchronized
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:- rhsdw03 /gp/gpdata/mirror/gpseg2 7000 Passive Synchronized
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:- rhsdw04 /gp/gpdata/mirror/gpseg3 7000 Passive Synchronized
20190418:17:25:40:019708 gpstate:rhmdw:gpadmin-[INFO]:--------------------------------------------------------------
开始移动:
[gpadmin@rhmdw ~]$ gpmovemirrors -i mirror_onfig
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:-Invocation of gpmovemirrors mirrors
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:-Option values for this invocation of gpmovemirrors are:
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:-
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:- --input = mirror_onfig
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:- --master-data-directory = /gp/gpdata/master/gpseg-1
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:- --batch-size = 16
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:- --verbose = False
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:-
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-Connecting to dbname='template1'
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-mirror_onfig:1
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-mirror_onfig:2
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldAddress delimiter=':' value=rhsdw03
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldPort delimiter=':' value=7000
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldDataDirectory delimiter=' ' value=/gp/gpdata/mirror/gpseg2
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newAddress delimiter=':' value=rhsdw04
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newPort delimiter=':' value=7000
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newReplicationPort delimiter=':' value=7001
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newDataDirectory delimiter=':' value=/gp/gpdata/mirrors/gpseg2
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-mirror_onfig:3
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldAddress delimiter=':' value=rhsdw04
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldPort delimiter=':' value=7000
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldDataDirectory delimiter=' ' value=/gp/gpdata/mirror/gpseg3
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newAddress delimiter=':' value=rhsdw03
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newPort delimiter=':' value=7000
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newReplicationPort delimiter=':' value=7001
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newDataDirectory delimiter=':' value=/gp/gpdata/mirrors/gpseg3
20190418:17:26:32:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:-About to run gprecoverseg with options: -i mirror_onfig -v -a -d /gp/gpdata/master/gpseg-1
20190418:17:27:38:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:-About to remove old mirror segment directory: /gp/gpdata/mirror/gpseg2
20190418:17:27:38:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-Adding cmd to work_queue: if [ -d /gp/gpdata/mirror/gpseg2 ]; then mkdir -p /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223 && /bin/rsync -a --delete /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223/ /gp/gpdata/mirror/gpseg2/ && rmdir /gp/gpdata/mirror/gpseg2 /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223 ; fi
20190418:17:27:38:020081 gpmovemirrors:rhmdw:gpadmin-[INFO]:-About to remove old mirror segment directory: /gp/gpdata/mirror/gpseg3
20190418:17:27:38:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-Adding cmd to work_queue: if [ -d /gp/gpdata/mirror/gpseg3 ]; then mkdir -p /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d && /bin/rsync -a --delete /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d/ /gp/gpdata/mirror/gpseg3/ && rmdir /gp/gpdata/mirror/gpseg3 /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d ; fi
20190418:17:27:38:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-[worker0] got cmd: if [ -d /gp/gpdata/mirror/gpseg2 ]; then mkdir -p /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223 && /bin/rsync -a --delete /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223/ /gp/gpdata/mirror/gpseg2/ && rmdir /gp/gpdata/mirror/gpseg2 /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223 ; fi
20190418:17:27:38:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-[worker1] got cmd: if [ -d /gp/gpdata/mirror/gpseg3 ]; then mkdir -p /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d && /bin/rsync -a --delete /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d/ /gp/gpdata/mirror/gpseg3/ && rmdir /gp/gpdata/mirror/gpseg3 /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d ; fi
20190418:17:27:38:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-[worker1] finished cmd: remove old mirror segment directories cmdStr='ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 rhsdw04 ". /gp/greenplum-db/./greenplum_path.sh; if [ -d /gp/gpdata/mirror/gpseg3 ]; then mkdir -p /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d && /bin/rsync -a --delete /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d/ /gp/gpdata/mirror/gpseg3/ && rmdir /gp/gpdata/mirror/gpseg3 /tmp/emptyForRemovef0832b5c-29fd-4280-a475-2f6e92e6694d ; fi"' had result: cmd had rc=0 completed=True halted=False
stdout=''
stderr=''
20190418:17:27:39:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-[worker0] finished cmd: remove old mirror segment directories cmdStr='ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 rhsdw03 ". /gp/greenplum-db/./greenplum_path.sh; if [ -d /gp/gpdata/mirror/gpseg2 ]; then mkdir -p /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223 && /bin/rsync -a --delete /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223/ /gp/gpdata/mirror/gpseg2/ && rmdir /gp/gpdata/mirror/gpseg2 /tmp/emptyForRemovec10614c0-4bc9-4e9b-b685-ebc68ae0a223 ; fi"' had result: cmd had rc=0 completed=True halted=False
stdout=''
stderr=''
20190418:17:27:39:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-WorkerPool haltWork()
20190418:17:27:39:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-[worker0] haltWork
20190418:17:27:39:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-[worker1] haltWork
20190418:17:27:39:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-[worker0] got a halt cmd
20190418:17:27:39:020081 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-[worker1] got a halt cmd
查看移动后状态:
[gpadmin@rhmdw ~]$ gpstate -m
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:-Starting gpstate with args: -m
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:-local Greenplum Version: 'postgres (Greenplum Database) 5.16.0 build commit:23cec7df0406d69d6552a4bbb77035dba4d7dd44'
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:-master Greenplum Version: 'PostgreSQL 8.3.23 (Greenplum Database 5.16.0 build commit:23cec7df0406d69d6552a4bbb77035dba4d7dd44) on x86_64-pc-linux-gnu, compiled by GCC gcc (GCC) 6.2.0, 64-bit compiled on Jan 16 2019 02:32:15'
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:-Obtaining Segment details from master...
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:--------------------------------------------------------------
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:--Current GPDB mirror list and status
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:--Type = Spread
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:--------------------------------------------------------------
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:- Mirror Datadir Port Status Data Status
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:- rhsdw2 /gp/gpdata/mirror/gpseg0 7000 Passive Synchronized
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:- rhsdw1 /gp/gpdata/mirror/gpseg1 7000 Passive Synchronized
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:- rhsdw04 /gp/gpdata/mirrors/gpseg2 7000 Passive Resynchronizing
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:- rhsdw03 /gp/gpdata/mirrors/gpseg3 7000 Passive Resynchronizing
20190418:17:27:51:020333 gpstate:rhmdw:gpadmin-[INFO]:--------------------------------------------------------------
如路径不存在会提示以下报错:
[gpadmin@rhmdw ~]$ gpmovemirrors -i mirror_onfig
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[INFO]:-Invocation of gpmovemirrors mirrors
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[INFO]:-Option values for this invocation of gpmovemirrors are:
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[INFO]:-
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[INFO]:- --input = mirror_onfig
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[INFO]:- --master-data-directory = /gp/gpdata/master/gpseg-1
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[INFO]:- --batch-size = 16
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[INFO]:- --verbose = False
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[INFO]:-
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-Connecting to dbname='template1'
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-mirror_onfig:1
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:-mirror_onfig:2
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldAddress delimiter=':' value=rhsdw03
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldPort delimiter=':' value=7000
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=oldDataDirectory delimiter=' ' value=/gp/gpdata/mirror/gpseg2
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newAddress delimiter=':' value=rhsdw04
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newPort delimiter=':' value=7000
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[DEBUG]:- name=newReplicationPort delimiter=':' value=/gp/gpdata/mirrors/gpseg2
20190418:17:14:49:018181 gpmovemirrors:rhmdw:gpadmin-[ERROR]:-gpmovemirrors failed: mirror_onfig:2:parse_gpmovemirrors_line() LINE >>rhsdw03:7000:/gp/gpdata/mirror/gpseg2 rhsdw04:7000:/gp/gpdata/mirrors/gpseg2
out of values (reading newDataDirectory)
Exiting...
参考文档:
https://gp-docs-cn.github.io/docs/best_practices/ha.html