目錄
如果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;' |