【DWS 運維變更】【標準變更方案】【純軟】gs_replace修復實例
1.????適用場景

DN狀態異常(down)
CN處于deleted或down狀態
2.????前提條件
1)?GaussDB A集群安裝成功,且處于已啟動狀態。
2)?DN環的主、備實例不能同時損壞,DN環的主、從備實例不能同時損壞,DN環的備、從備實例不能同時損壞,即一個DN環中只能損壞一個實例。
3)?GaussDB A集群內如下實例至少存在一個正常運行的:
?CMServer
?CMAgent
?GTM
?Coordinator
4)?如果某個GTM實例存在故障,則要求實例修復前另外一個GTM實例必須為最高可用模式。
3.????注意事項
1)?操作要在正常節點執行,不能在被修復節點執行
2)?在前一次修復結束后才能再次執行修復。
2)?修復前不能鎖定GaussDB A集群。
3)?修復故障實例過程中系統將關閉“自動剔除故障CN”功能,完成后系統再次打開該功能。因此建議在開始修復前確認故障的CN已經被自動剔除(即故障的CN狀態為Deleted),否則在修復過程中用戶執行DDL會報錯。
4)?實例修復前用戶手動在故障實例上配置的guc參數、pg_hba.conf配置的白名單會丟失,需要提前備份。
5) gs_replace不涉及cn的,可以在線執行;gs_replace涉及cn的,8.0版本之前,必須離線執行;gs_replace涉及cn的,8.0版本之后,只要保證被修復的cn沒有DDL業務即可
4.????對系統影響
由于過程中會短暫鎖集群,鎖集群后用戶下發的包含顯式啟動事務的DDL語句會出現等待,集群解鎖后會報錯或等待時間超過20分鐘會報錯。如包含創建臨時表操作,在集群解鎖后會報錯(Don't support temp table when need reconnect pooler)。
5.????準備工作
5.1檢查集群狀態
步驟1?以omm用戶登錄GaussDB A集群的第一個正常的cn節點
步驟2?執行以下命令,啟用環境變量
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
步驟3?執行以下命令,查看GaussDB A集群當前狀態
cm_ctl query -Cv
查看具體故障實例所在節點:實例不是“Normal”狀態,且持續5分鐘沒有自恢復
[?? Cluster State?? ]
cluster_state?? : Degraded
redistributing? : No
balanced? ??????: Yes
[? Datanode State?? ]
node???????? instance state??????????? | node???????? instance state??????????? | node???????? instance state
--------------------------------------------------------------------------------------------------------------------------
1??redhat1-1?6001? P?Down Disk damaged?| 2? redhat1-2 6002???? S Standby Normal | 3? redhat1-3 3002???? R Secondary Normal
1? redhat1-1 6003???? P Primary Normal | 3? redhat1-3 6004???? S Standby Normal | 2? redhat1-2 3003???? R Secondary Normal
2? redhat1-2 6005???? P Primary Normal | 3? redhat1-3 6006???? S Standby Normal | 1? redhat1-1 3004???? R Secondary Normal
2? redhat1-2 6007???? P Primary Normal | 1? redhat1-1 6008???? S Standby Normal | 3? redhat1-3 3005???? R Secondary Normal
3? redhat1-3 6009???? P Primary Normal | 1? redhat1-1 6010???? S Standby Normal | 2? redhat1-2 3006???? R Secondary Normal
3? redhat1-3 6011???? P Primary Normal | 2? redhat1-2 6012???? S Standby Normal | 1? redhat1-1 3007???? R Secondary Normal
步驟4以上查詢結果為例,故障實例所在節點名稱為redhat1-1
5.2關閉集群通信白名單(需要離線時做)
注意:若被修復節點上沒有cn,在沒有IO壓力的情況下可以在線操作。如果被修復節點有cn,則必須離線操作!
步驟?1??現場實施人員知會并確認用戶已完成數據庫業務停止操作。
步驟?2??以omm用戶登錄第一個正常的CN節點,執行如下命令注釋用戶白名單
以默認CN實例目錄/srv/BigData/mppdb/data1/coordinator為示例,現場需根據實際情況進行調整。
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_ssh -c "hostname && if [ -f?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then cp -f?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment; fi "
gs_ssh -c "hostname && if [ -f?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then sed -i '/^[^#].*sha256.*/s/\(.*\)/#@#@#/g'?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf; fi "
gs_ssh -c "hostname && if [ -f?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then sed -i '/^[^#].*md5.*/s/\(.*\)/#@#@#/g'?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf; fi "
步驟?3??以omm用戶登錄第一個正常的CN節點,關閉MPPDB實例節點下的后臺訪問連接和應用連接。具體操作如下:
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_ssh -c "ps ux |grep -w gsql |grep -v grep |awk '{print $2}' |xargs -r kill -9"
gs_ssh -c "ps ux |grep -w ap_agent |grep -v grep |awk '{print $2}' |xargs -r kill -9"
步驟?4??以omm用戶登錄每一個正常CN節點,執行如下命令重啟CN。
執行以下命令,獲取到CN的進程Pid
ps -ef | grep /srv/BigData/mppdb/data1/coordinator | grep -v grep
執行以下命令,殺死CN進程
kill -9?Pid
執行以下命令,觀察CN被重新拉起,并且Pid與之前獲取的Pid不同
ps -ef | grep /srv/BigData/mppdb/data1/coordinator | grep -v grep
6.????變更步驟
6.1清理殘留文件
步驟1?以omm用戶登錄被修復的節點
步驟2?執行以下命令,啟用環境變量
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
步驟3?使用如下命令在需要修復實例的主機上清理可能存在的殘留文件。此命令僅在上次修復故障實例執行失敗的情況下需要執行。
if [ -f $PGHOST/GaussReplace.dat ];then rm $PGHOST/GaussReplace.dat;fi
說明
該文件為替換故障實例、替換主機中產生的用于記錄執行步驟的臨時文件,如果在上次執行過程中出現宕機或網卡中斷等,可能會導致該文件殘留。在替換故障實例前檢查該文件是否存在,且生成時間非本次替換故障實例的時間,則可判斷為上次執行的殘留文件,刪除該文件后,繼續執行替換故障實例。
6.2修改原cn目錄名稱(被修復節點有cn時做)
步驟1?以omm用戶登錄需要被修復的節點
步驟2?執行以下命令,啟用環境變量
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
步驟3?使用如下命令修改原cn目錄名稱,防止修失敗回退后誤拉起損壞的cn。
mv /srv/BigData/mppdb/data1/coordinator /srv/BigData/mppdb/data1/coordinator_bak
6.3配置實例
步驟1?以omm用戶登錄GaussDB A集群的健康節點
步驟2?執行以下命令,啟用環境變量
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
步驟3?執行以下命令,完成故障實例所在節點配置操作
gs_replace -t config -h?redhat1-1
說明
配置操作會清理替換實例的空間,初始化替換實例,配置替換實例。
如果收到提示:“GAUSS_50201: The XXX does not exist.”,則請檢查對應的實例數據目錄是否存在。如果不存在,請重新創建目錄后再次執行上述命令。
如果指定主機的表空間所在磁盤出現故障,從而導致表空間中的數據損壞,更換新磁盤后,需要指定“--force”參數對該主機強制進行表空間數據的恢復。如果在config階段指定“--force”參數,則在start階段也必須指定“--force”參數。
6.4還原cn的白名單(被修復節點有cn時做)
如果有配置lvs,每個cn的白名單相同,可跳過此小節。
步驟1?以omm用戶登錄需要被修復的節點
步驟2?執行以下命令,啟用環境變量
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
步驟3?使用如下命令將備份的白名單還原,操作前確認備份的白名單文件沒有損壞。
cp /srv/BigData/mppdb/data1/coordinator_bak/pg_hba.conf /srv/BigData/mppdb/data1/coordinator/
6.5恢復集群通信白名單(需要離線時做)
步驟1???以omm用戶登錄第一個正常的CN節點,執行如下命令注釋用戶白名單
以默認CN實例目錄/srv/BigData/mppdb/data1/coordinator為示例,現場需根據實際情況進行調整。
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_ssh -c "hostname && if [ -f?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment?]; then? sed -i '/^#@#@#.*/s/#@#@#\(.*\)/\1/g'?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf?&& rm -f?/srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment; fi "
6.6啟動實例
步驟1?以omm用戶登錄GaussDB A集群的健康節點
步驟2?執行以下命令,啟用環境變量
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
步驟3?執行以下命令,完成故障實例所在節點啟動操作
gs_replace -t start -h?redhat1-1
啟動操作會啟動集群替換實例的主機
gs_replace -t start -h redhat1-1
Starting.
======================================================================
Successfully started instance process. Waiting to become Normal.
======================================================================
.
======================================================================
Start succeeded on all nodes.
Start succeeded.
6.7重置實例
參考主備均衡方案實施。
https://bbs.huaweicloud.com/forum/thread-145786-1-1.html
6.8更新lvs(被修復節點有cn時做)
步驟1?以root用戶身份登錄服務器,執行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令啟動環境變量。
步驟2?執行gs_loadbalance更新負載均衡配置。
gs_loadbalance -t reload -U omm -X? ${BIGDATA_HOME}/FusionInsight_MPPDB_*/*_*_MPPDBServer/etc/mppdb-install-config.xml?? --lvs-addr=10.146.156.101
路徑中紅色斜體替換為實際版本路徑
參數說明
-U:運行集群的操作系統用戶名。必選。
-X:集群配置文件。必選。
--lvs-addr:后續供客戶端連接的LVS IP地址。必選。
7.????驗證步驟
7.1確認結果
1)后臺集群狀態驗證
步驟1?以omm用戶登錄GaussDB A集群的第一個正常的cn節點
步驟2?執行以下命令,啟用環境變量
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
步驟3?執行以下命令,查看GaussDB A集群當前狀態
cm_ctl query
如下則為正常
[?? Cluster State?? ]
cluster_state? :? Normal
redistributing : No
balanced?????? : Yes
2)客戶業務驗證
驗證方案需包括DDL和DML語句
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。