Sql-Server

將(日誌備份)LSN 應用到可用性組的輔助節點

  • December 21, 2021

由於主節點的重新啟動和文件共享一起下降,我今天有一個配置為永遠線上的測試實例。我遇到了一堆問題才能再次獲得輔助功能,在此期間我必須將其從 AG 中刪除並再次添加。在此期間(直到現在為止),日誌備份正在主伺服器上執行,當我嘗試將這些備份應用到輔助伺服器時,出現以下錯誤:

無法應用此備份集,因為它位於與數據庫不一致的恢復路徑上。恢復路徑是將數據庫帶到特定恢復點的數據和日誌備份序列。查找要還原的兼容備份,或還原數據庫的其餘部分以匹配此備份集中的恢復點,這會將數據庫還原到不同的時間點。有關恢復路徑的詳細資訊,請參閱 SQL Server 聯機叢書。

當我看著sys.dm_hadr_database_replica_states

  • last_hardened_lsn: 43000043815500001

當我查看msdb.dbo.backupset(備份時間)時:

  • 備份時間:上午 9:50
  • first_lsn: 43000043783000001
  • last_lsn: 43000043887200001

我的問題是,是否有任何方法可以從 LSN 4300004381​​5500001開始應用此日誌備份?

我可以恢復所有內容然後連接我的 AG,因為這是一個非常小的實例,我只想知道是否有更簡單的方法,而不是從頭開始做所有事情。我在網上查了一下,確實看到了 stopbeforemark 或 stopatmark 的選項,但我正在尋找類似 stopaftermark 的東西。

您有 2 個選項:

  • 簡單的- 因為這是測試實例及其次要實例。

    • 停止主節點上的日誌備份。
    • 從 AG 中刪除 db/s。
    • 如果數據庫很小,請進行差異備份或完整備份。
    • 然後使用 norecovery 在輔助設備上恢復。
    • 在主節點上進行額外的日誌備份。
    • 使用 norecovery 恢復在輔助節點上進行的附加日誌備份。
    • 將 dbs 加入 AG。
  • 稍微難一點——

    • 在主伺服器上安裝sp_restoregene
    • 從 AG 中刪除 db/s。
    • 為有問題的 db/s 執行它,它將生成完整和日誌備份序列with stopat
    • 在輔助上恢復序列。
    • 重新加入AG。

(我在上面說的有點困難,因為如果您沒有進行時間點恢復並且您是第一次這樣做,請先對其進行測試以使其舒適)。

您的 AG 應配置為自動故障轉移,以防主伺服器出現故障。它會變魔術;沒有必要做任何你將來必須做的事情。

您還需要將備份首選項配置為僅在主伺服器上執行。

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