一、知識(shí)點(diǎn) 差異備份: 差異備份是針對(duì)完全備份:備份上一次的完全備份后發(fā)生變化的所有文件。(差異備份過(guò)程中,只備份有標(biāo)記的那些選中的文件和文件夾。它不清除標(biāo)記,即:備份后不標(biāo)記為已備份文件,換言之,不清除存檔屬性)。 增量備份: 增量備份是針對(duì)于上一次備份(無(wú)論是哪種備份):備份上一次備份后,所有發(fā)生變化的文件。(增量備份過(guò)程中,只備份有標(biāo)記的選中的文件和文件夾,它清除標(biāo)記,即:備份后標(biāo)記文件,換言之,清除存檔屬性。) 事務(wù)日志備份: 在特定事務(wù)日志備份之前執(zhí)行的完整數(shù)據(jù)庫(kù)備份和上次差異備份(如果有)。在完整數(shù)據(jù)庫(kù)備份之后執(zhí)行的所有事務(wù)日志備份或在特定事務(wù)日志備份之前執(zhí)行的差異備份(如果您還原了差異備份)。如果你設(shè)置了恢復(fù)模式為【簡(jiǎn)單】,你將無(wú)法使用【事務(wù)日志】備份。SQL Server 2000 和 SQL Server 2005: 創(chuàng)建事務(wù)日志備份,您必須使用完整恢復(fù)或大容量日志記錄恢復(fù)模型。 部分備份: 通過(guò)指定 READ_WRITE_FILEGROUPS 創(chuàng)建的備份稱為“部分備份”。在簡(jiǎn)單恢復(fù)模式下,只允許對(duì)只讀文件組執(zhí)行文件組備份。還原的數(shù)據(jù)備份類型:數(shù)據(jù)庫(kù)備份、部分備份或文件備份。對(duì)于數(shù)據(jù)庫(kù)備份或部分備份,日志備份序列必須從數(shù)據(jù)庫(kù)備份或部分備份的結(jié)尾處開始延續(xù)。對(duì)于一組文件備份,日志備份序列必須從整組文件備份的開頭開始延續(xù)。 文件備份: “文件備份”包含一個(gè)或多個(gè)文件(或文件組)中的所有數(shù)據(jù)。 日志鏈: 連續(xù)的日志備份序列稱為“日志鏈”。日志鏈從數(shù)據(jù)庫(kù)的完整備份開始。通常,僅當(dāng)?shù)谝淮蝹浞輸?shù)據(jù)庫(kù)時(shí),或者將恢復(fù)模式從簡(jiǎn)單恢復(fù)模式切換到完整恢復(fù)模式或大容量日志恢復(fù)模式之后,才會(huì)開始一個(gè)新的日志鏈。除非在創(chuàng)建完整數(shù)據(jù)庫(kù)備份時(shí)選擇覆蓋現(xiàn)有備份集,否則現(xiàn)有的日志鏈將保持不變。在該日志鏈保持不變的情況下,便可從媒體集中的任何完整數(shù)據(jù)庫(kù)備份還原數(shù)據(jù)庫(kù),然后再還原相應(yīng)恢復(fù)點(diǎn)之前的所有后續(xù)日志備份?;謴?fù)點(diǎn)可以是上次日志備份的結(jié)尾,也可以是任何日志備份中的特定恢復(fù)點(diǎn)。 一個(gè)備份方案例子: 某個(gè)站點(diǎn)在星期天晚上執(zhí)行完整數(shù)據(jù)庫(kù)備份。在白天每隔 4 小時(shí)制作一個(gè)事務(wù)日志備份集,并用當(dāng)天的備份重寫頭一天的備份。每晚則進(jìn)行差異備份。如果數(shù)據(jù)庫(kù)的某個(gè)數(shù)據(jù)磁盤在星期四上午 9:12 出現(xiàn)故障,則該站點(diǎn)可以: 1) 備份當(dāng)前事務(wù)日志;(已經(jīng)出現(xiàn)故障了,如何備份當(dāng)前事務(wù)日志?) 2) 還原從星期天晚上開始的數(shù)據(jù)庫(kù)備份; 3) 還原從星期三晚上開始的差異備份,將數(shù)據(jù)庫(kù)前滾到這一時(shí)刻; 4) 還原從早上 4 點(diǎn)到 8 點(diǎn)的事務(wù)日志備份,以將數(shù)據(jù)庫(kù)前滾到早上 8 點(diǎn); 5) 還原故障之后的日志備份。這將使數(shù)據(jù)庫(kù)前滾到故障發(fā)生的那一刻。 二、還原步驟 創(chuàng)建一個(gè)叫TestBackup的數(shù)據(jù)庫(kù),創(chuàng)建一張叫Table1的表,這個(gè)時(shí)候進(jìn)行一次完整備份,備份文件為:TestBackupDB-full.bak;接著創(chuàng)建表Table2后進(jìn)行差異備份,備份文件為:TestBackupDB-diff.bak;接著創(chuàng)建表Table3后進(jìn)行事務(wù)日志備份(如果數(shù)據(jù)庫(kù)設(shè)置了恢復(fù)模式為【簡(jiǎn)單】,那么在備份類型選項(xiàng)中將看不到【事務(wù)日志】),備份文件為:TestBackupDB-log.bak; 創(chuàng)建一個(gè)叫TestBackup2的數(shù)據(jù)庫(kù),用于測(cè)試TestBackup數(shù)據(jù)庫(kù)的備份文件的還原。 (圖1:創(chuàng)建庫(kù)結(jié)構(gòu)) (圖2:備份類型) 下面我們就可以對(duì)三個(gè)備份文件:TestBackupDB-full.bak、TestBackupDB-diff.bak、TestBackupDB-log.bak進(jìn)行還原: 步驟1:還原完整備份文件TestBackupDB-full.bak,選項(xiàng)如圖4、圖5所示,還原成功后數(shù)據(jù)列表就會(huì)如圖6所示,這是因?yàn)榛謴?fù)狀態(tài)選項(xiàng):不對(duì)數(shù)據(jù)庫(kù)執(zhí)行任何操作,不回滾未提交的事務(wù)??梢赃€原其他事務(wù)日志。(RESTORE WITH NORECOVERY) (圖3:進(jìn)入SSMS還原) (圖4:還原常規(guī)) (圖5:還原選項(xiàng)) (圖6:完整備份還原) 步驟2:還原差異備份文件TestBackupDB-diff.bak,操作如步驟1所示,這個(gè)時(shí)候的數(shù)據(jù)庫(kù)還是跟圖6的狀態(tài)一樣的。 步驟3:還原事務(wù)日志備份文件TestBackupDB-log.bak,如圖7進(jìn)入事務(wù)日志的還原操作界面;看圖8的選項(xiàng)中有指定事務(wù)的時(shí)間進(jìn)行還原(還原過(guò)程中的恢復(fù)狀態(tài)都是默認(rèn)為RESTORE WITH RECOVERY,所以這里沒(méi)有提及這個(gè)選項(xiàng))。還原后的TestBackup2數(shù)據(jù)庫(kù),還原之后的數(shù)據(jù)庫(kù)TestBackup2如圖9所示。 (圖7:進(jìn)入事務(wù)日志) (圖8:事務(wù)日志) (圖9:還原后的數(shù)據(jù)庫(kù)) 三、升級(jí) 通常來(lái)說(shuō)文章寫到這里就應(yīng)該結(jié)束了,但是很幸運(yùn),再給你介紹一下如何在對(duì)表進(jìn)行分區(qū)后的還原操作,從上面的操作來(lái)看只包括了mdf和ldf文件,但如果多了幾個(gè)ndf文件,這些還原又一樣嗎?所以我稱這部分的內(nèi)容為升級(jí)。 情景一:如果本來(lái)就有對(duì)應(yīng)的分區(qū)文件的,只要在還原的時(shí)候修改【還原為】的文件名就可以進(jìn)行還原了。 情景二:如果剛剛新建了分區(qū)文件組和文件,這個(gè)時(shí)候接著還原備份就會(huì)出現(xiàn)圖10的錯(cuò)誤(不知道是不是在SQL Server 2005的問(wèn)題);要解決這個(gè)問(wèn)題有兩個(gè)方法,第一個(gè):重啟數(shù)據(jù)庫(kù)服務(wù)再還原;第二個(gè):設(shè)置數(shù)據(jù)庫(kù)的【限制訪問(wèn)】設(shè)置為【Single】; (圖10:錯(cuò)誤) |
|