Sql-Server

將 STANDBY 中的日誌傳送輔助節點加入 AlwaysOn 組時出現問題

  • August 8, 2017

我有一個配置,其中一個數據庫將日誌傳送到託管在災難恢復站點中的三個不同伺服器。這三個災難恢復伺服器加入同一個 AlwaysOn 可用性組 (AG)。

如果發生故障轉移,我們會在充當 AG 主副本的伺服器上恢復數據庫,然後使用“僅加入”同步選項將數據庫添加到 AG。由於輔助副本上的數據庫已經處於不可恢復狀態,因此操作成功,我們最終得到了跨 AG 同步的數據庫。這是100%的好。

新問題:當數據庫不處於可讀狀態時,我們的監控軟體不喜歡它。因此,當我們在主站點中並將日誌傳送到災難恢復站點的 NORECOVERY 輔助站點時,我們的監控軟體會打開高優先級票證,因為它認為輔助數據庫已關閉(因為它無法讀取它們)。

通過將輔助設備從 NORECOVERY 切換到 STANDBY 來使輔助設備可讀可解決此問題,但會創建一個新問題。當我們故障轉移到災難恢復站點並嘗試將數據庫添加到 AG(如上所述)時,它會失敗,因為輔助副本上的數據庫需要處於 NORECOVERY 中才能成功加入 AG。

如果我們在嘗試將數據庫添加到 AG 之前將這些數據庫從 STANDBY 切換到 NORECOVERY,我們會收到一條消息,指出輔助副本上的數據庫還沒有恢復到足以加入 AG 的程度,並且加入失敗。如果此時,我們在主副本上對數據庫進行事務日誌備份,並使用 NORECOVERY 將其應用到輔助副本,我們可以成功重新啟動連接過程。

似乎將輔助節點從 STANDBY 更改為 NORECOVERY 會導致引擎確定數據庫不再同步,但我終其一生都無法弄清楚原因。誰有想法?我能想到的唯一一件事是恢復主數據庫本身的行為足以使它們不同步,但如果這是真的,當我們簡單地將輔助數據庫留在 NORECOVERY 開始時,不應該也是這種情況嗎?與(如我們最初的計劃)?

還原WITH STANDBYSQL Server 時必須撤消未送出的事務(相關數據頁被寫入您指定的撤消文件)。該NORECOVERY選項不關心日誌的狀態或執行任何潛在的回滾,如果數據庫被恢復,就會發生這種情況。因為兩者使數據庫處於不同的狀態,您必須重新應用最終事務日誌WITH NORECOVERY才能處於良好狀態。在https://askmesql.blogspot.com/2011/01/log-shipping-norecovery-vs-standby-mode.html上有一篇很好的文章

至於您的監控軟體,我建議您在設置 AG 時暫時排除某些數據庫,甚至是實例,這樣您就不會收到那些虛假警報。

根據您對問題的描述,實際問題是配置您的監控軟體,而不是您現有的 SQL Server 複製解決方案。要麼弄清楚如何更改/修復監控軟體,要麼將其丟棄。永遠不要將數據庫的 HA/DR 功能更改為“服務”監控軟體,順便說一句,這聽起來與 SQL Server 不兼容。

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