Greenplum · 工作原理 · Master standby故障轉(zhuǎn)移流程

一.背景

Greenplum的架構(gòu)中協(xié)調(diào)節(jié)點(diǎn)的高可用性是通過主從方式實(shí)現(xiàn)。Greenplum支持master自動(dòng)故障轉(zhuǎn)移,以及當(dāng)故障沒有自動(dòng)轉(zhuǎn)移的場(chǎng)景,需要人工介入進(jìn)行故障處理和恢復(fù)。

二.故障轉(zhuǎn)移流程

1. 單點(diǎn)故障

Master自動(dòng)故障轉(zhuǎn)移可以處理單點(diǎn)故障,當(dāng)master, standby , master probe segment其中一個(gè)發(fā)生故障對(duì)應(yīng)的場(chǎng)景說明如下。

1.1. Master故障 , standby和master probe正常

當(dāng)不支持自動(dòng)故障轉(zhuǎn)移,集群不可用,需要人工 gpactivatestandby?

當(dāng)支持自動(dòng)故障轉(zhuǎn)移,master probe 將自動(dòng)激活standby.

當(dāng)stanby成為新的master,需要完成如下步驟:?

(1) 通過gpinitstandby, 啟動(dòng)原來的master作為standby 。

(2) 原來的master和當(dāng)前的master,角色倒換。(目前沒有合適的命令,只能通過如下,多次命令操作,如master:host1,standyby:host2)

i) host2上操作,pg_ctl stop -D /data01/gpadmin/gpdata/master/gpseg-1/ ? ?//停服務(wù)

ii)重命名目錄:

cd /data01/gpadmin/gpdata/master

mv gpseg-1 gpseg-1_bak

cd /data01/gpadmin/gpdata/master

mv gpseg-1 gpseg-1_bak

iii)現(xiàn)在的standby host1

gpactivatestandby -d /data01/gpadmin/gpdata/master/gpseg-1 ? //激活standby

gpinitstandby ?-s host2? ?//添加standby

1.2. Standby故障 , master和master probe 正常

當(dāng)不支持自動(dòng)故障轉(zhuǎn)移synchronous_standby_names為空 ,集群正常運(yùn)行。

當(dāng)不支持自動(dòng)故障轉(zhuǎn)移synchronous_standby_names 是 *, 集群正常運(yùn)行,寫事務(wù)阻塞,直到手工unblocked。

當(dāng)支持自動(dòng)故障轉(zhuǎn)移master probe保存standby out-of-sync信息到segment catalog 并unblock 寫。

當(dāng)人工修復(fù)故障,重新啟動(dòng)standby.?

1.3. master probe segment故障, master和standby正常

master probe支持自動(dòng)故障轉(zhuǎn)移,需要結(jié)合具體情況,一般GP自動(dòng)指派一個(gè)新的活動(dòng)segment作為 master probe 。

2. 2個(gè)角色故障

發(fā)生2個(gè)角色故障,需要做如下操作恢復(fù)集群。

2.1. Master和standby同時(shí)故障

如果發(fā)生故障master可以啟動(dòng),通過gpstart 恢復(fù)集群;如果只有standby能夠啟動(dòng),可以通過 gpactivatestandby 把standby變成master。

如果gpactivatestandby把standby變成mater失敗,可以通過gpactivatestandby -f 把standby強(qiáng)制變成mater,但會(huì)存在數(shù)據(jù)一致性的風(fēng)險(xiǎn)。

2.2. Master和master probe同時(shí)故障

如果master probe segment能夠正常啟動(dòng),按照流程2.1 嘗試首先把standby變成master。,如果不行,需要通過gpactivatestandby -f?把standby強(qiáng)制變成mater,但會(huì)存在數(shù)據(jù)一致性的風(fēng)險(xiǎn)。

2.3. Standby和master probe同時(shí)故障

(1) 需要以維護(hù)方式(utility mode)連接master probe segment ,并標(biāo)記不一致 或在standby數(shù)據(jù)目錄中創(chuàng)建promote.deny文件 ,阻止gpactivatestandby運(yùn)行,導(dǎo)致數(shù)據(jù)不一致,知道第2步操作完成。

(2) 可以通過gpconfig設(shè)置master synchronous_standby_names為空,然后master繼續(xù)服務(wù)集群。?

三.參考資料

https://github.com/greenplum-db/gpdb/wiki/Master-standby-failover-workflow

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容