假設在下面幾個時間段中,一個數(shù)據(jù)庫積累插入了如下數(shù)據(jù):
故名思意,完整數(shù)據(jù)庫備份包括完整的數(shù)據(jù)庫信息。它包括數(shù)據(jù)庫的數(shù)據(jù)文件和備份結尾的部份活動事務日志。
完整備份基本語法如下:
BACKUP DATABASE AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak'
差異性數(shù)據(jù)庫備份包括自從上一次完整性備份以來所有改變的數(shù)據(jù)頁,以及備份結尾的部份活動事務日志。
差異備份和完整備份的語法很相似,唯一不同的是加上了DIFFERENTIAL選項,如下:
BACKUP DATABASE AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak' WITH DIFFERENTIAL
事務日志備份的內(nèi)容是從還未被備份的事務日志開始,直到備份結尾的最后一個事務日志為止。需要注意的是執(zhí)行事務日志的前提是你的數(shù)據(jù)庫恢復模型必須是完整恢復模型或是批量日志恢復模型(恢復模型)
通常情況下大家會以為完整性備份會截斷事務日志,以便下一次備份日志時不再重復備份,但這是錯誤的。完整備份不會截斷事務日志。
事務日志備份的語法和完整備份相似,唯一不同的是第二個關鍵字,把database換成log,如下:
BACKUP LOG AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak'
答案取決于你本身,取決你的備災恢復需求,取決于你可以接受的丟失數(shù)據(jù)量的多少,取決于你日常數(shù)據(jù)庫的備份操作,取決于數(shù)據(jù)庫從災難中恢復過來的時間。
假如你的環(huán)境允許丟失5分鐘的數(shù)據(jù),那么你必須每5分鐘執(zhí)行一次某種備份。對于上述的幾種備份來說,每5分鐘執(zhí)行一次完整備份的規(guī)則顯得過于頻繁且影響其他用戶的操作。對于差異備份來說,如果一次完整備份后,數(shù)據(jù)庫又進行了大量的修改,那么差異備份同樣不適合。所以,上述情況用事務日志備份應該是最合適的,因為它僅備份從最后一次事務日志備份后所產(chǎn)生的新事務。
然而,當你從事務日志恢復數(shù)據(jù)庫時,你需要還原所有相關的備份,包括從起始的數(shù)據(jù)庫備份點到最后一個事務日志。假如還原點是很久以前的時間點,那么要還原的事務日志也許會很多很多。
你可以使用差異備份來提前事務日志備份的起始還原點。但是,對于一個行動的數(shù)據(jù)來說,差異備份會比事務日志備份占用更長的時間,影響更多的數(shù)據(jù)庫操作和消耗更多的磁盤空間。
當你考慮使用哪種備份方案時,你可以參考下面這幾點:
本文翻譯自sqlbackuprestore,更多精彩內(nèi)容請瀏覽http://www.sqlbackuprestore.com