Stories

Detail Return Return

技術分享 | Oracle RAC 心跳機制解析 - Stories Detail

本文為墨天輪數據庫管理服務團隊第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 重配置流程

  1. 重配置發起:RM節點廣播重配置請求
  2. 狀態收集:各節點上報當前狀態
  3. 腦裂檢測:結合網絡/磁盤心跳進行仲裁
  4. 節點驅逐:寫入poison package指令
  5. 拓撲更新:生成新的成員列表
  6. 資源解凍:完成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

user avatar youyudeshangpu_cny857 Avatar feichangkudechongfengyi Avatar 240cgxo4 Avatar code4world Avatar dbkangaroo Avatar
Favorites 5 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.