Backup
想過這個 SQL Server 備份計劃嗎?
我剛開始一份新工作,我正在審查數據庫維護計劃。我有相當多的編寫 SQL 的經驗,但沒有太多的數據庫管理經驗。我上一份工作是在一家大公司,他們不讓普通人碰那種東西。
我們被鎖定在 SQL Server 2000 中(它嵌入在一些相當舊的軟體中,我們還不能升級)。目前的維護計劃(完全恢復模式)執行以下操作:
早上 6 點至晚上 11 點每小時:
backup log Accounting to Accounting_Logs with noinit
每天凌晨 1 點,都會發生這種情況:
backup Log Accounting WITH TRUNCATE_ONLY
DBCC SHRINKDATABASE (Accounting, TRUNCATEONLY)
backup database Accounting_ReadOnly to Accounting with init
然後在凌晨 3 點:
- 所有索引都被重建
這是一個體面的計劃嗎?這會給我們提供易於恢復的良好備份嗎?我知道我要求很多,但任何想法/評論/建議將不勝感激。
如果您需要更多資訊,請告訴我。謝謝!
雖然這是功能性的,但這裡有一些漏洞會在出現問題時難以恢復:
- 我不確定您為日誌備份的設備是什麼,但根據我在這裡看到的情況,您將所有日誌備份附加到同一文件/設備以進行所有日誌備份操作。這可能很麻煩,並且可能會導致儲存問題。
- BACKUP LOG … WITH TRUNCATE_ONLY 是多餘的,可能會導致您的數據失去。您的日誌截斷發生在每次日誌備份之後,因此這應該足以管理您的日誌,儘管您應該考慮將日誌備份安排為 24/7 每小時而不是早上 6 點到晚上 11 點。
- 使用目前語法的完整備份將在每次執行時覆蓋您之前的備份,因此除非您在完整備份執行之間將該備份保存到磁帶,否則您將無法恢復上一次完整備份之前的內容。
- 出於各種原因,定期收縮數據庫是非常糟糕的做法。Paul Randal在這裡談得更多。
一般來說,您的備份/維護計劃如下所示:
- 每晚(凌晨 1 點)執行完整備份
- 每小時執行一次事務日誌備份
- 每晚重建碎片索引
這是一個足夠可靠的計劃,看起來你只需要填補一些空白。不幸的是,備份/恢復是一個很大的話題。我建議您在SQLServerPedia(現為 ToadWorld)上閱讀有關此內容的資訊。由於您致力於 SQL 2000,這限制了您使用現有的一些工具。但是,存在大量程式碼範例來微調和完善您目前存在的程式碼。
至於索引碎片,沒有看到您的程式碼,我無法評論任何可能的問題。如果到目前為止它一直執行良好,則可能沒有問題,但您可以在MSDN上閱讀有關管理此問題的更多資訊。