本文為墨天輪數據庫管理服務團隊第92期技術分享,內容原創,作者為技術顧問陳洋,如需轉載請聯繫小墨(VX:modb666)並註明來源。如需查看更多文章可關注【墨天輪】公眾號。
一、心跳機制概述
Oracle RAC集羣通過多維度心跳機制確保集羣高可用性,主要包括三種心跳類型:
- 網絡心跳:節點間連通性檢測
- 磁盤心跳:腦裂保護與仲裁機制
- 本地心跳:進程自檢與節點健康監控
二、核心心跳機制詳解
2.1 網絡心跳
功能特性
- 每秒通過ocssd.bin進程發送心跳包
- 檢測節點間網絡連通性
- 觸發集羣重新配置的主要依據
核心進程
| 進程名稱 | 功能描述 |
|---|---|
| clssnmSendingThread | 每秒向集羣其他節點發送心跳包 |
| clssnmPollingThread | 分析接收的心跳信息,觸發集羣重配置 |
| clssnmRcfgMgrThread | 執行集羣重新配置操作 |
| clssnmClusterListener | 接收並分發遠程節點消息 |
工作流程
A[節點1發送線程] --> B[節點2派遣線程]
2.2 磁盤心跳
防腦裂機制
- 每秒向所有表決盤寫入心跳信息
- 使用VF(Voting File)同步集羣成員狀態
- 當網絡分區發生時,通過磁盤心跳仲裁存活節點
關鍵進程
- clssnmvDiskPingThread:負責VF心跳寫入與kill block檢測
- clssnmvDiskPingMonitorThread:監控磁盤心跳健康狀態
- clssnmvKillBlockThread:處理kill block指令
仲裁流程
sequenceDiagram
節點A->>表決盤: 寫入心跳+成員列表
2.3 本地心跳
自檢機制
- 同步發送網絡心跳與本地狀態信息
- 監控ocssd.bin進程健康狀態
- 觸發節點自愈重啓的關鍵機制
關聯進程
- cssdagent:本地進程狀態監控
- cssdmonitor:節點健康狀態採集
三、集羣重配置機制
3.1 觸發條件
| 觸發類型 | 檢測機制 | 典型日誌特徵 | |
|---|---|---|---|
| 網絡心跳丟失 | 連續misscount閾值超限 | “eviction started for node” | |
| 磁盤心跳異常 | 表決盤訪問超時 | “CSSD aborting from thread” | |
| 本地心跳失效 | 進程狀態檢測失敗 | “clsnproc\_needreboot” |
3.2 重配置流程
- 重配置發起:RM節點廣播重配置請求
- 狀態收集:各節點上報當前狀態
- 腦裂檢測:結合網絡/磁盤心跳進行仲裁
- 節點驅逐:寫入poison package指令
- 拓撲更新:生成新的成員列表
- 資源解凍:完成DRM(Dynamic Resource Mastering)
四、關鍵參數配置
4.1 默認閾值
- 查詢網絡心跳閾值(NHB)
crsctl get css misscount
CRS-4678: Successful get misscount 30
- 查詢磁盤心跳閾值(DHB)
crsctl get css disktimeout
CRS-4678: Successful get disktimeout 200
4.2 參數調整規範
- 調整NHB(需重啓集羣生效)
crsctl set css misscount 50
- 調整DHB(需滿足disktimeout > misscount)
crsctl set css disktimeout 51
4.3 參數關係矩陣
| 參數類型 | 建議範圍 | 依賴關係 |
|---|---|---|
| misscount | 30-60秒 | 基礎檢測閾值 |
| disktimeout | 200-400秒 | 必須 > misscount |
| reboottime | 3-5分鐘 | 需大於disktimeout |
五、故障排查指南
5.1 日誌分析要點
2022-11-18 09:45:24.017 : CSSD:3559126784: [INFO] clssnmSendingThread: sent 5 status msgs
–> 本地心跳正常
2022-11-18 09:45:25.809 : CSSD:3587475200: [INFO] Processing member data change for HB+ASM
–> ASM心跳同步
2022-11-18 18:34:38.206: [CSSD][4110736288]clssscExit: CSSD aborting from thread clssnmvDiskPingMonitorThread
–> 磁盤心跳嚴重故障
5.2 檢測命令集
- 檢查心跳網絡狀態
cluvfy comp nodecon -n all -verbose
- 監控實時心跳流量
olsnodes -n | xargs -I {} ping -c 3 {}\_priv
- 驗證表決盤健康狀態
crsctl query css votedisk
六、最佳實踐
網絡配置:
- 使用專用心跳網絡(建議10G以上帶寬)
- 配置交換機端口流控
- 禁用IGMP Snooping
存儲優化:
- 表決盤使用高性能SSD
- 多路徑配置驗證
- 定期執行VF健康檢查
參數調優:
– 調整實例恢復參數
ALTER SYSTEM SET “_lm_rcvr_hang_check_frequency”=10 SCOPE=SPFILE;
監控方案:
– 實時心跳監控腳本
while true; do
附錄:關鍵進程對照表
| 進程名稱 | 所屬組件 | 功能描述 |
|---|---|---|
| clssnmSendingThread | CSSD | 網絡心跳發送 |
| clssnmvDiskPingThread | CSSD | 磁盤心跳維護 |
| cssdagent | CSSD | 本地進程狀態監控 |
| cssdmonitor | CSSD | 節點健康狀態採集 |
| LMON | RDBMS | 實例級重配置管理 |
墨天輪從樂知樂享的數據庫技術社區蓄勢出發,全面升級,提供多類型數據庫管理服務。墨天輪數據庫管
服務官網:https://www.modb.pro/service