溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQL Server 2008數(shù)據(jù)備份與還原的示例分析

發(fā)布時間:2021-12-18 16:16:19 來源:億速云 閱讀:123 作者:小新 欄目:系統(tǒng)運維

這篇文章將為大家詳細(xì)講解有關(guān)SQL Server 2008數(shù)據(jù)備份與還原的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1、恢復(fù)模式

右鍵數(shù)據(jù)庫屬性--選項--可以看到“恢復(fù)模式”,SQL Server 2008數(shù)據(jù)庫恢復(fù)模式分為三種:完整恢復(fù)模式、大容量日志恢復(fù)模式、簡單恢復(fù)模式,如下圖。

完整恢復(fù)模式

為默認(rèn)恢復(fù)模式。 它會完整記錄下操作數(shù)據(jù)庫的每一個步驟。使用完整恢復(fù)模式可以將整個數(shù)據(jù)庫恢復(fù)到一個特定的時間點,這個時間點可以是最近一次可用的備份、一個特定的日期和時間或標(biāo)記的事務(wù)。

大容量日志恢復(fù)模式

簡單地說就是要對大容量操作進(jìn)行最小日志記錄,節(jié)省日志文件的空間(如導(dǎo)入數(shù)據(jù)、批量更新、SELECT INTO等操作時)。比如一次在數(shù)據(jù)庫中插入數(shù)十萬條記錄時,在完整恢復(fù)模式下每一個插入記錄的動作都會記錄在日志中,使日志文件變得非常大,在大容量日志恢復(fù)模式下,只記錄必要的操作,不記錄所有日志,這樣一來,可以大大提高數(shù)據(jù)庫的性能,但是由于日志不完整,一旦出現(xiàn)問題,數(shù)據(jù)將可能無法恢復(fù)。因此,一般只有在需要進(jìn)行大量數(shù)據(jù)操作時才將恢復(fù)模式改為大容量日志恢復(fù)模式,數(shù)據(jù)處理完畢之后,馬上將恢復(fù)模式改回完整恢復(fù)模式。

簡單恢復(fù)模式

在該模式下,數(shù)據(jù)庫會自動把不活動的日志刪除,因此簡化了備份的還原,但因為沒有事務(wù)日志備份,所以不能恢復(fù)到失敗的時間點。通常,此模式只用于對數(shù)據(jù)庫數(shù)據(jù)安全要求不太高的數(shù)據(jù)庫,并且在該模式下,數(shù)據(jù)庫只能做完整和差異備份。

可以看出三種恢復(fù)模式的區(qū)別在于對“日志”的處理方式不同,就“日志”大小來看:完全恢復(fù)模式 > 大容量日志恢復(fù)模式 > 簡單恢復(fù)模式。

SQL Server 2008數(shù)據(jù)備份與還原的示例分析

2、備份方式

SQL Server 2008提供了四種備份方式:完整備份、差異備份、事務(wù)日志備份、文件和文件組備份。

完整備份

備份整個數(shù)據(jù)庫的所有內(nèi)容,包括事務(wù)日志。該備份類型需要比較大的存儲空間來存儲備份文件,備份時間也比較長,在還原數(shù)據(jù)時,也只要還原一個備份文件。

差異備份

差異備份是完整備份的補(bǔ)充,只備份上次完整備份后更改的數(shù)據(jù)。相對于完整備份分來說,差異備份的數(shù)據(jù)量比完整數(shù)據(jù)備份小,備份的速度也比完整備份要快。因此,差異備份通常作為常用的備份方式。在還原數(shù)據(jù)時,要先還原前一次做的完整備份,然后還原***一次所做的差異備份 ,這樣才能讓數(shù)據(jù)庫里的數(shù)據(jù)恢復(fù)到與***一次差異備份時的內(nèi)容相同。

事務(wù)日志備份

事務(wù)日志備份只備份事務(wù)日志里的內(nèi)容。事務(wù)日志記錄了上一次完整備份或事務(wù)日志備份后數(shù)據(jù)庫的所有變動過程。事務(wù)日志記錄的是某一段時間內(nèi)的數(shù)據(jù)庫變動情況,因此在進(jìn)行事務(wù)日志備份之前,必須要進(jìn)行完整備份。與差異備份類似,事務(wù)日志備份生成的文件較小、占用時間較短,但是在還原數(shù)據(jù)時,除了先要還原完整備份之外,還要依次還原每個事務(wù)日志備份,而不是只還原***一個事務(wù)日志備份(這是與差異備份的區(qū)別)。

文件和文件組備份

如果在創(chuàng)建數(shù)據(jù)庫時,為數(shù)據(jù)庫創(chuàng)建了多個數(shù)據(jù)庫文件或文件組,可以使用該備份方式。使用文件和文件組備份方式可以只備份數(shù)據(jù)庫中的某些文件,該備份方式在數(shù)據(jù)庫文件非常龐大時十分有效,由于每次只備份一個或幾個文件或文件組,可以分多次來備份數(shù)據(jù)庫,避免大型數(shù)據(jù)庫備份的時間過長。另外,由于文件和文件組備份只備份其中一個或多個數(shù)據(jù)文件,當(dāng)數(shù)據(jù)庫里的某個或某些文件損壞時,可能只還原損壞的文件或文件組備份。

SQL Server 2008數(shù)據(jù)備份與還原的示例分析

3、舉例說明

完整備份

例如,在2012年1月1日早上8點進(jìn)行了完整備份,那么將來在還原時,就可以恢復(fù)到2012年1月有1日早上8點時的數(shù)據(jù)庫狀態(tài)。

差異備份

差異備份是備份完整備份后的數(shù)據(jù)變動情況。例如,在2012年1月1日早上8點進(jìn)行了完整備份后,在1月2日和1月3日又分別進(jìn)行了差異備份,那么在1月2日的差異備份里記錄的是從1月1日到1月2日這一段時間里的數(shù)據(jù)變動情況,而在1月3日的差異備份里記錄的是從1月1日到1月3日這一段時間里的數(shù)據(jù)變動情況。因此,如果要還原到1月3日的狀態(tài),只要先還原1月1日做的完整備份,再還原1月3日做的差異備份就可以了。

事務(wù)日志備份

事務(wù)日志備份是以事務(wù)日志文件作為備份對象,相當(dāng)于將數(shù)據(jù)庫里的每一個操作都記錄下來了。假設(shè)在2012年1月1日早上8點進(jìn)行了完整備份后,到1月2日早上8點為止,數(shù)據(jù)庫里的數(shù)據(jù)變動了100次,如果此時做了差異備份,那么差異備份記錄的是第100次數(shù)據(jù)變動后的數(shù)據(jù)庫狀態(tài),而如果此時做了事務(wù)日志備份,備份的將是這100次的數(shù)據(jù)變動情況。

再舉一個例子,例如在2012年1月1日早上8點進(jìn)行了完整備份后,在1月2日和1月3日又進(jìn)行了事務(wù)日志備份,那么在1月2日的事務(wù)日志備份里記錄的是從1月1日到1月2日這一段時間里的數(shù)據(jù)變動情況,而在1月3日的事務(wù)日志備份里記錄的是從1月2日到1月3日這一段時間里的數(shù)據(jù)變動情況。因此,如果要還原到1月3日的數(shù)據(jù),需要先還原1月1日做的完整備份,再還原1月2日做的事務(wù)日志備份,***還要還原1月3日所做的事務(wù)日志備份。

4、備份方式的選擇

了解了以上數(shù)據(jù)庫備份方式后,便可以針對自己的數(shù)據(jù)庫利用以上方式來備份數(shù)據(jù)庫了。合理備份數(shù)據(jù)庫需要考慮幾方面,首先是數(shù)據(jù)安全,其次是備份文件大小,***是做備份和還原能承受的時間范圍。

數(shù)據(jù)變動量較小

例如,如果數(shù)據(jù)庫里每天變動的數(shù)據(jù)量很小,可以每周(周日)做一次完整備份,以后的每天(下班前)做一次事務(wù)日志備份,那么一旦數(shù)據(jù)庫發(fā)生問題,可以將數(shù)據(jù)恢復(fù)到前一天(下班時)的狀態(tài)。

當(dāng)然,也可以每周(周日)做一次完整備份,以后的每天(下班前)做一次差異備份,這樣一旦數(shù)據(jù)庫發(fā)生問題,同樣可以將數(shù)據(jù)恢復(fù)到前一天下班時的狀態(tài)。只是一周的后幾天做差異備份時,備份的時間和備份的文件都會跟著增加。但這也有一個好處,在數(shù)據(jù)損壞時,只要恢復(fù)完整備份的數(shù)據(jù)和前一天差異備份的數(shù)據(jù)即可,不需要去恢復(fù)每一天的事務(wù)日志備份,恢復(fù)的時間會比較短。

數(shù)據(jù)變動量較大

如果數(shù)據(jù)庫里的數(shù)據(jù)變動得比較頻繁,損失一個小時的數(shù)據(jù)都是十分嚴(yán)重的損失時,用上面的辦法備份數(shù)據(jù)就不可行了,此時可以交替使用三種備份方式來備份數(shù)據(jù)庫。

例如,每天下班時做一次完整備份,在兩次完整備份之間每隔八小時做一次差異備份,在兩次差異備份之間每隔一小時做一次事務(wù)日志備份。如此一來,一旦數(shù)據(jù)損壞可以將數(shù)據(jù)恢復(fù)到最近一個小時以內(nèi)的狀態(tài),同時又能減少數(shù)據(jù)庫備份數(shù)據(jù)的時間和備份數(shù)據(jù)文件的大小。

數(shù)據(jù)庫文件較大

在前面還提到過當(dāng)數(shù)據(jù)庫文件過大不易備份時,可以分別備份數(shù)據(jù)庫文件或文件組,將一個數(shù)據(jù)庫分多次備份。在現(xiàn)實操作中,還有一種情況可以使用到數(shù)據(jù)庫文件的備份。例如在一個數(shù)據(jù)庫中,某些表里的數(shù)據(jù)變動得很少,而某些表里的數(shù)據(jù)卻經(jīng)常改變,那么可以考慮將這些數(shù)據(jù)表分別存儲在不同的文件或文件組里,然后通過不同的備份頻率來備份這些文件和文件組。但使用文件和文件組來進(jìn)行備份,還原數(shù)據(jù)時也要分多次才能將整個數(shù)據(jù)庫還原完畢,所以除非數(shù)據(jù)庫文件大到備份困難,否則不要使用該備份方式。

尾部日志備份

針對以上備份方案,能看出數(shù)據(jù)還是不完整嗎?比如昨天夜間12點做了完整備份,每隔一小時做了一次事務(wù)日志備份,***一次事務(wù)日志備份是今天中午12點,現(xiàn)在是今天中午12點10分,發(fā)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)遭到丟失或破壞,可***一次事務(wù)日志備份是今天中午12點,如果我此時將數(shù)據(jù)庫恢復(fù)到12點,那么12點后至12點10分前沒遭到破壞的操作數(shù)據(jù)將丟失(比如數(shù)據(jù)庫有三個表,一個表的數(shù)據(jù)遭到破壞,其它兩個表的數(shù)據(jù)被其它用戶變動)。此時就要用到【尾部日志備份】,尾部日志備份原理是從***一次事務(wù)日志備份的時間點開始,將之后的所有操作進(jìn)行備份,還原時便可以找到12點后操作的正確數(shù)據(jù)了。

注:進(jìn)行尾部日志備份時,數(shù)據(jù)庫將強(qiáng)制停止數(shù)據(jù)庫,此時如果不停止數(shù)據(jù)庫,還有用戶繼續(xù)操作,尾部日志備份將失去意義。SQL Server 2012如果你***一次備份事務(wù)日志后,對數(shù)據(jù)進(jìn)行過改動,即發(fā)生過事務(wù)日志(也就是當(dāng)前日志文件記錄的LSN(日志序列號)大于***一次事務(wù)日志備份里記錄的***LSN,SQL Server通過LSN來區(qū)分日志的記錄),并尚未對尾部日志備份,它會提示并要求你必須先做尾部備份。

5、示例操作

首先進(jìn)行完整備份【MyTest.bak】,然后再基于此備份文件 進(jìn)行兩次事務(wù)日志備份,***一次事務(wù)日志備份時間為【2012-8-4 23:07】。下圖:備份文件名為【MyTest.bak】,***一次事務(wù)日志備份時間為【2012-8-4 23:07】

SQL Server 2008數(shù)據(jù)備份與還原的示例分析

下圖:選擇備份文件“MyTest.bak”后,此時能看到“要還原的備份集”列表里顯示有備份文件,分別列出了完整備份文件和兩次事務(wù)日志備份。

SQL Server 2008數(shù)據(jù)備份與還原的示例分析

以上備份文件***一次事務(wù)日志備份時間為【2012-8-4 23:07】,那么,您可以還原到自***完整備份開始后,至***一次事務(wù)日志備份時間期間的任何一個時間點,這就充分驗證上上文講到的事務(wù)日志備份方式(如果后期進(jìn)行過尾部日志備份,還原時在“要還原的備份集”列表里的***一行會列出尾部日志記錄)。

如果事務(wù)日志備份有兩次,分別是“事務(wù)日志1”、“事務(wù)日志2”,那么在還原時去掉“事務(wù)日志1”復(fù)選框,“事務(wù)日志2”也會自動去掉,但只去掉“事務(wù)日志2”是允許的,這也充分驗證了上文講到的:“在還原數(shù)據(jù)時,除了先要還原完整備份之外,還要依次還原每個事務(wù)日志備份,而不是只還原***一個事務(wù)日志備份”,不同于差異備份可以基于完整備份,只還原***一次差異備份即可。

若在【2012-08-04 23:36:53】插入一條數(shù)據(jù),【2012-08-04 23:37:44】又做了一次事務(wù)日志備份3,然后再將時間點還原到【2012-08-04 23:36:00】,還原后,此時間點后的數(shù)據(jù)就沒有了。

【注意:在還原時會提示數(shù)據(jù)庫正在使用,一般要斷開全部連接后,才能進(jìn)行還原。我一般使用腳本將數(shù)據(jù)脫機(jī)再聯(lián)機(jī),所有連接將會全部斷開】

關(guān)于“SQL Server 2008數(shù)據(jù)備份與還原的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI