首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2012 AlwaysOn 網路抖動導致提交延遲:專用心跳網卡隔離解決方案

     編輯:關於SqlServer

生產環境 SQL Server 2012 AlwaysOn 同步模式,因共用交換器與應用服務器導致網路抖動,觸發副本連線中斷/重連(錯誤 35202),造成主庫提交延遲。解決方案:新增專用心跳網卡直連,重建 Endpoint 綁定私有 IP,隔離複寫流量。

問題徵狀

  • 研發反映寫操作不定期提交延遲。
  • 擴充事件捕獲 錯誤 35202:副本連線恢復訊息。
    擴充事件 35202 錯誤詳情
  • 根因:機房網路複雜,DB/APP 共用交換器,業務高峰上聯埠塞車導致 AlwaysOn 心跳/資料同步封包丟失/延遲。

現有架構

  • 兩節點同步模式 AlwaysOn 可用性群組
  • 各節點單網卡接入共用交換器,**無專用心跳網路**
  • WSFC 不再強制要求獨立心跳網路,但生產環境強烈建議

改造方案:雙網卡隔離複寫流量

1. 硬體層:新增直連網卡配置私有 IP

Node_A (Server_A): 10.0.0.11/24  -- 直連網卡
Node_B (Server_B): 10.0.0.12/24  -- 直連網卡
# 雙節點以網線直連或獨立 VLAN,不經核心交換器

2. 重建 Database Mirroring Endpoint 綁定私有 IP

-- 兩節點分別執行
DROP ENDPOINT [Hadr_endpoint];
GO

CREATE ENDPOINT [Hadr_endpoint]
    STATE = STARTED
    AS TCP (LISTENER_PORT = 5022, LISTENER_IP = (10.0.0.11))  -- Node_B 改 10.0.0.12
    FOR DATA_MIRRORING (
        ROLE = ALL,
        AUTHENTICATION = WINDOWS NEGOTIATE,
        ENCRYPTION = REQUIRED ALGORITHM AES
    );
GO

3. 更新可用性群組副本 Endpoint URL

-- 主節點執行即可同步至副本
ALTER AVAILABILITY GROUP [Alwayson01]
    MODIFY REPLICA ON N'Node_01' WITH (ENDPOINT_URL = N'TCP://10.0.0.11:5022');

ALTER AVAILABILITY GROUP [Alwayson01]
    MODIFY REPLICA ON N'Node_02' WITH (ENDPOINT_URL = N'TCP://10.0.0.12:5022');

4. 等待資料重新同步

  • 刪除 Endpoint 瞬間副本進入 **Not Synchronizing** 狀態,但**Listener 與資料庫線上服務不中斷**,主庫仍可正常讀寫。
  • 新 Endpoint 建立後,自動透過私有網路重新同步,通常數分鐘內完成(視資料量)。

關鍵風險控制

  • 操作窗口:低峰期執行,雖不中斷服務但同步重建有短暫保護窗口。
  • 防火牆:確保私有網段雙向開放 TCP 5022。
  • 驗證:SELECT * FROM sys.dm_hadr_availability_replica_states 確認 synchronization_state_desc = SYNCHRONIZED。
  • 回滾預案:保留原 Endpoint 腳本,若新網路不穩可快速切回公網 IP。

總結

AlwaysOn 同步模式下,**網路延遲直接等同提交延遲**。專用心跳/複寫網卡直連是低成本、高效果的架構級優化,徹底隔離業務流量干擾,確保 RPO=0 的同步承諾可靠兌現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved