Replication

AlwaysOn 可用性組和複製 - 預期行為

  • April 16, 2019

我目前正在對alwayson和replication進行一些測試。我目前有以下內容:

  • 完全工作的集群和始終線上的環境;DCTEST1、DCTEST2 和偵聽器名稱 DCTEST_L。集群是健康的。

    • 完全工作的事務複製到另一台伺服器 - DCREPL
    • 都是SQL2017 Enterprise

無論哪個節點是主節點,都可以復製到 DCREPL。我在 DCTEST_L 上進行了數據更改,它們已成功傳遞給訂閱者。

我遇到的問題是當我關閉主要 (DCTEST1) 時。可用性組成功故障轉移。但是,當我在偵聽器上進行數據更改時 - DCTEST_L; 它們不會復製到 DCREPL。當 DCTEST1 重新開機時,更改將成功複製。這是預期的行為嗎?如果主節點出現故障,我希望複製繼續進行,並且在節點重新打開電源之前不必停止。

我錯過了一步嗎?我遵循了微軟文件:

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-replication-for-always-on-availability-groups-sql-server?view=sql-server-2017

實際上,根據微軟的說法,這是預期的行為:

當發布者只有兩個可用性副本(一個主副本和一個輔助副本)並且發生故障轉移時,原始主副本將保持關閉狀態,因為 logreader 不會向前移動,直到所有輔助數據庫重新聯機或直到故障輔助副本從可用性組。現在針對輔助數據庫執行的日誌讀取器將不會繼續前進,因為 Always On 無法強化對任何輔助數據庫的任何更改。要允許 logreader 繼續進行並且仍然具有災難恢復能力,請使用 ALTER AVAILABITY GROUP REMOVE REPLICA 從可用性組中刪除原始主副本。然後將新的輔助副本添加到可用性組。

引用自:

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/replicate-track-change-data-capture-always-on-availability?view=sql-server-2017

引用自:https://dba.stackexchange.com/questions/234882