当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节点:
- (2)检查~/.bashrc是否配置检查~/.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
- (3)激活standby成为master角色
$ echo “host all all 0.0.0.0/0 password” >> $MASTER_DATA_DIRECTORY/pg_hba.conf $ gpactivatestandby -a -f $ gpstop -u
至此,standby节点即提升为master角色,可对外提供数据库访问服务了。<br />**注意:激活standby前,请确保master与standby保持数据同步的一致。**## 2.Master恢复原角色当mdw主机故障恢复后,可将其再次恢复为master角色。<br />首先将mdw主机上的$MASTER_DATA_DIRECTORY目录重命名为其他名称。<br />然后执行如下操作:- (1)将mdw配置为standby角色登录到smdw主机,并用su - gpadmin命令切换到gpadmin账号下执行如下命令:
$ gpinitstandby -s mdw -a $ gpstop -m -a
- (2)激活mdw为master角色登录mdw主机,并用su - gpadmin命令切换到gpadmin账号下然后执行如下命令:
$ gpactivatestandby -a
至此,mdw节点即已经恢复为master角色,可对外提供数据库访问服务了。- (3)调整smdw为原来的standby角色删除smdw主机上的$MASTER_DATA_DIRECTORY目录(或重命名为其他名称),然后在mdw主机的gpadmin账号下然后执行如下命令:
$ gpinitstandby -s smdw -a
- (4)在mdw上检查standby状态在mdw主机的gpadmin账号下然后执行如下命令检查standby的状态是否正常:
$ gpstate -f
```
