Sql-Server

備份和恢復 10-20 個 SQL Server 數據庫到同步狀態?

  • March 1, 2016

我需要備份 10-20 個大小在 10-50 GB 之間的 SQL Server 2008 R2 數據庫,同時它們線上並由單個企業應用程序同時使用。我還需要將它們恢復到在所有數據庫之間基本同步的狀態(我可以承受數據庫之間最多幾秒鐘的不同步)。目的是為 QA/DEV 環境擷取生產數據。

我強烈希望不要求數據庫在完全恢復中執行,並提出一種備份方法,該方法專門用於為 QA 環境擷取數據,並且獨立於不受我控制的主備份過程。

對於我的客戶,擷取 20 個完整備份(每個大約 30 GB)需要 1-2 個小時。這使得按順序進行完整備份是不可接受的,因為在簡單恢復中執行時數據庫會過於不同步。

我正在尋找比這些更好的想法:

想法 1:虛擬機磁碟的 SAN 級快照。從快照中 xcopy MDF/LDF。

一旦複製的文件附加到不同的伺服器實例,它的恢復過程應該會生成幾乎同時快照的一致數據庫。

Google搜尋讓我確信這是一個壞主意,至少因為我可能會與 master/msdb/etc 不同步。

IDEA 2:跨所有數據庫編排複雜的備份和同步恢復

這要求我要求數據庫在完全恢復中執行,這是我不想要的。在截止日期 (T0) 之前為所有數據庫啟動並行備份。達到 T0 後,備份所有日誌(最多需要幾分鐘)。獲取生成的無數備份並嘗試恢復它們並向前/向後滾動日誌以獲得相對於 T0 跨數據庫的某種一致狀態。

這需要大量的計劃和腳本才能可靠地使用它,所以我會竭盡全力避免它。

我是否缺少其他解決方案?

**PS1:**我希望能夠使用db snapshots。這個想法是在每個數據庫上啟動一個快照(應該在幾秒鐘內完成),然後在接下來的幾分鐘/小時內按順序完全備份每個數據庫。然後將它們全部還原到不同的伺服器上,並將每個還原為快照。AFAIK 這種情況是不可能的,因為快照不能與數據庫一起備份。它們只能在創建它們的伺服器上原地回滾。此外,他們需要企業版,我沒有為所有客戶提供。

**PS2:**如果您知道能夠生成跨數據庫同步備份的第 3 方解決方案,請提及。

我需要備份單個企業應用程序同時使用的 10-20 個 SQL Server 數據庫,同時它們處於聯機狀態,以便將它們恢復到在所有數據庫之間基本同步的狀態

您正在尋找的是跨所有客戶數據庫的一致備份,您應該使用完整備份以及Marked Transactions(以粗體添加的重點):

當您對兩個或多個數據庫、相關數據庫進行相關更新時,您可以使用事務標記將它們恢復到邏輯一致的點。但是,此恢復會失去在用作恢復點的標記之後送出的任何事務。僅當您正在測試相關數據庫或您願意失去最近送出的事務時,才適合標記事務。

在此處輸入圖像描述

確保使用 進行臨時事務日誌備份COPY_ONLY,否則恢復將很痛苦,因為沒有任何臨時事務日誌備份COPY_ONLY都會破壞日誌鏈。作為預防措施,您可以限制使用者 COPY_ONLY使用備份

我需要 SQL Server 2008 R2 及更高版本的解決方案。數據庫大小最多為每個 db 50 GB,備份所有數據庫的時間可能超過 1-2 小時。

標記的交易將適用於您的情況。進行並行備份的唯一方法是對 STRIPE它們進行備份,但最終要確保不會失去備份條帶。為了使它們更快,您可以使用BUFFERCOUNTMAXTRANSFERSIZE

您應該使用備份壓縮以及啟用即時文件初始化

參考

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