我正在開發一個非常大的資料庫(250 多個演出),包含超過 2.25 億筆記錄。該資料庫因其龐大的規模而難以使用。該資料庫是唯讀的。
我們正在尋求更快的硬件,但無論哪種方式,我都試圖找到使用資料庫的最有效方法。該資料庫必須每晚從主資料庫更新,且停機時間必須保持在最低限度。主資料庫由第三方維護。
我正在嘗試找到更新資料庫的最佳方法,但我運氣不佳。我研究了差異備份和交易日誌備份,但為了應用它們,必須先還原完整備份。在我的例子中,這完全違背了差異備份的目的,因為我還不如在主資料庫上完成完整備份,然後只需每晚恢復完整備份,因為這比恢復完整備份並每晚應用差異備份要快。
我希望有一個解決方案,我可以完成一次完整備份(或可能每月一次),然後從那時起,只需應用基於彼此構建的原始完整備份的某種類型的增量備份。這將使停機時間保持在最短的水平,因為一旦我完成第一次完整備份,我只會每晚應用增量備份。我會在每次“增量”備份後重建索引。我還沒有成功找到這樣的解決方案。
我現在剛剛深入研究資料庫備份和效能並進行了大量研究,不斷閱讀 MSDN - 但似乎這個解決方案不是一個選擇。我想我會問作為最後的手段 - 當然這裡有一些管理大型資料庫,每晚進行恢復是不切實際的。
有什麼建議麼?我也願意接受有關性能的建議/鏈接,因為我從未使用過如此大小的資料庫。
答案1
你正在描述日誌傳送,但是您想使用“差異”備份而不是日誌備份,這是您的方法的問題。透過日誌傳送,您可以還原資料庫一次,然後套用在主網站上建立的日誌備份,並且您永遠不必重做初始完整備份還原。只需繼續套用每隔幾個小時發送的日誌,您就會獲得唯讀副本。
答案2
也許這個第三方會設立某種複製每晚移動更改?
答案3
如果您被允許存取包含生產資料庫的環境,且主資料庫和唯讀資料庫可以是執行 SQL2005 / SQL2008 企業版的相同資料庫實例,您可以使用資料庫快照。這將為您提供資料庫的即時時間點只讀副本。
http://msdn.microsoft.com/en-us/library/ms175158.aspx
如果您不允許存取生產環境,您可以詢問他們是否願意在您的環境中設定鏡像資料庫 - 這也將允許您運行快照,但您需要企業版軟體和許可證。
http://msdn.microsoft.com/en-us/library/ms175511.aspx
如果他們/您沒有使用 Enterprise 或您需要接近即時的數據,那麼交易複製是另一種選擇。
http://msdn.microsoft.com/en-us/library/ms151176.aspx
如果您的復原時間太長,請考慮購買備份磁碟壓縮軟體 - 這通常會根據所儲存的資料類型加快備份/復原速度。
答案4
Remus 先回答了這個問題,但日誌傳送場景的工作原理如下:
- 第三方於 1 月 1 日向您發送資料庫的完整備份
- 您以備用模式在 norecovery 中還原資料庫,這會將資料庫設定為唯讀(僅限 dbo)
- 第三方在 1/2 向您發送交易日誌備份(或多個),您將它們套用到資料庫,使變更保持最新。套用備份後,資料庫將再次處於備用模式,只讀
- 每天重複這個過程