SQL Server 备份与恢复之四:备份类型和选项
本文主要來源于Microsoft《SQL Server 2008 R2聯(lián)機叢書》。轉(zhuǎn)裁請注明出處。
一、完整備份
“完整備份”包含特定數(shù)據(jù)庫(或者一組特定的文件組或文件)中的所有數(shù)據(jù),以及可以恢復(fù)這些數(shù)據(jù)的足夠的日志。
二、差異備份
“差異備份”基于數(shù)據(jù)的最新完整備份。這稱為差異的“基準(zhǔn)”或者差異基準(zhǔn)。差異基準(zhǔn)是讀/寫數(shù)據(jù)的完整備份。差異備份僅包含自建立差異基準(zhǔn)后發(fā)生更改的數(shù)據(jù)。通常,建立基準(zhǔn)備份之后很短時間內(nèi)執(zhí)行的差異備份比完整備份的基準(zhǔn)更小,創(chuàng)建速度也更快。因此,使用差異備份可以加快進行頻繁備份的速度,從而降低數(shù)據(jù)丟失的風(fēng)險。通常,一個差異基準(zhǔn)會由若干個相繼的差異備份使用。還原時,首先還原完整備份,然后再還原最新的差異備份。
經(jīng)過一段時間后,隨著數(shù)據(jù)庫的更新,包含在差異備份中的數(shù)據(jù)量會增加。這使得創(chuàng)建和還原備份的速度變慢。因此,必須重新創(chuàng)建一個完整備份,為另一系列的差異備份提供新的差異基準(zhǔn)。
每個數(shù)據(jù)備份都包括部分事務(wù)日志,以便備份可以恢復(fù)到該備份的結(jié)尾。
第一次數(shù)據(jù)備份之后,在完整恢復(fù)模式或大容量日志恢復(fù)模式下,需要定期進行“事務(wù)日志備份”(或“日志備份”)。每個日志備份都包括創(chuàng)建備份時處于活動狀態(tài)的部分事務(wù)日志,以及先前日志備份中未備份的所有日志記錄。
三、事務(wù)日志備份(僅用于完整恢復(fù)模式或大容量日志恢復(fù)模式)
在完整恢復(fù)模式或大容量日志恢復(fù)模式下,需要定期進行“事務(wù)日志備份”(或“日志備份”)。每個日志備份都包括創(chuàng)建備份時處于活動狀態(tài)的部分事務(wù)日志,以及先前日志備份中未備份的所有日志記錄。不間斷的日志備份序列包含數(shù)據(jù)庫的完整(即連續(xù)不斷的)日志鏈。在完整恢復(fù)模式下(或者在大容量日志恢復(fù)模式下的某些時候),連續(xù)不斷的日志鏈讓您可以將數(shù)據(jù)庫還原到任意時間點。
在創(chuàng)建第一個日志備份之前,您必須先創(chuàng)建一個完整備份(如數(shù)據(jù)庫備份)。因此,定期備份事務(wù)日志十分有必要,這不僅可以使工作丟失的可能性降到最低,而且還能截斷事務(wù)日志。
四、尾日志備份(僅用于完整恢復(fù)模式或大容量日志恢復(fù)模式)
對于大多數(shù)情況,在完整恢復(fù)模式或大容量日志恢復(fù)模式下,SQL Server 2005 及更高版本要求您備份日志結(jié)尾以捕獲尚未備份的日志記錄。還原操作之前對日志尾部執(zhí)行的日志備份稱為“結(jié)尾日志備份”。
SQL Server 2005 及更高版本通常要求您在開始還原數(shù)據(jù)庫前執(zhí)行結(jié)尾日志備份。結(jié)尾日志備份可以防止工作丟失并確保日志鏈的完整性。將數(shù)據(jù)庫恢復(fù)到故障點時,結(jié)尾日志備份是恢復(fù)計劃中的最后一個相關(guān)備份。如果無法備份日志尾部,則只能將數(shù)據(jù)庫恢復(fù)為故障前創(chuàng)建的最后一個備份。
并非所有還原方案都要求執(zhí)行結(jié)尾日志備份。如果先前的日志備份中包含恢復(fù)點,或者您準(zhǔn)備移動或替換(覆蓋)數(shù)據(jù)庫,并且在最新備份后不需要將該數(shù)據(jù)庫恢復(fù)到某一時間點,則無需使用結(jié)尾日志備份。并且,如果日志文件受損且無法創(chuàng)建結(jié)尾日志備份,則必須在不使用結(jié)尾日志備份的情況下還原數(shù)據(jù)庫。最新日志備份后提交的任何事務(wù)都將丟失。
如果數(shù)據(jù)庫處于聯(lián)機狀態(tài),每當(dāng)您準(zhǔn)備對數(shù)據(jù)庫執(zhí)行的下一個操作為還原操作時,請在開始還原順序之前使用 WITH NORECOVERY 備份日志尾部。注意:為防止出錯,必須使用 NORECOVERY 選項。
如果數(shù)據(jù)庫處于脫機狀態(tài)并且無法啟動,請嘗試執(zhí)行結(jié)尾日志備份。由于此時不會發(fā)生任何事務(wù),所以 WITH NORECOVERY 是可選的。如果數(shù)據(jù)庫受損,請使用 WITH CONTINUE_AFTER_ERROR (“出錯時繼續(xù)”)或 WITH NO_TRUNCATE。
五、部分(文件/文件組)備份(僅用于完整備份或差異備份)
在 SQL Server 2005 中引入了部分備份和部分差異備份。這些備份的設(shè)計目的在于:為在簡單恢復(fù)模式下對包含一些只讀文件組的數(shù)據(jù)庫的備份工作提供更多的靈活性。但是,所有恢復(fù)模式都支持這些備份。
SQL Server 2008 支持下列類型的文件備份。
(1) 部分備份
備份主文件組、所有讀/寫文件組以及任何選擇指定的只讀文件或文件組中的所有完整數(shù)據(jù)。只讀數(shù)據(jù)庫的部分備份僅包含主文件組。
(2)部分差異備份
這種備份僅包含自同一組文件組的最新部分備份以來發(fā)生了修改的數(shù)據(jù)區(qū)。
可以分別備份和還原數(shù)據(jù)庫中的文件。使用文件備份使您能夠只還原損壞的文件,而不用還原數(shù)據(jù)庫的其余部分,從而加快了恢復(fù)速度。例如,如果數(shù)據(jù)庫由位于不同磁盤上的若干個文件組成,在其中一個磁盤發(fā)生故障時,只需還原故障磁盤上的文件。但計劃和還原文件備份可能會十分復(fù)雜;因此,只有在文件備份能夠為您的還原計劃帶來明顯價值時,才應(yīng)使用這種備份方式。
SQL Server 支持下列類型的文件備份。
(1)文件備份
一個或多個文件或文件組中所有數(shù)據(jù)的完整備份。
重要提示: 在簡單恢復(fù)模式下,文件備份基本上僅限于只讀輔助文件組。您可以創(chuàng)建讀/寫文件組的文件備份,但必須先將文件組設(shè)置為只讀,并執(zhí)行差異只讀文件備份,然后才能還原讀/寫文件備份。
(2)差異文件備份
一個或多個文件的備份,包含自每個文件的最新完整備份之后發(fā)生了更改的數(shù)據(jù)區(qū)。
注意: 在簡單恢復(fù)模式下,此備份假定自完整備份之后已經(jīng)將數(shù)據(jù)更改為只讀。
六、備份選項
1、僅復(fù)制備份
通常,進行備份會更改數(shù)據(jù)庫并影響其后備份的還原方式。但是,有時需要針對特殊目的執(zhí)行備份,同時不影響數(shù)據(jù)庫的整體備份和還原過程。為此,SQL Server 2005 中引入了僅復(fù)制備份。這種備份獨立于 SQL Server 備份的正常順序,可用于完整備份(所有恢復(fù)模式)和日志備份(僅限于完整恢復(fù)模式和大容量日志恢復(fù)模式)。
事務(wù)日志從不在僅復(fù)制備份后出現(xiàn)截斷。僅復(fù)制備份記錄在 backupset 表的 is_copy_only 列中。
2、備份壓縮
SQL Server 2008 Enterprise 中引入了備份壓縮。從 SQL Server 2008 R2 開始,SQL Server 2008 R2 Standard 和所有更高版本都支持備份壓縮。SQL Server 2008 的每個版本和更高版本都可以還原已壓縮的備份。
壓縮的備份具有以下限制條件:
壓縮的備份和未壓縮的備份不能共存于一個介質(zhì)集中。
早期版本的 SQL Server 無法讀取壓縮的備份。
NTbackup 無法共享包含壓縮的 SQL Server 備份的磁帶。
因為相同數(shù)據(jù)的壓縮的備份比未壓縮備份小,所以壓縮備份所需的設(shè)備 I/O 通常較少,因此通常可大大提高備份速度。默認(rèn)情況下,壓縮會顯著增加 CPU 的使用,并且壓縮進程所消耗的額外 CPU 可能會對并發(fā)操作產(chǎn)生不利影響。
轉(zhuǎn)載于:https://blog.51cto.com/jimshu/898152
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的SQL Server 备份与恢复之四:备份类型和选项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量安装zabbix-agent脚本
- 下一篇: 病案分析题女性,35岁,因为&q