Greenplum数据库中master节点恢复
目录
如果primary master节点失败,日志复制进程就会停止。可以使用gpstate -f命令查看standby master的状态,使用gpactivatestandby命令激活standby master。
注意:下面的执行步骤不需要全部都执行。一种情况是:在成功激活standby master之后,可以为集群重新初始化一个standby master。如果原来的master节点能够正常运行了,想恢复原来集群中各个角色的配置,即原来的primary master节点仍然运行primary master,原来的standby master几点仍然运行standby master,在这种情况下,可以按顺序执行下面的全部步骤。另一种情况是:如果不需要恢复到原来集群中的角色分配,则只需要执行第一大步骤即可。
1.激活Standby master
(1)确保原来的集群中配置了standby master。
(2)在standby master主机上运行gpactivatestandby命令。
| $ gpactivatestandby -d /data/master/gpseg-1 |
-d参数是指standby master的数据目录,一旦激活成功,原来的standby master就成为了primary master。
(3)执行激活命令后,运行gpstate命令检查状态
| $ gpstate -f |
新激活的master的状态是active,如果已经为集群配置一个新的standby master节点,则其状态会是passive。如果还没有为集群配置一个新的standby master,则会看到下面的信息:No entries found,该信息表明尚未配置standby master。
(4)在成功切换到了standbymaster之后,运行ANALYZE命令,收集该数据库的统计信息
| $ psql postgres -c 'ANALYZE;' |
(5)如果在成功激活standby master之后,尚未指定新的standby master,可以在active master上运行gpinitstandby命令,配置一个新的standby master。
| $ gpinitstandby -s new_standby_master_hostname |
2.恢复到原来的设置(option)
(1)确保之前的master节点能够正常使用
(2)在原来的master主机上,移除(备份)原来的数据目录gpseg-1,比如:
| $ mv /data/master/gpseg-1 /data/master/backup_gpseg-1 |
(3)在原来的master节点上,初始化standby master,在active master上运行如下命令
| $ gpinitstandby -s mdw |
(4)初始化完成之后,检查standby master的状态
| $ gpstate -f |
显示的状态应该是--Sync state: sync
(5)在active master节点上运行下面的命令,用于停止master
| $ gpstop -m |
(6)在原来的master节点(mdw)上运行gpactivatestandby命令
| $ gpactivatestandby -d /data/master/gpseg-1 |
(7)在上述命名运行结束之后,再运行gpstate命令查看状态
| $ gpstate -f |
确认原始的primary master状态是active。
(8)在原来的standby master节点(smdw)上,移除(备份)数据目录gpseg-1
| $ mv /data/master/gpseg-1 /data/master/backup_gpseg-1 |
(9)原来的master节点正常运行之后,在该节点上执行如下命令,用于激活standby master
| $ gpinitstandby -s smdw |
3.检查standby master的状态(option)
可以通过查看视图pg_stat_replication,来获取更多的信息。该视图可以列出walsender进程的信息,下面的命令是查看walsender进程的进程id和状态信息。
| $ psql postgres -c 'SELECT procpid, state FROM pg_stat_replication;' |

浙公网安备 33010602011771号