SQL Server 2008 的恢復(fù)和備份模式
事務(wù)日志
每一個(gè)SQL Server數(shù)據(jù)庫(kù)在硬盤(pán)上包含至少兩個(gè)物理文件,一個(gè)MDF文件和一個(gè)LDF文件。MDF文件包含所有被存儲(chǔ)的實(shí)際數(shù)據(jù)。LDF文件或日志文件,包含了每一個(gè)數(shù)據(jù)變化的紀(jì)錄。記錄每個(gè)數(shù)據(jù)變化使撤銷(xiāo)操作和“時(shí)間點(diǎn)”備份成為可能。一個(gè)時(shí)間點(diǎn)的備份使我們能夠恢復(fù)我們希望的任何時(shí)間點(diǎn)的數(shù)據(jù)庫(kù),昨天,兩個(gè)小時(shí)前,兩分鐘前。默認(rèn)情況下,MDF和LDF文件位于硬盤(pán)上SQL Server下的Server\Version\MSSQL\Data 目錄下。
雖然這有歷史記錄不可能永遠(yuǎn)保存在事物日志文件中。如果這樣做,隨著時(shí)間的推移日志文件的大小將變得巨大和無(wú)法控制。相反,日志文件應(yīng)該定期清理,或“刪節(jié)” 。在被刪節(jié)之間有多少時(shí)間允許日志文件增長(zhǎng)是由數(shù)據(jù)庫(kù)“恢復(fù)模式”決定的。
恢復(fù)模式
一個(gè)“恢復(fù)模式”決定一個(gè)數(shù)據(jù)庫(kù)的事務(wù)日志如何保存。每個(gè)數(shù)據(jù)庫(kù)都有自己的恢復(fù)模式設(shè)置。這意味著SQL Server可以包含多個(gè)數(shù)據(jù)庫(kù),每一個(gè)都有自己的恢復(fù)模式,并且獨(dú)于其他數(shù)據(jù)庫(kù)的配置。
要查看一個(gè)數(shù)據(jù)庫(kù)恢復(fù)模式設(shè)置,打開(kāi)SQL Server服務(wù)器管理,右鍵點(diǎn)擊一個(gè)數(shù)據(jù)庫(kù),然后選擇屬性。一旦屬性對(duì)話(huà)框中打開(kāi)后,從左邊的菜單選擇“選項(xiàng)”。
恢復(fù)模式可以是完全,簡(jiǎn)單,或批日志恢復(fù)。
簡(jiǎn)單恢復(fù)
當(dāng)一個(gè)數(shù)據(jù)庫(kù)設(shè)置為簡(jiǎn)單恢復(fù)模式,這意味著日志文件不會(huì)被永久保存。因此,當(dāng)執(zhí)行一個(gè)TSQL聲明,任何改變被寫(xiě)入數(shù)據(jù)和日志文件,但這些日志文件在被刪節(jié)(清理)之前不會(huì)保存很長(zhǎng)一段時(shí)間。這刪節(jié)又SQL Server簽發(fā)“檢查點(diǎn)”所造成的。對(duì)于造成檢查點(diǎn)事件完整描述,請(qǐng)參閱Microsoft文章: http://msdn.microsoft.com/en-us/library/ms188748.aspx。刪節(jié)日志文件對(duì)我們意味著,這些日志文件不能被用于數(shù)據(jù)庫(kù)恢復(fù)。這是因?yàn)槲覀儫o(wú)法控制日志何時(shí)將被清除。因此,當(dāng)一個(gè)數(shù)據(jù)庫(kù)設(shè)置為簡(jiǎn)單恢復(fù),唯一的可選的備份類(lèi)型是一個(gè)全備份。
完整備份恢復(fù)你所有的數(shù)據(jù),但你不能要求它恢復(fù)我在某一特定的時(shí)間點(diǎn)的所有數(shù)據(jù)。對(duì)于時(shí)間點(diǎn)的恢復(fù),我們需要一個(gè)事物日志。
#p#
全恢復(fù)
不要與“全備份”混淆,全恢復(fù)涉及到一個(gè)保存歷史事務(wù)日志文件的數(shù)據(jù)庫(kù)。由于日志文件現(xiàn)將是數(shù)據(jù)庫(kù)不可分割的一部分,所以當(dāng)創(chuàng)建數(shù)據(jù)庫(kù)就必創(chuàng)建日志文件。當(dāng)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),要考慮有兩個(gè)文件選項(xiàng), “初始大小”和“自動(dòng)增長(zhǎng)” ,這兩個(gè)選項(xiàng)可在SQL Server數(shù)據(jù)庫(kù)管理屬性頁(yè)上進(jìn)行配置。在該文件頁(yè)面上,可設(shè)置初始化大小和自增大小。
如果數(shù)據(jù)庫(kù)設(shè)置為全恢復(fù),那么每一個(gè)數(shù)據(jù)變動(dòng)操作歷史記錄都將被保存。如果日志文件銼光或用完物理磁盤(pán)空間,那么數(shù)據(jù)庫(kù)將停止工作。這種風(fēng)險(xiǎn)可以由SQL Server自動(dòng)增加日志文件的功能來(lái)降低。要啟用自動(dòng)成長(zhǎng)功能,就要給日志文件初始兆字節(jié)大小的空間。下一步,選擇“ Autogrowth ”復(fù)選框,并輸入一個(gè)增長(zhǎng)的大小。日志文件的大小也可以加以限制或不加限制的增長(zhǎng)。如果沒(méi)有設(shè)置自動(dòng)增長(zhǎng),一個(gè)固定大小的日志文件將自動(dòng)生成。如果日志文件填滿(mǎn)了,那么該數(shù)據(jù)庫(kù)將停止工作。自動(dòng)增長(zhǎng)功能可以避免了這一點(diǎn),但帶有一些額外開(kāi)銷(xiāo)。當(dāng)SQL Server設(shè)置自動(dòng)增加日志文件大小時(shí),資源(內(nèi)存, CPU ,以及硬盤(pán))利用率和數(shù)據(jù)庫(kù)的性能,可能遭受影響。一旦對(duì)日志進(jìn)行了調(diào)整,性能將恢復(fù)正常。
差異備份
當(dāng)數(shù)據(jù)庫(kù)運(yùn)行在“全恢復(fù)”的模式,那么事物日志正在不斷的被保存,這樣我們就又可以有幾個(gè)新的備份選擇。除了全備份現(xiàn)在可以進(jìn)行差異備份和事物日志備份。
差異備份復(fù)制上次完全備份所有的數(shù)據(jù)變化。因此,這些備份通常比完全備份更快和更小。但隨著時(shí)間的推移,越來(lái)越多的數(shù)據(jù)發(fā)生變化,差異備份文件將變得很大。完整備份創(chuàng)建一個(gè)檢查點(diǎn)的意義在于,新的差異備份可以從這一點(diǎn)開(kāi)始進(jìn)行。
事物日志備份
事務(wù)日志備份將復(fù)制上次完全或以前的事務(wù)日志備份的所有數(shù)據(jù)變化。事物日志備份通常是非常快并且非常小。缺點(diǎn)是它們的恢復(fù)能力有限。例如,如果您創(chuàng)建一個(gè)星期一的全備份和周二至周五事務(wù)日志備份,然后需要在周六恢復(fù),恢復(fù)的步驟將是先恢復(fù)星期一的全備份,然后恢復(fù)星期二的日志備份,星期三的日志,星期四的日志,并最終恢復(fù)星期五的日志備份。顯然這個(gè)過(guò)程,是需要耗費(fèi)很多資源的。此外,如果一個(gè)由于某種原因日志備份損壞或無(wú)法使用,那么整個(gè)恢復(fù)鏈將中斷,而不會(huì)獲得日志備份良好時(shí)那樣的效果。
結(jié)論
SQL Server2008提供了幾種恢復(fù)方法,包括全恢復(fù)和簡(jiǎn)單恢復(fù)。恢復(fù)方法的選擇將取決于事物日志文件是否被保存,如果是的話(huà),任何類(lèi)型的備份可以執(zhí)行,如全備份,差異備份,或事務(wù)日志備份。
【編輯推薦】

























