GitLab:因“大腦分裂問(wèn)題” 5臺(tái)PostgreSQL 3臺(tái)徹底趴下
數(shù)據(jù)庫(kù)復(fù)制故障讓五臺(tái) PostgreSQL 服務(wù)器中的三臺(tái)徹底趴下。
在一起典型的故障事件中,GitLab昨天無(wú)意中觸發(fā)了數(shù)據(jù)庫(kù)故障切換,因此降低了性能。
由此引發(fā)的“大腦分裂問(wèn)題”讓這家代碼收集網(wǎng)站試圖靠單單一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器postgres-02來(lái)服務(wù)廣大用戶(hù),同時(shí)竭力恢復(fù)另外三臺(tái)數(shù)據(jù)庫(kù)服務(wù)器。
這個(gè)問(wèn)題最初出現(xiàn)在美國(guó)時(shí)間周四凌晨1:30左右,因此而來(lái)的重構(gòu)工作仍在繼續(xù)之中。
GitLab.com的推文內(nèi)容如下:
由于數(shù)據(jù)庫(kù)負(fù)載,我們目前正在調(diào)查GitLab.com上的性能下降和錯(cuò)誤。
意外的故障切換被觸發(fā)后,亞歷克斯•漢塞爾卡(Alex Hanselka)寫(xiě)道,雖然服務(wù)器群“繼續(xù)追隨真正的主服務(wù)器”,但這起事件顯然令人痛苦:
“由于postgres-01是出岔子的主服務(wù)器,我們關(guān)閉了它。我們?cè)谡{(diào)查時(shí)發(fā)現(xiàn),postgres-03和postgres-04都試圖追隨postgres-01。正因?yàn)槿绱?,我在?xiě)這個(gè)問(wèn)題單(issue)時(shí),我們正在postgres-03上重構(gòu)復(fù)制內(nèi)容,完成后又在postgres-04上重構(gòu)復(fù)制內(nèi)容。”
我們?cè)诶^續(xù)調(diào)查GitLab上的性能下降問(wèn)題。想了解詳情,請(qǐng)參閱:https://docs.google.com/document
影響性能的還有備份(由于故障切換之前沒(méi)有完整的pg_basebackup,所以需要備份);由于Sidekiq集群導(dǎo)致龐大的查詢(xún),GitLab只好關(guān)閉了該集群。
問(wèn)題剛出來(lái)時(shí)就是這個(gè)情況:近20個(gè)小時(shí)后,故障工單還沒(méi)有完結(jié)。
一開(kāi)始,postgres-03的備份以每小時(shí)75GB的速度執(zhí)行,直到23:00(晚上11點(diǎn))后才完成。仍有其他數(shù)據(jù)庫(kù)任務(wù)需要完成,但是從安德魯•紐迪蓋特(Andrew Newdigate)的帖子來(lái)看,性能開(kāi)始恢復(fù)正常。
自21:30 UTC以來(lái),持續(xù)集成/持續(xù)交付(CI/CD)隊(duì)列恢復(fù)常態(tài)?,F(xiàn)在管道以平常的速度來(lái)加以處理。
這里還附有時(shí)間表:https://docs.google.com/document
至少備份奏效了:2017年2月,備份故障讓數(shù)據(jù)復(fù)制錯(cuò)誤雪上加霜:“所以換句話說(shuō),在部署的5種備份/復(fù)制方法中,沒(méi)有一個(gè)可靠地運(yùn)行或一開(kāi)始就設(shè)置好。”
在一臺(tái)登臺(tái)服務(wù)器(staging server)上發(fā)現(xiàn)了丟失的數(shù)據(jù);作了深刻的反復(fù)之后,營(yíng)銷(xiāo)副總裁蒂姆•安格拉德(Tim Anglade)告訴IT外媒The Register,他深知GitLab的重要性,這是“對(duì)許多人的項(xiàng)目和公司來(lái)說(shuō)很重要的網(wǎng)站。”
不得不說(shuō),切實(shí)有效的備份至少表明已汲取了一些經(jīng)驗(yàn)教訓(xùn)。