數據庫版本 SQL SERVER 2012 企業版,版本號:11.0.5582.0
問題場景: 數據庫配置Alwayson環境,同機房2節點同步自動切換+跨機房異步,在異步機房中選取同一節點做完整備份和日志備份,完整備份為COPY_ONLY方式,完整備份從0:35開始至1:40成功結束,日志備份從00:00開始每15分鍾一次日志備份。DBA在0:48左右手動對數據庫日志文件進行一次收拾操作,收縮操作順利完成,未報任何錯誤。主數據庫處於正常提供服務,每15分鍾產生約200MB的日志備份文件(壓縮備份方式)。
下面是備份出錯情況:
0:30 備份成功
0:45 備份成功
1:00 備份成功
1:15 備份失敗
1:30 備份失敗
1:45 備份成功
錯誤信息:
2017-01-16 01:15:09.59 *** 錯誤: 備份 對於 服務器“SERVER_XXXX”失敗。 (Microsoft.SqlServer.SmoExtended) ***
2017-01-16 01:15:09.59 *** 錯誤: 執行 Transact-SQL 語句或批處理時發生了異常。(Microsoft.SqlServer.ConnectionInfo) ***
2017-01-16 01:15:09.59 *** 錯誤: 輔助副本上數據庫“DB_XXX”的日志備份失敗,因為來自主數據庫的最后一個備份 LSN (0x000840fc:00000420:0001)大於當前本地重做 LSN (0x000840fc:00000418:0001)。此時不需要備份任何日志記錄。請在以后重試該日志備份操作。
BACKUP LOG 正在異常終止。(.Net SqlClient Data Provider) ***
該問題在無人干涉條件下自動恢復,因事務日志備份作業失敗被發現。
--=========================================================================--
原因猜測:
單獨對類似配置的數據庫做日志文件收拾操作不會有類似問題,而單獨對類似配置的數據庫做COPY_ONLY也不會出現問題,很有可能是因為在做COPY_ONLY的完整備份時做日志文件收縮導致。
雖然COPY_ONLY從字面意思上理解不會對日志文件有任何影響,但完整備份期間會影響到CHECKPOINT操作,CHECKPOINT操作又影響到數據庫日志,由於在輔助節點上進行完整備份,因此主節點和輔助節點之間必定達成一致來避免CHECKPOINT問題,但此時DBA手動執行數據庫日志收縮被當成“一個事務日志備份”來處理,因此報主數據庫最后一個備份LSN大於本地重做LSN。
最后當完整COPY_ONLY備份完成后,主數據庫上的最后一個備份LSN被調整會正確狀態,從而默默地修復了該問題。
--=========================================================================--

夜深啦,隨便找個妹子鎮貼,各位湊合下!
