使用與本地備份不同的備份計劃將 SQL Server 備份到 Azure Blob
我們有一個帶有許多關鍵基礎的生產 SQL Server。目前,我們有一個維護計劃,執行以下操作:
- 每週六創建一個完整備份,TTL 為 4 週
- 每晚(星期六除外)創建一個 DIFF 備份,TTL 為 2 週
- 每小時創建一個 LOG 備份,TTL 為 1 週
因此,我們能夠將數據庫恢復到過去 4 週的任何星期六、過去 2 週的任何一天(晚上)以及過去一周的幾乎任何特定時間點。此外,我們使用的是Ola Hallengren的備份腳本,數據庫用於我們的 SharePoint 和 TFS。
我們認識到 4 週並沒有那麼長,而且這些備份最終都是本地備份,所以如果它們所在的物理伺服器出現嚴重問題,我們就會遇到麻煩。
我想利用 Azure Blobs 來儲存線上備份(對於 FULL 和 DIFF,因為 LOG 可以保留在本地),但是我在想出一個關於如何做到這一點的好計劃時遇到了一些問題。主要問題是我們的網際網路連接速度不是很快(我們辦公室只有對稱的 30/30),而且 Azure 需要花錢(Blob 很便宜,但仍然如此)。但請不要誤會,網路速度是首要問題。
我想為 Azure 使用與本地備份不同的備份計劃,但很快就遇到了一個問題 - 如果兩個備份位置的完整備份不同並且我不能在如果我想要不同的 Blob 時間表,這兩個位置。
舉一個更實際的例子:假設我想在每個月的第一個週末將完整備份保存到 Azure 中……如果我的本地備份相同,那將不是問題。但是現在,如果我只複製到 Azure 的完整備份,那麼儲存在 Azure 中的每日 DIFF 備份將不起作用。如果我對 Azure 進行非僅複製完整備份,則本地備份會損壞。此外,第一次 Azure 備份之後的第一次 FULL 本地備份無論如何都會破壞 Azure 上的後續 DIFF 備份。
我認為我唯一能做的就是減少進行 FULL 備份的頻率(例如,每月 1 個 FULL?),相應地增加 TTL,然後為 Azure 制定相同的備份計劃(使用
MIRROR
腳本中的選項)。但是我擔心這對於完整備份來說通常是不夠的。或者,Ola 的腳本有一個ModificationLevel
參數,但我不確定如何使用它來優化儲存空間使用率。或者,我可以使用文件同步到 Azure 解決方案(而不是 SQL 備份到 Azure 解決方案),但這確實是同一個問題。
有沒有辦法為 Azure 制定與本地 SQL 備份不同的備份計劃?
正如@LowlyDBA 指出的那樣,“有一個單獨的工作將文件上傳到 Azure BLOB”是正確的方法。您根本不能有兩個單獨的作業來管理差異備份或日誌備份。而且你真的不想讓任何 BACKUP 命令執行很長時間。
只需有一個本地備份計劃和一個使用 AZCopy 將部分或全部生成的備份文件推送到 Azure Blob 儲存的輔助作業。
這是關於使用 AzCopy 將 SQL Server 備份複製到 Windows Azure 儲存這一主題的舊部落格文章。您還可以嘗試使用新的Azure 文件同步 服務自動將文件移動到 Azure。