備份和恢復 10-20 個 SQL Server 數據庫到同步狀態?
我需要備份 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
它們進行備份,但最終要確保不會失去備份條帶。為了使它們更快,您可以使用BUFFERCOUNT
和MAXTRANSFERSIZE
。您應該使用備份壓縮以及啟用即時文件初始化。
參考