大數據“復活”記
1910
2025-03-31
GaussDB (DWS) CM 組件核心功能介紹
本文在《GaussDB (DWS) 集群管理系列:CM組件介紹(架構和部署形態)》所介紹基本結構的基礎上,展示 CM 組件的核心功能,包括狀態查詢、集群起停、故障恢復和異常檢測等。這些功能結合告警、重啟、倒換、隔離等手段,與各類實例組件的主備數據同步、倒換、重建等機制一起,構建數據庫的高可用(HA)能力,實現集群的對外連續性。
集群狀態查詢
通過 cm_ctl query -Cv 可以查看當前集群的整體狀態和各實例狀態(詳細參數說明本文不做介紹,可通過執行 cm_ctl --help 查看)。以下圖為例,整個數據庫集群部署了
3 個 CN,分別是 5001, 5002, 5003;
1 組主備 GTM,分別是 1001, 1002
三組 DN,主 DN 分別對應 6001, 6003, 6004
此外還可看出
cluster_state 屬性為 normal,說明整個集群屬于正常狀態
balanced 屬性為 Yes,說明 GTM 和 DN 均未發生主備倒換
DN 6001, 6002, 3002 為 1 個主備從結構(6003 和 6005 類似)
發生過主備倒換的集群,狀態參考下面示例圖(只顯示部分狀態,其中6001 和 6002 發生主備倒換;balanced 顯示 No;集群仍然是 Normal 狀態)。
如果有實例發生故障,狀態參考下面示例圖(只顯示部分狀態,其中 6001 被手動停止,6002 升主;集群處于 Degraded 狀態,表明集群仍可繼續提供服務)。
如果一組 DN 主備從多個發生故障,則狀態參考下面示例圖(只顯示部分狀態,其中 6001 被手動停止,6002 磁盤故障無法被拉起;集群處于 Unavaliable 狀態,無法提供服務)。
啟動和停止
集群的啟動和停止可分為集群級、節點級和實例級等。
集群級:啟動和停止集群中的所有節點和實例
節點級:啟動和停止集群中的某個節點
實例級:啟動和停止集群中的某個節點的某個實例
節點內的啟動順序為:
① 系統定時任務拉起 OM Monitor 進程
② OM Monitor 進程拉起 CM Agent 進程
③ CM Agent 進程拉起節點內的 CN,DN,GTM,CM Server 等部署的實例進程
以集群級起停為例,cm_ctl 命令和輸出示例見下圖。
故障恢復
數據庫故障恢復主要指實例發生明確的故障時,CM 組件根據探測到的狀態進行仲裁,從而盡可能恢復集群可用性的過程。
單節點故障場景在生產環境中不可避免
以某個主 DN 故障為例,一次典型的仲裁流程包括:
① CM Agent 1探測DN主實例并發現故障
② CM Agent 1持續上報實例故障信息至CM Server
③ CM Server執行仲裁流程,選擇DN備機升主
④ CM Server下發升主命令至CM Agent 2
⑤ CM Agent 2對實例執行升主操作
常見故障類型有(限于篇幅,本文不做具體分析):
磁盤故障
磁盤損壞
慢盤
RAID卡損壞
網絡故障
斷網
閃斷
時延
丟包
下電故障
節點下電
節點重啟
操作系統故障
時間跳變
IO過載
磁盤空間不足
文件句柄耗盡
文件權限出錯
進程數耗盡
進程異常退出
進程僵死
其它故障
CPU/內存 損壞等
對于不同的實例故障,CM 恢復手段(不同場景下恢復時間 30 秒到 30 分鐘不等)主要包括:
CN 故障
DDL 語句無法執行,DML 語句不受影響
通過將故障 CN 剔除,可保障 DDL 語句不受影響
僅支持集群內 CN 個數大于 3,且 1 個 CN 發生故障時剔除
DN 故障
單點故障可自動恢復
主 DN 故障時,仲裁備 DN 升主繼續提供服務
備 DN 故障時,主 DN 將日志和數據同步至從備,業務不受影響
主 GTM 故障
備 GTM 升主后繼續提供服務
主 CM Server 故障
備 CM Server 接受多數派 CM Agent鏈接,升主后繼續提供服務
異常檢測
從業界經驗來看,數據庫實例可能處于故障、僵死、亞健康等狀態。這些狀態的出現概率逐級降低,但檢測難度逐級增高。尤其是如何區分亞健康狀態和系統繁忙狀態,具有較大的挑戰性。
CM 組件包含異常檢測流程,可用于識別和處理網絡不穩定、磁盤 IO 掛死、進程/線程僵死、進程頻繁退出、實例狀態時好時壞等場景,提高集群的穩定性和可用性。
以 DN 短鏈接檢測為例,CM Agent 按照固定時間間隔與 DN 實例新建鏈接。如果與某個主 DN 鏈接失敗或通過新鏈接無法執行 SQL 語句,則認為該 DN 發生 1 次 Hang 異常。如果多次出現異常,則會觸發 Hang 檢測機制,將該 DN 實例殺死并執行主備切換。目前常見的異常檢測項有:
短鏈接建立
通過短鏈接執行 SQL 語句
IO 掛死
內存占用異常
注:長短鏈接的概念是相對的。CM Agent 檢測實例狀態時也會與實例建立鏈接,通常情況下不會釋放,因此稱為“長鏈接”;異常檢測流程建立鏈接并執行 SQL 后隨即釋放,因此稱為“短鏈接”。
EI企業智能 數據倉庫服務 GaussDB(DWS) Gauss AP
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。