Sql-Server

數據庫快照和VSS數據庫快照備份有什麼區別?

  • October 8, 2021

我通過 SAN 磁碟工具配置了數據庫備份。在備份集表中,我可以看到 VSS 寫入器服務正在執行快照類型的完整備份。

伺服器上有 85 個數據庫。

我知道數據庫快照的概念,最初它的大小為 0。並且隨著源數據庫的更新,它會將更改推送到快照,從而增加快照大小。

我想問是否:

  1. 數據庫快照和VSS數據庫快照備份(通過VSS寫入服務)是同一個概念嗎?
  2. 對於數據庫快照和 vss 數據庫快照備份 - 假設有 85 個項目(快照/快照備份),那麼這將導致 sql 伺服器上的整體 IO 較差,因為它必須定期維護(隨著源數據庫的變化而更新)快照85 個數據庫?

回答你的第一個問題

數據庫快照和VSS數據庫快照備份(通過VSS寫入服務)是同一個概念嗎?

不,它們是不同的概念。

數據庫快照

數據庫快照 (SQL Server) (Microsoft | SQL Docs)使您能夠在同一實例上創建現有數據庫的只讀副本。

這不是備份,您可以在參考文章的數據庫快照限制部分中閱讀:

您無法備份或恢復數據庫快照。

您是正確的,I/O 可能會成為源數據庫的問題,如同一篇文章的源數據庫限制部分所述:

由於每次更新頁面時對快照的寫時複製操作導致源數據庫上的 I/O 增加,性能會降低。

VSS 數據庫快照

SQL Server 備份應用程序 - 卷影複製服務 (VSS) 和 SQL Writer是確保您可以創建給定數據庫的**快照備份的程序。**這被認為是有效的數據庫備份,但有限制。

當通過第 3 方工具創建數據庫快照時,這通常會觸發 Windows 主機系統的 VSS 編寫器。SQL Writer將處理 SQL Server 端的VSS 互動

使用快照功能創建的數據庫備份將在msdb備份歷史記錄中的msdb.dbo.backupset.is_snapshot列中進行相應標記。

根據不支持的文件,不支持 TLOG 備份。

SQL 編寫器不支持日誌備份。

回答你的第二個問題

對於數據庫快照和 vss 數據庫快照備份 - 假設有 85 個項目(快照/快照備份),那麼這將導致 sql 伺服器上的整體 IO 較差,因為它必須定期維護(隨著源數據庫的變化而更新)快照85 個數據庫?

根據提供的文件,只有數據庫快照會導致長期 I/O 問題

數據庫快照備份僅在創建快照期間導致短期 I/O問題。

…除非您在談論 VMware 快照,這是一個完全不同的問題。如果是這種情況,那麼這個後續問題將更適合 severfault.com

從評論中回答後續問題

快照備份怎麼能這麼快完成?

使用VSS 服務SQL Writer 服務VSS 數據庫快照由外部源觸發。為什麼它們很快,取決於執行快照的環境如何實現快照功能,還取決於所涉及的底層技術。

根據我從 VMware 和 Commvault 環境中獲得的資訊,我只能提供關於 NetApp 如何執行此類操作的二手說明。Commvault 是我們環境中的領導者,因為它執行我們的備份。

  1. Commvault 觸發伺服器的快照。
  2. VMware 收到快照請求並將其傳遞給虛擬伺服器。
  3. (虛擬)Windows 伺服器接收請求並觸發 VSS 服務以執行快照。
  4. SQL Writer 服務被通知並凍結數據庫上的讀/寫。
  5. 當一切都準備好進行快照並同步後,NetApp 層將在一切都被凍結的精確時刻執行伺服器磁碟的塊級快照。

因為 NetApp 在磁碟級別提供了基於塊級別指針的快照功能(您必須向他們詢問詳細資訊),所以自上次快照以來所有修改的塊都被計算在內,並且指針知道在哪裡可以找到伺服器的狀態快照時間。

  1. 執行快照後(通常以毫秒為單位),SQL Server 實例上凍結的 I/O 將被釋放,數據庫再次可用。

我認為 vss 快照備份很快,因為它就像普通快照一樣工作。當對原始數據庫進行更改時,備份必須不斷保持最新。因此,隨著源數據庫的更改,整個磁碟 IO 會變慢,因為更改也必須傳遞給快照備份

是的,我同意數據庫快照會由於必須記錄到數據庫快照的更改而導致持續的 I/O 延遲。

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