SQL Server的備份策略

如果曾經用過其他大型資料庫系統(例如Oracle或DB2)的DBA應該知道,只要定期做好資料庫的full backup,如果要做資料庫restore的話,把full db backup檔案與現有的transaction log一起restore,就可以還原到完整備份後的任何一個時間點。

SQL Server的備份策略與其他大型資料庫非常不一樣,老實說我也是最近才比較清楚SQL Server的備份策略。在SQL Server連Transaction Log也要定期備份,專家的建議是每天做一次full db backup,如果是交易量大的系統,最好5~10分鐘做一次Transaction Log備份,如果交易量不大的系統,可以大約30~60分鐘做一次Transaction log備份。

為什麼要這麼頻繁做Transaction log的備份,這就要說到SQL Server的Restore方式。SQL Server的Restore是先將full db backup檔案restore後,再restore Transaction Log backup檔案。所以假如是每個小時整點做一次Transaction Log備份,資料庫在10點59分毀損,做了資料庫restore,則只能回復到10點00分的狀態 ,有59分鐘的資料會遺失。即使縮短Transaction Log的備份週期到每5分鐘備份一次,則也只能回復到10點55分的狀態 ,還是會有4分鐘的資料會遺失。而即使設定Transaction Log的備份週期到每分鐘備份一次(這已經是極限了),假如真有這麼賽的事,資料庫在10點59分59秒毀損,剛好有一筆資料在10點59分50秒寫入,則這筆資料是救不回來的。況且每分鐘做Transaction Log的備份,對於系統效能還是會有一定程度的影響。

如上述說明,SQL Server的備份策略有可能造成資料遺失,我想這也可以說明為何一些銀行的重要交易系統不用SQL Server的原因吧。不知道SQL Server 2008是否有改善這項缺點。資料遺失對於企業來說是很嚴重的事,而因為是SQL Server本身的產品限制,我想只能透過硬體或其他HA的機制,確保資料庫不會出事。

相關文章

如何將電腦畫面經由 Chromecast 投放到電視螢幕上

Chrome 的檔案續傳功能

Mac與Android裝置傳輸檔案的方法

使用 Vysor 在電腦上控制 Android 裝置