Availability Group How to Reset Replica 可用性群組 資料庫複本重新設置

2022-04-26

筆記 SQL Server 可用性群組的資料庫複本如何重新設置以及正確處理資料庫停留在「正在還原...」 或者是複本資料抄寫不一致的問題。

SQL Server Logo

Availability Group 複本異常處理

可用性群組 AG,有兩個資料庫複本 DB1 以及 DB2。

發現可用性群組無法容錯移轉到 DB2,系統會報錯資料遺失問題。

確認要容錯過去的複本 DB2,從可用性資料庫確認,發現都處於沒有在資料移動的狀態。

批次執行下列指令,嘗試恢復所有的資料庫狀態

ALTER DATABASE [DatabaseName] SET HADR RESUME

完成後多數資料庫恢復正常,但少數資料庫仍是異常。

這個時候做了錯誤的選擇,決定讓 DB2 退出 AG,步驟如後續。

正確的選擇應該是找出資料移動卡住的問題。發現是因為部分的資料庫 LDF 檔案過大所造成,猜測是因為作業系統維護更新等因素,讓雙方的資料庫同步發生問題且交易紀錄備份的進行失效,所以讓 LDF 暴長大。處理後資料即可正常同步。

心得是日後若有可用性資料庫同步失敗的問題,應該先檢查失敗資料庫的檔案大小,再進行後續處理。


DB2 退出 AG 的步驟,首先從可用性群組 AG 移除資料庫複本 DB2,連結到 DB2 發現對於 AG 的狀態為解析中

接著從 DB2 進行移除可用性群組 AG,進行過程卡住,直接重開機 DB2 後確認 DB2 已經不屬於 AG 當中。

將所有 DB2 的資料庫卸離,並搬移到 DATA 以外的資料夾。

回到 AG (DB1) 從可用性群組加入複本,指定 DB2,並設定相關

等 DB2 還原所有可用性群組資料庫後,發現所有資料庫處於 正在還原... (Restoring) 的狀態

此時需要的不是將所有資料庫使用 🚫 RESTORE DATABASE DBName WITH RECOVERY

而是因為 DB2 的資料庫尚未聯結至 AG,從可用性群組的儀錶板可以觀察

使用下列指令進行聯結

ALTER DATABASE [DatabaseName] SET HADR AVAILABILITY GROUP = [AGName];

完成之後複本異常問題處理完畢 😎

相關連結

SQL Server Availability Group 資料庫備份注意事項

SQL Server Always On Availability Group 可用性群組安裝筆記

SQL Server High Availability 高可用性架構解決方案