隨著國產數據庫Polardb的推廣及應用,數據庫故障開始增多,今天給大家分享一篇Polardb故障應急處理思路。10月下旬,應用反饋某模塊登陸異常,查看數據庫有大量進程active狀態,持續時間超過30分鐘,通過kill進程并重啟應用無法恢復,通過與業務協商、嘗試通過重啟數據庫實例恢復。
查看日志文件postgresql-10-26_024511.log,日志中存在以下日志:
ERROR: dsa_area could not attach to segment
涉及進程pid= 51789 53315 53316,其中53316和53315進程都退出了,日志如下:
53315 2020-10-26 03:07:11 UTC XX000 ERROR: dsa_area could not attach to segment
53316 2020-10-26 03:07:11 UTC XX000 ERROR: dsa_area could not attach to segment
......
53314 2020-10-26 03:07:11 UTC XX000 FATAL: cannot unpin a segment that is not pinned
54 2020-10-26 03:07:11 UTC 00000 LOG: background worker "parallel worker" (PID53316) exited withexit code 1
54 2020-10-26 03:07:11 UTC 00000 LOG: background worker "parallel worker" (PID53315) exitedwith exit code 1
而pid=51789的進程沒有正常退出,很有可能是hang,并且影響到其他的進程。
……
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:07 UTC 00000 13 0 0 0 LOG: execute S_1: COMMIT
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:09 UTC 00000 43 0 0 0 LOG: statement: BEGIN
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:09 UTC 00000 59 1 0 40 LOG: execute
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:09 UTC 00000 22 0 0 0 LOG: execute S_1: COMMIT
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:11 UTC 00000 35 0 0 0 LOG: statement: BEGIN
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:11 UTC 00000 69701 1 0 170881 LOG: execute
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:11 UTC XX000 ERROR: dsa_area could not attach to segment
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:11 UTC XX000 STATEMENT: SELECT * FROM (SELECT RET.*, ROWNUM AS FSDPRN FROM(………………)WHERE FSDPRN BETWEEN 1 AND 10
51789 192.168.7.36(41423) ywxt ywxt 2020-10-26 03:07:11 UTC XX000 LOG: statement: SELECT * FROM (SELECT RET.*, ROWNUM AS FSDPRNFROM (………………) WHERE FSDPRN BETWEEN 1 AND 10
params:$1 = d6d9c702-8aa9-4e9b-8cc2-4d756b1adaa2, $2 = 202009, $3 =HLW, $4 = 15255864202, $5 =1a251789-9cc9-4e77-84cd-6b651da3be5a, $6 = 2020-09-14 11:06:18
params:$1 = 40f12349-97cc-4945-94b1-e7fda75cc984, $2 = 202009, $3 =HLW, $4 = 18326858272, $5 =eaceb00f-9f78-4c6f-8cee-517898f0b200, $6 = 2020-09-15 15:16:40
查過文檔發現是屬于11.3之前已知的問題:
Fix race conditions in management of dynamic shared memory (Thomas Munro)
These could lead to “dsa_area couldnot attach to segment” or “cannot unpin a segment thatis not pinned” errors.
if you just happen to hit PostgreSQL bugsuch as this one that was fixed in v11.3:
Once this problem occurs, your databasewill appear to be running, and can possibly be used to service somequeries... but most queries will hang, and eventually yourapplication servers will timeout causing application downtime.
通過重啟實例恢復,由于重啟過程中,實例無法正常停止,導致管控重啟流程超時失敗,通過手工修復拉起實例。手動流程如下:
將長時間運行的流程直接設置為中斷
cat/root/.kube/config |grep client-certificate-data|awk {print$2}|base64 -d >/root/.kube/admin.crt
cat/root/.kube/config |grep client-key-data|awk {print $2}|base64 -d>/root/.kube/admin.key
KUBEAPISERVER=127.0.0.1
PPASCLUSTERNAME=polar-xxxxx
curl-k --cert /root/.kube/admin.crt --key /root/.kube/admin.keyhttps://$KUBEAPISERVER:6443/apis/ppas.polardb.aliyun.com/v1beta1/namespaces/default/ppasclusters/$PPASCLUSTERNAME| python -m json.tool > polar-single.yaml
vimpolar-single.yaml
找到clusterStatus:xxxxxx,改為clusterStatus:Interrupt,保存
curl-X PUT -H "Content-Type: application/json" -k --cert/root/.kube/admin.crt --key /root/.kube/admin.keyhttps://$KUBEAPISERVER:6443/apis/ppas.polardb.aliyun.com/v1beta1/namespaces/default/ppasclusters/$PPASCLUSTERNAME/status--data @polar-single.yaml
控制臺查看集群列表,看是否進入到中斷狀態。
清理ins_lock文件
kubectlget ppascluster polar-xxxx -o yaml
找到status- masterCluster - rwHostIns - insId,這個值是實例ID。
在三個計算節點找以下路徑:/data/polardb_ppas/{insId}/data,和直接進入容器查找文件效果一樣。
找到ins_lock文件,刪除。
將中斷的集群進行重建
kubectledit ppascluster polar-xxxx
在annotations下面增加下面兩項:
polarbox.interrupt.recover:"T"
polarbox.interrupt.previous.status:"RebuildingRW"
刷新控制臺,查看集群狀態進入重建中,等待重建完成
1、此問題是并行查詢過程中觸發,短期內通過關閉并行查詢來規避,目前生產已經關閉并行。
2、Polardb應急手工拉起流程的熟悉。
3、相關工具配套的場景沉淀。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130089.html
摘要:演講嘉賓簡介蔡松露子嘉,阿里云云數據庫總架構師,主要負責阿里云技術以及阿里云數據庫整體架構等工作。也就是說以上的四點只是達到了云原生數據庫的門檻值,還并不代表是這一個云原生的數據庫。 摘要:POLARDB是阿里云ApsaraDB數據庫團隊研發的基于云計算架構的下一代關系型數據庫,其最大的特色是計算節點與存儲節點分離,借助優秀的RDMA網絡以及最新的塊存儲技術。POLARDB不但滿足了公...
摘要:演講嘉賓簡介蔡松露子嘉,阿里云云數據庫總架構師,主要負責阿里云技術以及阿里云數據庫整體架構等工作。也就是說以上的四點只是達到了云原生數據庫的門檻值,還并不代表是這一個云原生的數據庫。 摘要:POLARDB是阿里云ApsaraDB數據庫團隊研發的基于云計算架構的下一代關系型數據庫,其最大的特色是計算節點與存儲節點分離,借助優秀的RDMA網絡以及最新的塊存儲技術。POLARDB不但滿足了公...
摘要:近日,阿里云正式對外發布了全新一代自研關系型數據庫。而他認為,在未來年內,沒有自研數據庫的云計算廠商將會被逐漸淘汰出局。 近日,阿里云正式對外發布了全新一代自研關系型數據庫POLARDB。值得注意的是,POLARDB并不是基于開源數據庫MySQL之上研發的分支,而且基于第三代分布式共享存儲架構,創新實現企業級...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20