大數據“復活”記
833
2025-04-01
1.?操作場景
數據節點上由于磁盤或raid故障,導致該raid組上cn、dn實例故障,會上報“ALM-37006 Coordinator進程異?!?或“ALM-37007 Datanode進程異?!钡萂PPDB相關告警。在修復硬件故障后,需修復故障raid上的cn、dn實例,使集群恢復Normal狀態。
2.整體過程描述
3.前提條件
1)?GaussDB A集群安裝成功,且已處于啟動狀態。
2)?DN環的主、備實例不能同時損壞,DN環的主、從備實例不能同時損壞,DN環的備、從備實例不能同時損壞,即一個DN環中只能損壞一個實例。
3)?GaussDB A集群內如下實例至少存在一個正常運行的:
?CMServer
?CMAgent
?GTM
?Coordinator
4)?集群狀態為Degraded狀態。
5)?磁盤或raid等硬件故障已修復(可以使用cd,ls,touch等命令查看磁盤是否已經正常)。
4.注意事項
1)?在前一次修復結束后才能再次執行修復。因此請不要同時在多個集群節點上執行腳本gs_replace
2)?修復前不能鎖定集群。
5.對系統影響
1)?當故障的只是dn實例,實例修復支持在線修復。
2)?當故障的包含cn實例,支持在線修復,但有以下限制場景。
說明:如果集群中含有故障的CN且其狀態不為Deleted,那么在修復過程中用戶執行DDL會報錯,DML可以正常執行,其他場景執行業務不受影響。特別說明:由于修復CN的過程中會短暫鎖集群,鎖集群后用戶下發的包含顯式啟動事務的DDL語句會出現等待,集群解鎖后會報錯或等待時間超過20分鐘會報錯。如包含創建臨時表操作,在集群解鎖后會報錯(Don‘t support temp table when need reconnect pooler)。
修復故障實例過程中系統將關閉“自動剔除故障CN”功能,完成后系統再次打開該功能。因此建議在開始修復前確認故障的CN已經被自動剔除(即故障的CN狀態為Deleted),否則在替換過程中用戶執行DDL會報錯。
6.修復步驟
1)?以omm用戶登錄集群的任意一個CN實例正常的服務器。
2)?執行以下命令,啟用環境變量。
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
3)?執行查詢集群狀態命令,確認具體故障實例所在節點和實例名稱。查看發現集群是“Degraded”狀態,且在一段時間(幾分鐘內)集群狀態穩定維持不變。具體實例狀態顯示為非“Normal”狀態的節點和實例。
查詢命令:cm_ctl query -Cvd
結果如下圖:
以上述查詢結果為例,故障實例所在節點名稱為redhat1-1。
4)?使用如下命令在需要替換實例的主機上清理可能存在的殘留文件:
(if [ -f $PGHOST/GaussReplace.dat ];then rm $PGHOST/GaussReplace.dat;fi)
說明: 該文件為替換故障實例、替換主機中產生的用于記錄執行步驟的臨時文件,如果在上次執行過程中出現宕機或網卡中斷等,可能會導致該文件殘留。在替換故障實例前檢查該文件是否存在,且生成時間非本次替換故障實例的時間,則可判斷為上次執行的殘留文件,刪除該文件后,繼續執行替換故障實例。
5)?使用如下命令完成配置操作。
命令:gs_replace -t config -h redhat1-1
說明:如需修復多節點的實例故障,在-h參數后面依次跟上主機名,主機名中間以逗號隔開,如:gs_replace -t config -h redhat1-1,redhat1-2
配置操作會清理替換實例的空間,初始化替換實例,配置替換實例。
如果收到提示:“GAUSS_50201: The XXX does not exist.",則請檢查對應的實例數據目錄是否存在。如果不存在,請重新創建目錄后再次執行上述命令。
config的運行結果成功后,再進行下一步,如下圖:
6)?使用如下命令在需要替換實例的節點上完成啟動操作。
命令:gs_replace -t start -h redhat1-1
啟動操作會啟動集群替換實例的節點。
注:config時有多節點實例故障,start也要啟動多個節點,且start命令可能會超時,但不影響在后臺的build的運行,如下:
7)?修復過程中,以omm用戶登錄CN節點,執行如下命令查詢集群修復進度和狀態。
source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile
cm_ctl query -Cv
8)?連接CN實例,執行如下命令確認實例主備完全同步(返回結果為0行)。
命令:gsql -d postgres -p port ?-r
gsql登錄到數據庫后執行查看命令:select pgxc_get_senders_catchup_time();
9)?做checkpoint
8.?主備切換
1)?執行如下命令進行實例重置,恢復集群均衡狀態。
cm_ctl switchover -a –t 3600
2)?執行如下命令查詢集群狀態,確認集群狀態已恢復為Normal。
命令:cm_ctl query
更多精彩內容,請關注華為云開發者社區論壇:https://bbs.huaweicloud.com/forum/forum-598-1.html 及微信公眾號“華為云AI”
數據倉庫服務 GaussDB(DWS)
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。