1. 程式人生 > >Greenplum -- segment 宕機後恢復

Greenplum -- segment 宕機後恢復

一、備份原理:

GPDB4.x中:是基於檔案複製同步,如果個別segment宕機,整個資料庫依然可以執行,當Mirror宕機時,Primary會記錄在這個階段檔案變化的資料塊,等到Mirror恢復了,再把資料塊複製過去;當Primary宕機了,那麼對於的Mirror節點就會替換Primary,記錄檔案變化的資料塊,等到Primary恢復了,它就變成了Mirror,丟失的資料就會被複制過來,這裡雖然可以繼續執行,但是存在一個問題,那就是Primary和Mirror調換了,導致個別機器Primary比其他機器多,負載不均衡,最好還是把它從新恢復過正常對應關係來
Greenplum -- segment 宕機後恢復

二、恢復:

2.1、使用sql查詢segment狀態:

testdb=# select * from gp_segment_configuration;
存在部分segment down機的時候,在關閉的GPDB的時候,我們可以看到
Greenplum -- segment 宕機後恢復
再次啟動時也一樣,GPDB會忽略掉down機的segment,同時開啟mirror備用
Greenplum -- segment 宕機後恢復

2.1、使用配置檔案生成恢復檔案

Greenplum -- segment 宕機後恢復
可以看到生成的配置檔案裡包含了需要恢復的segment節點
Greenplum -- segment 宕機後恢復

2.2、使用配置檔案開始恢復機器

Greenplum -- segment 宕機後恢復

2.3、開啟另外一個視窗,檢視恢復狀態:gpstate -m

Resynchronizing:正在恢復中,必須等待所有的都Synchronized才行
Greenplum -- segment 宕機後恢復

2.4、存在:Acting as Primary,說明有將mirror當primary使用了,必須等待所有恢復完畢之後,才能調換過來,調換過程會重啟GPDB

執行命令:gprecoverseg -r
Greenplum -- segment 宕機後恢復

2.5、全部交換之後,檢視備用mirror的狀態 gpstate -m

Greenplum -- segment 宕機後恢復

2.6、sql查詢各節點資訊,都為up狀態

Greenplum -- segment 宕機後恢復