大數(shù)據(jù)“復(fù)活”記
764
2025-03-31
1.1 應(yīng)用側(cè)作業(yè)大量報(bào)錯(cuò)
前提
在業(yè)務(wù)作業(yè)自動(dòng)重提三次后仍報(bào)錯(cuò)。
應(yīng)急步驟
步驟1、健康檢查
使用gs_check工具進(jìn)行健康檢查,以omm用戶登錄MPPDB集群CN實(shí)例所在服務(wù)器。
C80及以上版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check ? -e health
C70版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check
根據(jù)檢查結(jié)果判斷是否有異常。
步驟2、故障排查
查看集群狀態(tài)確認(rèn)是否有CN實(shí)例故障
登錄集群內(nèi)服務(wù)器,執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
cm_ctl ? query -Cv
確認(rèn)有無異常實(shí)例,若有,按照實(shí)例故障處理。
1.2 應(yīng)用側(cè)作業(yè)運(yùn)行緩慢
前提
單位小時(shí)完成的批量作業(yè)數(shù)減少。
應(yīng)急步驟
步驟1、健康檢查
使用gs_check工具進(jìn)行健康檢查,以omm用戶登錄MPPDB集群CN實(shí)例所在服務(wù)器。
C80及以上版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check ? -e health
C70版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check
根據(jù)檢查結(jié)果判斷是否有異常。
步驟2、當(dāng)前活躍語句查詢
以omm用戶登錄CN實(shí)例所在服務(wù)器,執(zhí)行如下命令登錄postgres數(shù)據(jù)庫:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gsql ? -d postgres -p 25308 -r
執(zhí)行如下查詢SQL語句,查看當(dāng)前語句并發(fā):
select ? usename, count(*) from pgxc_stat_activity where state='active' and ? application_name not in ('WorkloadMonitor', 'workload', 'JobScheduler') ? group by usename;
確認(rèn)各用戶占用的并發(fā)數(shù)是否在正常范圍內(nèi)。
執(zhí)行如下查詢SQL語句,查找當(dāng)前正在運(yùn)行的語句:
select ? usename,application_name, now() -query_start as time, left(query,20) from ? pgxc_stat_activity where state='active' and application_name not in ('WorkloadMonitor', 'workload', 'JobScheduler')order ? by query_start;
將當(dāng)前正在運(yùn)行的sql語句按照?qǐng)?zhí)行啟動(dòng)時(shí)間升序排列。查看是否有執(zhí)行時(shí)間較長的語句。
步驟3、表清理作業(yè)確認(rèn)
確認(rèn)步驟2查詢的結(jié)果中是否有vacuum full語句:
根據(jù)步驟2查詢結(jié)果的query列的值,判斷是否正在并發(fā)執(zhí)行物理表的vacuum full。
若確認(rèn)有并發(fā)vacuum full且影響批量正常執(zhí)行,執(zhí)行步驟4;
若確認(rèn)沒有并發(fā)vacuum full,獲取query_start最早的幾個(gè)作業(yè)的query_id列的值,執(zhí)行步驟5。
步驟4、表清理作業(yè)停止
應(yīng)用側(cè)確認(rèn)是否啟動(dòng)table_clean作業(yè)。若已啟動(dòng)table_clean作業(yè),并且對(duì)當(dāng)前批量影響較大,需要應(yīng)用停下table_clean作業(yè)。
步驟5、作業(yè)等待分析
以omm用戶登錄CN實(shí)例所在的服務(wù)器,連接postgres數(shù)據(jù)庫,執(zhí)行如下查詢SQL語句,查看作業(yè)的等待情況:
select ? * from pgxc_thread_wait_status where query_id='${query_id}' order by tlevel;
注:其中${query_id}為步驟3查出的query_id列值。
根據(jù)pgxc_thread_wait_status視圖的wait_status列,確認(rèn)等待的DN是否一致,并記錄DN編號(hào),執(zhí)行步驟6;
步驟6、單節(jié)點(diǎn)資源使用查看
以omm用戶登錄CN實(shí)例所在的服務(wù)器,根據(jù)步驟5分析的DN編號(hào),確認(rèn)服務(wù)器,執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
cm_ctl ? query -Cvd|grep ${dnnum}
注:其中${dnnum}為DN的編號(hào)。
示例:假設(shè)DN_6001_6002為步驟5分析的DN編號(hào),在主備平衡時(shí),DN編號(hào)為6001。
根據(jù)查詢結(jié)果,記錄服務(wù)器的hostname,以omm用戶登錄集群內(nèi)的該服務(wù)器,依次查看:
1、使用TOP命令查看CPU使用情況,判斷節(jié)點(diǎn)是否有CPU使用異常高;
2、使用TOP命令查看內(nèi)存使用情況,判斷節(jié)點(diǎn)是否有內(nèi)存使用異常;
3、使用iostat命令查看IO使用情況,判斷節(jié)點(diǎn)是否有IO使用異常,io util接近100%, IO wait持續(xù)超過100ms即為IO利用率高,需要降低并發(fā)。
4、使用sar命令查看網(wǎng)絡(luò)使用情況,判斷節(jié)點(diǎn)是否網(wǎng)絡(luò)使用達(dá)到瓶頸;
5、使用ifconfig命令查看業(yè)務(wù)網(wǎng)絡(luò)丟包情況,判斷節(jié)點(diǎn)是否網(wǎng)絡(luò)丟包嚴(yán)重;
在確認(rèn)本機(jī)資源相對(duì)其他服務(wù)器資源使用異常情況下,按照步驟7進(jìn)行隔離;
步驟7、單節(jié)點(diǎn)隔離
確認(rèn)服務(wù)器的hostname,以omm用戶登錄CN實(shí)例所在的服務(wù)器,
C80SPC800以下版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
cm_ctl ? view|grep ${hostname} -B1|grep "node :"
注:${hostname}為待隔離機(jī)器的主機(jī)名。
示例:獲取的結(jié)果樣例為"node : 1",取"node :"后的數(shù)值為該機(jī)器的node_id。
以omm用戶登錄CN實(shí)例所在的服務(wù)器,執(zhí)行:
cm_ctl ? stop -n ${node_id} -m i
注:${node_id}為待隔離的服務(wù)器的node_id。
執(zhí)行完成后確認(rèn)被隔離的服務(wù)器的所有實(shí)例均停止且對(duì)應(yīng)的備實(shí)例狀態(tài)切換為"Primary Normal"后,執(zhí)行:
cm_ctl ? start -n ${node_id}
注:${node_id}為被隔離的服務(wù)器的node_id。
完成后通知應(yīng)用支持部重提失敗作業(yè)。
C80SPC800以上版本執(zhí)行:
gs_om ? -t isolate_tostandby -h HOSTNAME
完成后確認(rèn)集群狀態(tài)為Normal后,通知應(yīng)用支持部重提失敗作業(yè)。
1.3 CN實(shí)例異常
前提
執(zhí)行DDL語句報(bào)錯(cuò)。
應(yīng)急步驟
步驟1、服務(wù)器狀態(tài)檢查
確認(rèn)服務(wù)器是否有異常,若服務(wù)器異常,安排設(shè)備部排查,并更換硬件,完成后設(shè)備自動(dòng)加入集群。若無硬件故障,執(zhí)行步驟2;
步驟2 、CN實(shí)例狀態(tài)檢查
重要:請(qǐng)?jiān)谘邪l(fā)支持部和華為現(xiàn)場(chǎng)工程師確認(rèn)后實(shí)施。
確認(rèn)其他CN實(shí)例是否異常,使用omm用戶登錄集群內(nèi)服務(wù)器,執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
cm_ctl ? query -Cv
確認(rèn)僅一個(gè)CN實(shí)例故障,執(zhí)行CN剔除,參考LibrA產(chǎn)品手冊(cè)的《管理員指南》章節(jié)的《LibrA管理》段落的《刪除Coordinator實(shí)例》描述。
1.4 DN實(shí)例異常
前提
主備balance不平衡。
應(yīng)急步驟
步驟1、健康檢查
使用gs_check工具進(jìn)行健康檢查,以omm用戶登錄MPPDB集群CN實(shí)例所在服務(wù)器。
C80及以上版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check ? -e health
C70版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check
根據(jù)檢查結(jié)果判斷是否有異常。
步驟2、主備倒換
確認(rèn)故障實(shí)例已恢復(fù)后,可以進(jìn)行主備倒換。以下主備倒換為整個(gè)集群所有不平衡的主備節(jié)點(diǎn)全部進(jìn)行倒換(cm_ctl switchover -a),如需單實(shí)例倒換請(qǐng)參見2.2節(jié)。
為防止主備切換耗時(shí)過長,需要先停止應(yīng)用,要求先做下面步驟:
針對(duì)C80SPC800以下版本,登陸MPPDB集群的CN節(jié)點(diǎn),執(zhí)行下面命令
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gsql ? -d postgres -p 25308 -ar -c "select * from pgxc_stat_activity where ? usename!='omm' ">1.log
查看1.log 內(nèi)容:
ü? ?如無返回記錄,說明沒有應(yīng)用的SQL在跑;
ü? ?如1.log有返回記錄,則需要通知應(yīng)用停止應(yīng)用,如在應(yīng)用停止的前提下1.log仍然要應(yīng)用SQL在運(yùn)行(提交到集群上的尚未執(zhí)行完的SQL),需要登錄到對(duì)應(yīng)的CN,執(zhí)行下面SQL 殺掉尚在運(yùn)行的SQL。
select ? pg_terminate_backend(${PID});
注:PID 為 1.log中的pid字段值。
完成后,執(zhí)行以下語句進(jìn)行checkpoint及主備倒換:
gsql ? -dpostgres -p25308 -c "checkpoint"
cm_ctl ? switchover -a
針對(duì)C80SPC800以上版本
在應(yīng)用側(cè)停批、且無運(yùn)行SQL的情況下,執(zhí)行如下主備倒換命令,恢復(fù)集群:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_om ? -t killsession(用于替代上面的殺SQL命令)
gsql ? -dpostgres -p25308 -c "checkpoint"
cm_ctl ? switchover -a -q
1.5 CN、DN所在機(jī)器宕機(jī)
前提
服務(wù)器節(jié)點(diǎn)無響應(yīng),CN實(shí)例所在服務(wù)器宕機(jī)會(huì)導(dǎo)致DDL作業(yè)報(bào)錯(cuò)。
應(yīng)急步驟
步驟1、業(yè)務(wù)重提
單節(jié)點(diǎn)故障不影響批量運(yùn)行,可以重調(diào)因機(jī)器故障導(dǎo)致的中斷批量業(yè)務(wù)。
步驟2、故障服務(wù)器修理
修復(fù)并重啟故障服務(wù)器,自動(dòng)添加到集群中。
注:CN故障時(shí)間長,請(qǐng)按照“CN實(shí)例異常”應(yīng)急方案處理。
步驟3、健康檢查
使用gs_check工具進(jìn)行健康檢查,以omm用戶登錄MPPDB集群CN實(shí)例所在服務(wù)器。
C80及以上版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check ? -e health
C70版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check
根據(jù)檢查結(jié)果判斷是否有異常。
1.6 OMS、GTM、CMS所在機(jī)器宕機(jī)
前提
GTM、CMS所在服務(wù)器DN切換為備實(shí)例
應(yīng)急步驟
步驟1、業(yè)務(wù)重提
單節(jié)點(diǎn)故障不影響批量運(yùn)行,可以重調(diào)因機(jī)器故障導(dǎo)致的中斷批量業(yè)務(wù)。
步驟2、故障服務(wù)器修理
修復(fù)并重啟故障服務(wù)器,自動(dòng)添加到集群中。
步驟3、健康檢查
使用gs_check工具進(jìn)行健康檢查,以omm用戶登錄MPPDB集群CN實(shí)例所在服務(wù)器。
C80及以上版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check ? -e health
C70版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
gs_check
根據(jù)檢查結(jié)果判斷是否有異常。
1.7 集群進(jìn)入只讀模式
前提
1、應(yīng)用業(yè)務(wù)作業(yè)報(bào)錯(cuò)包含關(guān)鍵詞“read-only transaction”
2、查看集群存儲(chǔ)利用率:
以omm用戶登陸集群CN實(shí)例所在的服務(wù)器,執(zhí)行下面步驟:
source ? /opt/huawei/Bigdata/mppdb/.mppdbgs_profile
cm_ctl ? query -Civ | grep Primary | awk '{print $3}' | sort -u > /tmp/hosts
for ? i in `cat /tmp/hosts`; do ssh -n -q $i "hostname;df -m" ;done > ? df_m_201902.out 2>&1 &
查看 df_m_201902.out 文件,有個(gè)別文件系統(tǒng)的存儲(chǔ)利用率達(dá)到90%
應(yīng)急步驟?參考附件《磁盤使用超90%集群只讀處理方案》
1.8磁盤損壞(包含有壞道、xfs文件系統(tǒng)損壞)
前提
需包含壞道、xfs文件系統(tǒng)損壞判斷依據(jù),MPPDB集群讀寫XFS文件系統(tǒng)異常。
應(yīng)急步驟
步驟1、影響確認(rèn)
確認(rèn)磁盤壞道、XFS文件損壞對(duì)集群的影響,
若故障導(dǎo)致了數(shù)據(jù)讀取失敗報(bào)錯(cuò),或者數(shù)據(jù)庫實(shí)例發(fā)生core dump,執(zhí)行步驟2。
若故障未影響數(shù)據(jù)讀取,執(zhí)行步驟3
步驟2、實(shí)例隔離
1)若服務(wù)器所有磁盤都出現(xiàn)故障:
C80SPC800以下版本執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
cm_ctl ? view|grep ${hostname} -B1|grep "node :"
注:${hostname}為待隔離機(jī)器的主機(jī)名。
示例:獲取的結(jié)果樣例為"node : 1",取"node :"后的數(shù)值為該機(jī)器的node_id。
以omm用戶登錄CN實(shí)例所在的服務(wù)器,執(zhí)行:
cm_ctl ? stop -n ${node_id} -m i
注:${node_id}為待隔離的服務(wù)器的node_id。
執(zhí)行完成后確認(rèn)被隔離的服務(wù)器的所有實(shí)例均停止且對(duì)應(yīng)的備實(shí)例狀態(tài)切換為"Primary Normal"后,執(zhí)行:
cm_ctl ? start -n ${node_id}
注:${node_id}為被隔離的服務(wù)器的node_id。
完成后通知應(yīng)用支持部重提失敗作業(yè)。
C80SPC800以上版本執(zhí)行:
gs_om ? -t isolate_tostandby -h HOSTNAME
完成后檢查集群狀態(tài)為Normal后,通知應(yīng)用支持部重提失敗作業(yè)。
2)若服務(wù)器部分磁盤出現(xiàn)故障:
確認(rèn)服務(wù)器的hostname,以omm用戶登錄CN實(shí)例所在的服務(wù)器,執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
cm_ctl ? view|grep ${hostname} -B1|grep "node :"
注:${hostname}為待隔離機(jī)器的主機(jī)名。
示例:獲取的結(jié)果樣例為"node : 1",取"node :"后的數(shù)值為該機(jī)器的node_id。
確認(rèn)故障服務(wù)器磁盤掛載目錄的主實(shí)例路徑,執(zhí)行:
source ? ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
cm_ctl ? query -Cvd|grep ${hostname}|grep "/srv/BigData/mppdb/${dataN}"
注:${hostname}為待隔離機(jī)器的主機(jī)名,${dataN}為故障磁盤掛載點(diǎn)。根據(jù)獲取的結(jié)果確認(rèn),實(shí)例路徑。一般存在一個(gè)主實(shí)例一個(gè)備實(shí)例。
執(zhí)行:
cm_ctl ? stop -n ${node_id} -D ${DN_dir} -m i
執(zhí)行完成后確認(rèn)被隔離的服務(wù)器的所有實(shí)例均停止且對(duì)應(yīng)的備實(shí)例狀態(tài)切換為"Primary Normal"后,執(zhí)行:
cm_ctl ? start -n ${node_id} -D ${DN_dir}
注:${node_id}為被隔離的服務(wù)器的node_id。
完成后通知應(yīng)用支持部重提失敗作業(yè)。
步驟3、節(jié)點(diǎn)修復(fù)
聯(lián)系系統(tǒng)部修復(fù)故障磁盤或者XFS修復(fù)。
更多精彩內(nèi)容,請(qǐng)關(guān)注華為云開發(fā)者社區(qū)論壇:https://bbs.huaweicloud.com/forum/forum-598-1.html 及微信公眾號(hào)“華為云AI”
附件: 磁盤使用超90%集群只讀處理方案.doc 174.50KB 下載次數(shù):3次
SQL 數(shù)據(jù)倉庫服務(wù) GaussDB(DWS)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。