《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式...
數(shù)據(jù)備份一直被認(rèn)為數(shù)據(jù)庫的生命,也就是一個(gè)DBA所要掌握的主要技能之一,本篇就是介紹SQL Server備份原則,SQL Server數(shù)據(jù)庫分為數(shù)據(jù)文件和日志文件。為了使得數(shù)據(jù)庫能夠恢復(fù)一致點(diǎn),備份不僅需要拷貝數(shù)據(jù)數(shù)據(jù)文件里的內(nèi)容,還要拷貝日志文件里的內(nèi)容。那么根據(jù)每次備份的目標(biāo)不同,我們可以將備份分為數(shù)據(jù)備份和日志備份。
數(shù)據(jù)備份的范圍可以是完整的數(shù)據(jù)庫、部分?jǐn)?shù)據(jù)庫、一組文件或文件組。所以根據(jù)備份下來的數(shù)據(jù)文件的范圍,又分為了完整數(shù)據(jù)庫備份、文件備份和部分備份。
完整數(shù)據(jù)庫備份
完整數(shù)據(jù)庫備份就是拷貝下數(shù)據(jù)庫里的所有信息,通過一個(gè)單個(gè)完整備份,就能將數(shù)據(jù)庫恢復(fù)到某個(gè)時(shí)間的狀態(tài)。但是由于數(shù)據(jù)庫備份是一個(gè)在線的操作。一個(gè)大的完整數(shù)據(jù)庫備份可能需要一個(gè)小時(shí)甚至更長(zhǎng)的時(shí)間。數(shù)據(jù)庫在這段時(shí)間里還會(huì)發(fā)生變化。所以完整數(shù)據(jù)庫備份還要對(duì)部分事務(wù)日志進(jìn)行備份,以便能夠恢復(fù)數(shù)據(jù)庫到一個(gè)事務(wù)一致的狀態(tài)。
完整數(shù)據(jù)庫備份易于使用。它包含數(shù)據(jù)庫中的所有數(shù)據(jù)。對(duì)于可以快速備份的小數(shù)據(jù)而言,最佳方法就是使用完整數(shù)據(jù)庫備份。但是,隨著數(shù)據(jù)庫的不斷增大,完整備份需要花費(fèi)更多時(shí)間才能完整,并且需要更多的存儲(chǔ)空間。僅做完整備份可能不能滿足用戶需求。
文件備份
文件備份指的備份一個(gè)或多個(gè)文件或文件組中的所有數(shù)據(jù)。在完整恢復(fù)模式下,一整套完整文件備份加上跨所有文件備份的日志備份合起來等同于完整數(shù)據(jù)庫備份。使用文件備份能夠只還原損壞的文件,而不用還原數(shù)據(jù)庫其余的部分,從而可加速恢復(fù)速度。例如,如果數(shù)據(jù)庫由位于不同磁盤上的若干個(gè)文件組成,在其中一個(gè)磁盤發(fā)生故障時(shí),只需要還原這個(gè)故障磁盤上的文件的備份,其它磁盤上的文件無須還原。這樣會(huì)縮短還原時(shí)間。
部分備份
部分備份是SQL Server2005中的新增功能。部分備份與完整數(shù)據(jù)庫備份類似,但是部分備份默認(rèn)只包含數(shù)據(jù)庫可讀寫的部分,數(shù)據(jù)庫的只讀文件將不會(huì)備份。因?yàn)橹蛔x部分是不會(huì)發(fā)生變動(dòng)的。總是去備份它有點(diǎn)浪費(fèi)。所以部分備份在希望備份不包括只讀文件組時(shí)非常有用。
部分備份可以說是數(shù)據(jù)庫部分和文件備份之間的一個(gè)中間類型。如果一個(gè)數(shù)據(jù)庫里沒有只讀文件,那么部分備份和數(shù)據(jù)庫備份就沒有什么差別。
數(shù)據(jù)庫文件常常是非常巨大的。在流行數(shù)據(jù)集中的趨勢(shì)下,庫容上TB的數(shù)據(jù)庫現(xiàn)在已經(jīng)屢見不鮮。對(duì)于這樣的一個(gè)數(shù)據(jù)庫,做數(shù)據(jù)庫備份,哪怕是文件備份都是一個(gè)非常昂貴的事情,可能不是每天能去做的。再這樣的背景之下就出現(xiàn)了:差異備份。
從是否拷貝所有的數(shù)據(jù)來分,數(shù)據(jù)備份有可以分為完整備份和差異備份。
差異備份基于差異,備份要求數(shù)據(jù)庫之前做過一次完整備份。差異備份僅捕獲自該次完整備份后發(fā)生更改的數(shù)據(jù)。這個(gè)完整備份被稱為差異備份的”基準(zhǔn)“。差異備份僅包括差異基準(zhǔn)后更改的數(shù)據(jù)。差異備份比差異基準(zhǔn)更小且更快,便于執(zhí)行頻繁備份,從而降低了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
對(duì)于完整數(shù)據(jù)庫備份、文件備份和部分備份這3種數(shù)據(jù)備份形式,SQL Server都能夠做完整備份和差異備份。所以,引出了一共6種數(shù)據(jù)備份模式:完整數(shù)據(jù)庫備份、完整文件備份和完整部分備份,差異數(shù)據(jù)庫備份、差異文件備份和差異部分備份。
數(shù)據(jù)備份集中精力數(shù)據(jù)文件的備份。對(duì)于日志文件,相應(yīng)地有事務(wù)日志備份。每個(gè)日志備份都包括創(chuàng)建備份時(shí)處于活動(dòng)狀態(tài)的部分事務(wù)日志,以及先前日志備份中未備份的所有日志記錄。不間斷的日志備份序列包含數(shù)據(jù)庫的備份(即連續(xù)不斷的)日志鏈。在完整恢復(fù)模式下(或者在大容量日志恢復(fù)模式下的某些時(shí)候),連續(xù)不斷的日志鏈讓您可以將數(shù)據(jù)庫還原到任意時(shí)間點(diǎn)。
SQL Server2005以后,還增添了一類新的備份模式,即僅復(fù)制備份。”僅復(fù)制備份“是獨(dú)立于常規(guī)SQL備份序列的SQL Server備份。通常,進(jìn)行備份會(huì)更改數(shù)據(jù)庫并影響其后備份的還原序列。但是,有時(shí)在不影響數(shù)據(jù)庫全部備份和還原過程的情況下,為了特殊目的而進(jìn)行的備份還是有用的。為此,SQL Server2005引入了下列兩種僅復(fù)制備份:
1、僅復(fù)制完整備份
僅復(fù)制完整備份也備份整個(gè)數(shù)據(jù)庫內(nèi)容。它和正常的完整備份的區(qū)別是,做完了以后差異備份基準(zhǔn)不會(huì)改變,因此不影響差異備份序列。
2、僅復(fù)制日志備份
僅復(fù)制日志備份只備份當(dāng)前日志文件里的現(xiàn)有內(nèi)容,但是不會(huì)截?cái)嗳罩?#xff0c;因此,下次在做正常日志備份的時(shí)候,這些內(nèi)容還原被再次備份下來,從而不影響常規(guī)日志備份的序列。這種備份主要用在數(shù)據(jù)庫上已經(jīng)有了一個(gè)備份計(jì)劃任務(wù)在運(yùn)行,但是現(xiàn)在需要做一個(gè)日志備份,同時(shí)不影響到原有的備份序列。
以上兩種方法SSMS不支持圖形化操作,只需要在備份語句后面加上copy only選項(xiàng)
現(xiàn)在總結(jié)SQL Server的11種主要備份方法
| ?? 分級(jí) | 數(shù)據(jù)備份 | 日志備份 | |||
| ?數(shù)據(jù)庫級(jí) | 完整數(shù)據(jù)庫備份 | 僅復(fù)制完整數(shù)據(jù)庫備份 | 差異數(shù)據(jù)庫備份 | (一般) 日志備份 | 僅復(fù)制日志備份 |
| ?文件級(jí) | 完整文件備份 | 僅復(fù)制完整文件備份 | 差異文件備份 | ||
| ?部分 | 完整部分備份 | 僅復(fù)制完整部分備份 | 差異部分備份 | ||
備份的方式很多種,其實(shí)我們經(jīng)常用的就幾種重要的方式。
首先,僅復(fù)制備份這類方法的出現(xiàn),是為了方式將要做的備份破壞現(xiàn)有的備份策略而生的,例如,對(duì)于一個(gè)已經(jīng)建立了嚴(yán)格備份規(guī)則(例如 Log Shipping)的數(shù)據(jù)庫,現(xiàn)在需要做一個(gè)日志備份到另一個(gè)文件夾里。普通的日志備份會(huì)破壞現(xiàn)有備份文件系統(tǒng)所維護(hù)的日志鏈。僅復(fù)制備份就不會(huì)被破壞。所有這種方法僅僅在偶爾的特殊情況下去使用。不在指定備份策略的一開始考慮。
其次,在現(xiàn)實(shí)中,很少有數(shù)據(jù)庫專門維護(hù)一個(gè)只讀的文件或文件集。(這種方法維護(hù)成本較高,只會(huì)在非常巨大的數(shù)據(jù)庫上才能體現(xiàn)出優(yōu)勢(shì)。)所以部分備份也是很少用到的。
這樣上面的備份方式就可以簡(jiǎn)化成幾個(gè)比較傳統(tǒng),也是最常用的備份方式
| ?? 分級(jí) | 數(shù)據(jù)備份 | 日志備份 | |
| 數(shù)據(jù)庫級(jí) | 完整數(shù)據(jù)庫備份 | 差異數(shù)據(jù)庫備份 | (一般) 日志備份 |
| 文件級(jí) | 完整文件備份 | 差異文件備份 | |
?當(dāng)然除此之外,還存在一種暴力的備份方式那就是直接拷貝數(shù)據(jù)庫文件,然后用文件附加(Attach)的方式備份和恢復(fù)數(shù)據(jù)庫,這種方式在應(yīng)對(duì)事例癱瘓掉的時(shí)候,萬般無奈之極是可以嘗試采取的,但是這種方式不作為標(biāo)準(zhǔn)的方式推薦。
不推薦的原因有以下幾個(gè):
1、SQL Server在運(yùn)行的時(shí)候,對(duì)文件施加了排它鎖,通過一般的方法是不能直接拷貝文件的。除非通過一些備份軟件,否則只能停掉SQL Server服務(wù),或者關(guān)閉數(shù)據(jù)庫,才能備份文件。
2、SQL Server在理論上,只保證通過運(yùn)行sp_detach_db語句得到數(shù)據(jù)庫文件,才一定能被成功附加上。如果用戶是通過暫停SQL Server服務(wù)或其它方法得到文件,SQL Server不能保證就一定能附加上。
3、有些用戶只拷貝數(shù)據(jù)文件,不拷貝日志文件的做法,是非常不規(guī)范的。很容易導(dǎo)致數(shù)據(jù)庫不能正常恢復(fù)。從而丟失數(shù)據(jù)。
?
拷貝文件的方法也不是一定能用,筆者在做災(zāi)難恢復(fù)的時(shí)候,如果數(shù)據(jù)庫不是很大,會(huì)先做一個(gè)數(shù)據(jù)庫備份,在做一個(gè)文件級(jí)的備份,以期雙保險(xiǎn)。文件拷貝發(fā)生在SQL Server被成功關(guān)閉之后,或者sp_detach_db后,而且所有的文件都要做備份,包括日志文件。
如何選擇備份策略和恢復(fù)模式
SQL Server提供了足夠多的技術(shù)來做各種各樣的數(shù)據(jù)庫備份。作為一個(gè)數(shù)據(jù)庫管理員,應(yīng)該選擇何種備份方式,需要根據(jù)兩個(gè)問題來抉擇:
1、數(shù)據(jù)庫最多能容忍多長(zhǎng)時(shí)間的數(shù)據(jù)丟失?
2、準(zhǔn)備投入多少人力物力來做數(shù)據(jù)庫備份與恢復(fù)策略?
其實(shí)是這樣,要想獲得最好的效果,就需要越多的投入。數(shù)據(jù)庫備份策略尤其這樣。不考慮鏡像技術(shù)(包括SQL Server自己的數(shù)據(jù)庫鏡像和物理磁盤級(jí)鏡像),SQL Server不可能時(shí)時(shí)刻刻的做數(shù)據(jù)庫備份,每次備份之間總要有一定的時(shí)間間隔。而這個(gè)時(shí)間間隔之間的數(shù)據(jù)變化在下一次備份之前,是沒有保護(hù)的。所以講到底,數(shù)據(jù)丟失的最大時(shí)間段,就是這兩次備份之間的時(shí)間間隔。利用備份數(shù)據(jù)恢復(fù)機(jī)制保護(hù)數(shù)據(jù),是不可能保證數(shù)據(jù)一點(diǎn)都不丟失的。如果用戶提出來要求不能有任何數(shù)據(jù)丟失,則必須和用戶溝通,讓他們了解這樣的要求僅使用數(shù)據(jù)備份技術(shù)實(shí)現(xiàn)是不現(xiàn)實(shí)的,需要做更大的投入,引入鏡像技術(shù)。
既然數(shù)據(jù)丟失的最大時(shí)間段,就要兩次備份之間的時(shí)間間隔,也就是說備份做的越多,數(shù)據(jù)丟失量就越少。可是,做備份越頻繁,需要投入的也就越多。涉及的因素也就越多:
1、備份越多,要管理的備份文件也越多,數(shù)據(jù)庫恢復(fù)時(shí)要恢復(fù)的文件也越多。需要建立一個(gè)合適的制度。
2、備份雖然會(huì)阻塞數(shù)據(jù)的正常操作,但是會(huì)產(chǎn)生一系列的磁盤讀寫。如果服務(wù)器本身的IO就比較頻繁,備份動(dòng)作會(huì)進(jìn)一步影響數(shù)據(jù)庫的性能。需要增強(qiáng)服務(wù)器的硬盤的讀寫處理能力,才能避免這種問題的發(fā)生。
3、備份難免會(huì)因?yàn)榉N種因素失敗。備份越勤,遇到失敗的幾率就越多。管理員要及時(shí)處理錯(cuò)誤,將備份任務(wù)恢復(fù)常態(tài)。這對(duì)管理員的要求也比較高。
當(dāng)您對(duì)您愿意投入的人力物力心中有數(shù)以后,就可以來決定采用什么也樣的備份策略了。
使用日志備份,可以將數(shù)據(jù)庫恢復(fù)到故障或特定的時(shí)間點(diǎn)。所以日志備份在備份策略中扮演者很重要的角色。但是日志備份只能在完整恢復(fù)模式和有些大容量日志恢復(fù)模式的數(shù)據(jù)庫上進(jìn)行。
指定備份策略,首先要決定是否需要做日志備份。如果需要做日志備份,數(shù)據(jù)庫恢復(fù)模式就要選成完整模式。(大容量恢復(fù)模式不能保證日志備份成功,所以一般不推薦在生產(chǎn)環(huán)境下使用。)如果不做日志備份,數(shù)據(jù)庫模式就要設(shè)置成簡(jiǎn)單。否則會(huì)遇到日志文件無限增長(zhǎng)問題。
一、簡(jiǎn)單恢復(fù)模式下的備份
簡(jiǎn)單恢復(fù)模式下,不能做日志備份。所以它只支持最簡(jiǎn)單的備份和還原模式。很容易管理。不過如果沒有日志備份,就只能將數(shù)據(jù)庫恢復(fù)到最后一次備份的結(jié)尾。如果發(fā)生災(zāi)難,數(shù)據(jù)最后一次備份之后做的修改將丟失。
上圖顯示了簡(jiǎn)單恢復(fù)模式下最簡(jiǎn)單的備份與還原策略,此策略僅使用包含了數(shù)據(jù)庫中所有數(shù)據(jù)的完整數(shù)據(jù)庫備份。存在五個(gè)完整數(shù)據(jù)庫備份,但是只需要還原最近的備份(t5時(shí)點(diǎn)執(zhí)行的備份),還原此備份會(huì)將數(shù)據(jù)庫恢復(fù)到t5時(shí)點(diǎn),由于t6框表示的所有后續(xù)更新都將丟失。
并且在簡(jiǎn)單恢復(fù)模式下,會(huì)自動(dòng)截?cái)嗍聞?wù)日志,以刪除不活動(dòng)的虛擬日志文件。截?cái)嗤ǔ0l(fā)生在每個(gè)檢查點(diǎn)之后,但在某些情況下會(huì)延遲。
在簡(jiǎn)單恢復(fù)模式下,工作損失風(fēng)險(xiǎn)會(huì)隨時(shí)間增長(zhǎng)而增加,直到進(jìn)行下一個(gè)完整備份或者差異備份為止。因此,建議安排足夠的頻率,以避免遺失大量的數(shù)據(jù)。同時(shí),頻率也不能太高而讓備份變得難以管理。
上圖顯示了這種備份計(jì)劃的工作損失風(fēng)險(xiǎn)。所以這個(gè)粗略只適合用于頻繁備份的小型數(shù)據(jù)庫里。
為了降低風(fēng)險(xiǎn),SQL Server又引入了差異備份。
上圖顯示了使用差異數(shù)據(jù)庫備份補(bǔ)充數(shù)據(jù)庫完整備份來減輕工作損失風(fēng)險(xiǎn)的一種備份策略。在第一次數(shù)據(jù)庫備份之后,連續(xù)建立了3此差異備份。第3個(gè)差異備份后,進(jìn)行數(shù)據(jù)庫完整備份,建立新的差異基準(zhǔn)。因?yàn)椴町悅浞莸拈_銷一般都比完整備份低,所以能夠比較經(jīng)常的運(yùn)行。這樣的備份策略可以使用在數(shù)據(jù)量稍大,能夠容忍較長(zhǎng)時(shí)間丟失的數(shù)據(jù)庫上。
以上兩種備份策略的優(yōu)勢(shì),是不管是備份還是恢復(fù),管理起來都比較簡(jiǎn)單。但是不管是數(shù)據(jù)庫完整備份,還是差異備份,都不能以比較頻繁的頻率進(jìn)行,一般都只能在晚間進(jìn)行。如果數(shù)據(jù)庫比較龐大,或者不允許長(zhǎng)時(shí)間的數(shù)據(jù)丟失,這樣的備份策略是不能滿足要求的。必須引入日志備份。
二、完整恢復(fù)模式下的備份
如果數(shù)據(jù)庫是完整恢復(fù)模式,就可以使用日志備份。由于日志備份只拷貝上次日志備份以來的所有日志記錄,所以開銷會(huì)比數(shù)據(jù)庫備份小很多。可以定義以一種很頻繁的頻率(5分鐘甚至更短)來做備份,以達(dá)到在最大限度內(nèi),防止出現(xiàn)故障丟失數(shù)據(jù)的目的。使用日志備份的優(yōu)點(diǎn)是允許您將數(shù)據(jù)庫還原到日志備份的任何點(diǎn)(“時(shí)點(diǎn)恢復(fù)”)。假定可以在發(fā)生嚴(yán)重故障后備份活動(dòng)日志,則可能數(shù)據(jù)庫一直還原到?jīng)]有發(fā)生數(shù)據(jù)丟失的故障點(diǎn)處。使用日志備份的缺點(diǎn)是它們的數(shù)量很多,而且恢復(fù)備份時(shí),需要嚴(yán)格按照備份產(chǎn)生的順序依次恢復(fù)。中間不能有任何備份缺失或跳躍。所以日志備份做的越多,還原時(shí)間就越多。管理復(fù)雜性也越高。
上圖顯示了完整恢復(fù)模式下最簡(jiǎn)單的備份策略。上圖中已經(jīng)完成了備份Db_1以及兩個(gè)例行日志備份Log_1和Log_2。在Log_2日志備份后的某個(gè)時(shí)間,數(shù)據(jù)庫出現(xiàn)故障。在還原這3個(gè)備份前,數(shù)據(jù)庫管理員必須備份活動(dòng)日志(日志尾部)。然后還原Db_1、Log_1和Log_2,并且不恢復(fù)數(shù)據(jù)庫。接著,數(shù)據(jù)庫管理員還原并恢復(fù)尾(Tail)日志備份。這一步將可以把數(shù)據(jù)庫恢復(fù)到故障點(diǎn)。從而恢復(fù)所有數(shù)據(jù)。如果尾日志能夠成功的備份和恢復(fù)。這次災(zāi)難可能甚至不會(huì)帶來任何數(shù)據(jù)丟失。如果遭難毀壞的是日志文件。使得尾日志不能成功備份和恢復(fù),那這次災(zāi)難造成的數(shù)據(jù)丟失就是從Log_2以后所有的修改。
所以,在第一個(gè)完整數(shù)據(jù)庫備份完成,并且常規(guī)日志備份開始之后,潛在的工作丟失風(fēng)險(xiǎn)的時(shí)間,僅為數(shù)據(jù)庫損壞時(shí)點(diǎn)。到上次一次常規(guī)日志備份的那一段時(shí)間,因此,建議經(jīng)常執(zhí)行日志備份,以將工作丟失的風(fēng)險(xiǎn)限定在業(yè)務(wù)所要求所允許的范圍內(nèi)。
出現(xiàn)故障后,可以嘗試備份“日志尾部”(尚未備份的日志)。如果尾部日志備份成功,則可以通過將數(shù)據(jù)庫還原到故障點(diǎn)來避免任何工作丟失。所以這種備份計(jì)劃的優(yōu)點(diǎn)也是很明顯的。
上圖顯示了該中備份策略并且使用一系列例行日志備份來補(bǔ)充完整數(shù)據(jù)庫備份。使用事務(wù)日志備份可縮短潛在的工作丟失風(fēng)險(xiǎn)存在的時(shí)間,使該風(fēng)險(xiǎn)僅在最新日志備份之后存在。在第一個(gè)數(shù)據(jù)庫備份完成后,每天會(huì)做一個(gè)差異數(shù)據(jù)庫備份,而在工作時(shí)間進(jìn)行若干日志備份。
上圖中第一個(gè)數(shù)據(jù)庫備份創(chuàng)建之前,數(shù)據(jù)庫存在的潛在的工作丟失風(fēng)險(xiǎn)(從時(shí)間t0到時(shí)間t1)。該備份建立之后,例行日志備份將工作丟失的風(fēng)險(xiǎn)降低為自丟失自最近日志備份之后所做的更改(在此圖中,最近備份的時(shí)間為t14)。如果發(fā)生故障,則數(shù)據(jù)庫管理員應(yīng)該立即嘗試備份的活動(dòng)日志(日志尾部)。如果此“尾日志備份”成功。則數(shù)據(jù)庫可以還原到故障點(diǎn)。
但是,上述備份計(jì)劃存在一大缺陷,就是災(zāi)難發(fā)生后需要恢復(fù)的日志文件數(shù)目太多。假設(shè)每個(gè)小時(shí)做一次日志備份,每周做一次數(shù)據(jù)庫備份,如果災(zāi)難在周五發(fā)生,就不得不恢復(fù)上百個(gè)日志備份。這個(gè)工作量和所要花的時(shí)間是很大的。所以為了最大程度縮短還原時(shí)間,可以對(duì)相同數(shù)據(jù)庫進(jìn)行一系列差異備份做補(bǔ)充。
三、文件或文件組備份
?完整文件備份指的是備份一個(gè)或多個(gè)文件或文件組中的所有數(shù)據(jù)。在完整恢復(fù)模式下,一整套完整文件備份和所有文件備份的日志備份合起來。等同于一個(gè)完整數(shù)據(jù)庫備份。使用文件備份能夠只還原損壞的文件,而不用還原數(shù)據(jù)庫的其余部分,從而加快恢復(fù)速度。例如,如果數(shù)據(jù)庫由位于不同磁盤上的若干文件組成,在其中一個(gè)磁盤發(fā)生故障時(shí),只須還原故障磁盤上的文件。
在SQL Server7.0和SQL Server2000中,文件備份和差異文件備份不包含日志記錄。必須顯式會(huì)恢復(fù)日志備份才能恢復(fù)其數(shù)據(jù)。因此,在這兩個(gè)版本中。只能將文件備份與完整恢復(fù)模式和大容量日志恢復(fù)模式結(jié)合使用。在SQL Server 2005以后,文件備份在默認(rèn)情況下包含足夠的日志記錄,可以將文件前滾至備份操作的末尾。(但是在簡(jiǎn)單恢復(fù)模式下,必須一起備份所有讀/寫文件,而不是逐個(gè)指定每個(gè)讀/寫文件或文件組。)
相對(duì)于數(shù)據(jù)庫備份,文件備份具有如下優(yōu)點(diǎn):
1、能夠更快的從隔離的媒體故障中恢復(fù)。可以迅速還原損壞的文件。
2、與完整數(shù)據(jù)庫備份(對(duì)于超大型數(shù)據(jù)庫而言,變得難以管理)相比,文件備份增加了計(jì)劃和媒體處理的靈活性。文件或文件組備份的更高靈活性對(duì)于包含具有不同更新特征的數(shù)據(jù)的大型數(shù)據(jù)庫也很有用。
此種備份方法和完整數(shù)據(jù)庫備份相比,文件備份的主要缺點(diǎn)是管理比較復(fù)雜。如果某個(gè)損壞的文件未備份,那么媒體故障可能會(huì)導(dǎo)致無法恢復(fù)整個(gè)數(shù)據(jù)庫。因此,必須維護(hù)一組完整的文件備份,對(duì)于完整/大容量日志恢復(fù)模式,還必須維護(hù)一個(gè)或多個(gè)日志備份。這些日志備份至少涵蓋第一個(gè)完整文件備份和最后一個(gè)完整備份之間的時(shí)間間隔。
維護(hù)和跟蹤這些完整備份是一種耗時(shí)的任務(wù),所需空間可能會(huì)超過完整數(shù)據(jù)庫備份的所需空間。所以這種備份策略在實(shí)際應(yīng)用中應(yīng)用的還是比較少的。而且在現(xiàn)在來講存儲(chǔ)已經(jīng)變得很便利,但是這種方法在管理超大數(shù)據(jù)庫時(shí),才能發(fā)揮出其不可代替的優(yōu)勢(shì)。
在完整恢復(fù)模式下,一整套完整文件與涵蓋第一個(gè)文件備份開始的所有文件備份的足夠日志備份起來等同于完整數(shù)據(jù)備份。
上圖顯示了文件備份的原理,如果可能最好執(zhí)行完整數(shù)據(jù)庫備份并在第一個(gè)文件備份開始之前開始日志備份。上圖顯示了創(chuàng)建數(shù)據(jù)庫(在t0時(shí)間)之后立即執(zhí)行完整數(shù)據(jù)庫備份(在t1時(shí)間)的策略。創(chuàng)建了第一個(gè)數(shù)據(jù)庫備份之后,便可開始執(zhí)行事務(wù)日志備份。事務(wù)日志備份計(jì)劃按照設(shè)置間隔執(zhí)行。文件備份以最合適數(shù)據(jù)庫業(yè)務(wù)要求的間隔執(zhí)行。此圖顯示了4個(gè)文件組,每次備份其中的一個(gè)文件組。它們的備份順序(A、C、B、A)反映了數(shù)據(jù)庫的業(yè)務(wù)要求。
在完整恢復(fù)模式下,恢復(fù)一個(gè)文件組備份,不但需要恢復(fù)文件組備份本身,還需要依次恢復(fù)從上一次完整數(shù)據(jù)庫備份后,到恢復(fù)的目標(biāo)時(shí)間點(diǎn)為止的所有日志備份。以確保該文件與數(shù)據(jù)庫的其余部分保持一致。所以要恢復(fù)的事務(wù)日志備份數(shù)量會(huì)很多。要避免這種情況,可以考慮使用差異文件備份。可是這樣會(huì)使整個(gè)備份計(jì)劃更加難于管理。這也是為什么文件備份不常使用的重要原因。但是在管理超大數(shù)據(jù)庫時(shí),這可能是唯一的選擇。
不同的的庫設(shè)置不同的備份方案,可以自己自行選擇。
轉(zhuǎn)載于:https://www.cnblogs.com/zhijianliutang/p/4063697.html
總結(jié)
以上是生活随笔為你收集整理的《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特征选择方法之信息增益
- 下一篇: DFS 之 poj 2386 Lake