SQL Server 2012 事務日誌需要創建數據庫鏡像嗎?
在 Microsoft 設置數據庫鏡像的說明中,對事務日誌的討論有些冗長。過去我們從來沒有為事務日誌煩惱過;我們現在真的需要嗎?
事務日誌實際上不是完整備份之後的增量備份嗎?
除非數據庫驅動器在建構鏡像時發生故障,否則鏡像不會從主伺服器獲取在備份文件被複製和恢復到鏡像伺服器時發生的所有事件嗎?
在我看來,單獨的完整備份可能會更慢,但會更簡單。
附加資訊
在建構鏡像時,Microsoft 的文件指示我們恢復上一次完整備份(加上最後一次差異,如果有的話)和所有後續事務日誌。
除非在建構鏡像時將數據庫置於單使用者模式,否則在最後一次恢復的數據和鏡像生效的時間之間至少會有一個小的活動間隙。
鏡子會填補這個空白嗎(就像它暫時離線時一樣)?
如果鏡像伺服器上的數據庫路徑不同,說明中有一個警告:我們不能“添加”TL。如果必須跳過幾個 TL,則活動差距可能會很大。
這就是我上面的意思:在建構鏡像時忽略事務日誌,讓鏡像填補空白不是更簡單嗎?
第一個問題的簡短回答是肯定的,您的數據庫必須處於完全恢復模式才能使用數據庫鏡像功能:
數據庫必須使用完全恢復模式。簡單和大容量日誌恢復模型不支持數據庫鏡像。因此,對於鏡像數據庫,批量操作始終會被完全記錄。有關恢復模型的資訊,請參閱恢復模型 (SQL Server)。
在數據庫鏡像方案中,對數據庫(主體數據庫)的每次更新都會立即在數據庫(鏡像數據庫)的單獨完整副本中複製。主體伺服器實例將每個日誌記錄立即發送到鏡像伺服器實例,鏡像伺服器實例將傳入的日誌記錄應用到鏡像數據庫,並不斷向前滾動。有關詳細資訊,請參閱數據庫鏡像。
要回答您的第二個(和第三個)問題 - 這是一個過度簡化,但您可以這樣看待它。我強烈建議使用上面提供的連結更詳細地閱讀有關事務日誌的資訊。事務日誌不僅僅用於同步兩個數據庫 - 它還用於實現時間點恢復。嘗試了解事務日誌在每種不同恢復模式下的行為 - 這將有助於您理解為什麼需要完整日誌記錄才能在 SQL Server 上實現高可用性。
事務日誌支持以下操作:
- 個人事務恢復。
- 在 SQL Server 啟動時恢復所有未完成的事務。
- 將還原的數據庫、文件、文件組或頁面前滾到故障點。
- 支持事務複製。
- 支持高可用性和災難恢復解決方案:Always On 可用性組、數據庫鏡像和日誌傳送。
編輯
根據您添加的其他資訊,答案是否定的。設置數據庫鏡像時不能忽略事務日誌 - 鏡像數據庫必須是源的精確副本,然後才能啟動。一旦建立起來,是的,它會填補空白——但這只有在你開始鏡像之後才有效。我通常在非工作時間啟用鏡像,進行完整備份並在將備份複製到鏡像伺服器時使數據庫離線。