当Greenplum segment的segement primary出现问题时,Greenplum集群FTS模块会监测并自动激活segement mirror。
但是对于Greenplum 的master节点,虽然有standby,但是Greenplum 并不会自动来完成master和standby master的角色自动切换,需要通过gpactivatestandby命令来完成这个过程。
假设定义如下:

| Greenplum节点角色 | 主机名 | 备注 | | —- | —- | —- |

| master节点 | mdw | Greenplum Master Node |

| standby节点 | smdw | Greenplum Standby Master Node |

1.Standby激活成为master

当Greenplum的master异常挂掉后,首先登录smdw 主机节点,可通过如下命令检查并激活Standby节点:

  • (1)切换到gpadmin账号下 ```

    su - gpadmin

  1. - 2)检查~/.bashrc是否配置
  2. 检查~/.bashrc是否配置MASTER_DATA_DIRECTORY等环境变量,如果没有,请使用如下命令进行环境配置并使用source命令使环境变量生效:

$ cat >> ~/.bashrc <<EOF source /usr/local/greenplum-db/greenplum_path.sh export MASTER_DATA_DIRECTORY=/usr/local/gpdb/data/master/gpseg-1/ export PGPORT=5432 export PGUSER=gpadmin export PGDATABASE=postgres EOF

$ source ~/.bashrc

  1. - 3)激活standby成为master角色

$ echo “host all all 0.0.0.0/0 password” >> $MASTER_DATA_DIRECTORY/pg_hba.conf $ gpactivatestandby -a -f $ gpstop -u

  1. 至此,standby节点即提升为master角色,可对外提供数据库访问服务了。<br />**注意:激活standby前,请确保masterstandby保持数据同步的一致。**
  2. ## 2.Master恢复原角色
  3. mdw主机故障恢复后,可将其再次恢复为master角色。<br />
  4. 首先将mdw主机上的$MASTER_DATA_DIRECTORY目录重命名为其他名称。<br />
  5. 然后执行如下操作:
  6. - 1)将mdw配置为standby角色
  7. 登录到smdw主机,并用su - gpadmin命令切换到gpadmin账号下执行如下命令:

$ gpinitstandby -s mdw -a $ gpstop -m -a

  1. - 2)激活mdwmaster角色
  2. 登录mdw主机,并用su - gpadmin命令切换到gpadmin账号下然后执行如下命令:

$ gpactivatestandby -a

  1. 至此,mdw节点即已经恢复为master角色,可对外提供数据库访问服务了。
  2. - 3)调整smdw为原来的standby角色
  3. 删除smdw主机上的$MASTER_DATA_DIRECTORY目录(或重命名为其他名称),然后在mdw主机的gpadmin账号下然后执行如下命令:

$ gpinitstandby -s smdw -a

  1. - 4)在mdw上检查standby状态
  2. mdw主机的gpadmin账号下然后执行如下命令检查standby的状态是否正常:

$ gpstate -f

```