Sql-Server

SQL Server 分佈式可用性組數據庫在伺服器重新啟動後不同步

  • May 24, 2018

我們正準備在我們的 SQL Server 上執行大規模升級,並註意到分佈式可用性組的一些異常行為,我試圖在繼續之前解決這些行為。

上個月,我將遠端輔助伺服器從 SQL Server 2016 升級到 SQL Server 2017。該伺服器是多個分佈式可用性組 (DAG)和單獨的可用性組 (AG)的一部分。當我們升級這台伺服器時,我們並沒有意識到它會進入一個不可讀的狀態,所以在過去的一個月裡,我們一直只依賴於主伺服器。

作為即將進行的升級的一部分,我將CU 4更新檔應用到伺服器並重新啟動它。當伺服器重新上線時,剛剛修補的輔助伺服器顯示所有 DAG/AG 正在同步,沒有任何問題。

然而,初選展示了一個非常不同的故事。據報導

  • 單獨的 AG 正在同步,沒有任何問題
  • 但 DAG 處於不同步/不健康狀態

在最初驚慌失措之後,我嘗試了以下操作以使 DAG 中的事物再次同步:

  • 從主節點開始,我停止並恢復了數據移動。這沒有開始同步數據。
  • 在第二個(我剛剛修補的那個)上我執行了ALTER DATABASE [<database] SET HADR RESUME;- 它執行沒有錯誤,但沒有恢復任何同步

我最後一次嘗試再次同步數據是登錄到輔助伺服器,然後手動重新啟動 SQL Server 服務。手動重新啟動服務似乎有點極端,因為我希望重新啟動伺服器就足夠了。

有沒有人遇到過重啟後 DAG 沒有開始同步到輔助伺服器的問題?如果是這樣,它是如何解決的?

我檢查了 SQL Server 錯誤日誌和輔助伺服器上的事件查看器,我看不到任何異常。

請注意,這不是一個確定的答案,但它是與Taryn聊天后的最佳答案。

然而,初選展示了一個非常不同的故事。它報告說單獨的 AG 正在同步,沒有任何問題,但 DAG 處於未同步/不健康狀態

如果分佈式 ag 底層的各個數據庫和 AG 表示它們執行良好且正在同步,那麼這很可能只是 DMV 和/或 SSMS 儀表板中的一個小問題。由於錯誤日誌中沒有任何內容表明副本未連接或處於斷開狀態。

不幸的是,由於問題已經解決,很難確切地說出它是什麼……但是將來如果有人發生這種情況:

  • 檢查所有集群上的sys.dm_hadr_database_replica_states以尋找任何不健康的東西。如果一切正常,則可能 DMV 尚未更新
  • 如果不正常,請檢查錯誤日誌/DMV 是否存在連接問題(例如無法連接到轉發器/全域主節點)
  • 丹的回答提到了數據庫啟動可能引起的問題 - 儘管在這種情況下無法讀取實例,因此很可能不是問題,但可能是您的情況
  • 如果數據庫是可讀的,則使用虛擬表/插入進行冒煙測試或…
  • 使用 DEBUG 通道項目的擴展事件會話sqlserver.hadr_dump_log_blocksqlserver.hadr_apply_log_block查看輔助節點是否實際接收/應用日誌塊或…
  • 性能對象SQLServer:Database Replica\Log Bytes Received/sec

如果您在該輔助伺服器上接收數據,但分佈式 ag 仍然顯示不同步或不健康,那麼我會讓它稍微看看 DMV 值是否發生變化,因為它顯然正在接收和處理日誌塊。

但是,如果不是,那麼我們將需要進一步調查這超出了答案的範圍。

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