第15章 備份和恢復數據庫
15.1 備份數據庫
15.1.1 概述
1、備份數據庫的作用
(1) 備份數據庫就是將數據庫數據和與數據庫的正常運行有關的信息保存起來,以備恢復數據庫時使用,其主要目的是為了防止數據的丟失。
(2) 另一作用是作為數據轉移的一種方式;
2、備份時間
(1) 對于系統數據庫應進行了修改后立即備份,對于用戶數據庫一般采用定期備份;
(2) 備份數據庫要選在數據庫操作少的時間進行,這樣可減少對備份以及數據操作性能的影響。
15.1.2 備份設備
1、 SQL Server將備份數據庫的場所稱為備份設備,它支持將數據庫備份到磁帶或磁盤上;
2、 備份方式有兩種:
(1) 先創建備份設備,然后將數據庫備份到備份設備上(永久備份設備);
(2) 直接將數據庫備份到物理文件上(臨時備份設備)。
15.1.3 創建備份設備
備份設備在操作系統一級實際上是物理文件,只是備份設備必須要先創建好,然后才能使用
1、 用企業管理器創建備份設備
2、 使用系統存儲過程創建備份設備
sp_addumpdevice[@devtype=]’device_type’,[@logicalname=]’logical_name’,
[@physicalname=]’physical_name’
其中:
(1)[@devtype=]’device_type’:為備份設備的類型,可選下列之一:
(A) Disk:使用磁盤文件作為備份設備;
(B) Pipe:使用命名管道作為備份設備;
(C) Tape:使用磁帶設備。
(2)[@logicalname=]’logical_name’:備份設備的邏輯名稱,該邏輯名稱用在BACKUP和RESTORE語句中;
(3)[@physicalname=]’physical_name’:備份設備的物理名稱。
15.1.4 備份類型
1、 完全備份
是將數據庫中的全部信息進行備份,它是恢復的基線,在進行完全備份時,不但備份數據庫的數據文件、日志文件,而且還備份文件的存儲位置信息以及數據庫中的全部對象及相關信息;
備份數據庫是要消耗時間的,在進行備份數據庫時,用戶可以訪問數據庫,它將不影響數據庫的備份,并且還可以將備份過程中發生的活動全部備份下來。
2、差異備份
是備份從最近的完全備份之后對數據庫所作的修改,它以完全備份為基點,備份變化了的數據文件和日志文件以及數據庫中其他被修改的內容,
在差異備份過程中,也允許用戶訪問數據庫和對其操作,且在備份過程中的活動也一起備份下來;
3、事務日志備份
(1) 是備份從上次備份之后的日志記錄,在默認情況下,事務日志備份完成后,要截斷日志。
(2) 事務日志記錄了用戶對數據庫進行的修改操作,為了避免記錄越來越多,必須定期地將日志記錄中不需要的部分清除掉,這種過程叫截斷日志,備份日志是截斷日志的一種方法;
(3) 如果要進行事務日志備份,必須將數據庫的故障還原模型設置為“完全”方式或“大容量日志記錄的”方式,因為在默認情況下的“簡單”方式,只能進行完全備份和差異備份,不能進行事務日志備份,因為在該模式下系統自動定期將事務日志中不活動的部分清除。
(4) 如要對數據庫進行事務日志備份,則必須先設置數據庫的故障還原模型,否則在恢復時就會出錯。這是因為不同的還原模型對日志的記錄和維護方式是不一樣的。
15.1.5 備份策略
1、完全備份
完全備份策略適合于數據庫數據不是很大,而且數據更改不是很頻繁的情況。可以幾天或幾周進行一次;
2、完全備份+日志備份
如不允許丟失太多數據,且不希望經常進行完全備份;
3、完全備份+差異備份+日志備份
該策略的好處是備份和恢復的速度都比較快,出現故障時丟失的數據也比較少;
15.1.6 實現備份
1、 使用企業管理器備份數據庫
2、 使用Transact-SQL語句備份數據庫
(1) 備份數據庫的基本語法:
BACKUP DATABASE 數據庫名
TO {<備份設備名>}|{DISK|TAPE}={‘物理備份文件名’}
[WITH [DIFFERENTIAL][[,]{INIT|NOINIT}]]
其中:
(A)<備份設備名>:將數據庫備份到已創建好的備份設備名上;
(B)DISK|TAPE:將數據庫備份到磁盤或磁帶;
(D) DIFFERENTIAL:進行差異備份;
(E) INIT:本次備份數據庫將重寫備份設備,即覆蓋掉本設備上以前進行的所有備份;
(F) NOINIT:本次備份數據庫將追加到備份設備上,即不覆蓋。
(2) 備份數據庫日志的基本語法:
BACKUP LOG 數據庫名
TO {<備份設備名>}|{DISK|TAPE}={‘物理備份文件名’}
[WITH [{INIT|NOINIT}] [{[,]NO_LOG|TRUNCATE_ONLY|NO_TRUNCATE}]]
其中:
(A) NO_LOG和TRUNCATE_ONLY:表示備份完日志后要截斷不活動的日志;
(B) NO_TRUNCATE:表示備份完日志后不截斷不活動的日志;
(C) 其他選項同備份數據庫語句的選項。
15.1.7 備份媒體集
1、 當數據庫很大時,有時一個備份設備的空間可能不能滿足要求,這里就可以將數據庫備份到多個不同的備份設備上,同時使用多個備份設備進行備份的為此設備就稱為備份媒體集;
2、 使用媒體集與使用單一備份設備的方法一樣,只需添加其他備份設備,系統會自動將這些設備作為一個備份媒體集使用;
3、 系統在使用備份媒體集時,基本是將備份所需的空間均衡地分擔到每個備份設備上;
4、 如果以后要單獨使用某個設備,則必須重新初始化備份媒體集,即刪除不需要的設備后,重寫并初始化即可,但注意的是,重新初始化后原備份媒體集上所備份的內容將全部丟失。
15.2 恢復數據庫
15.2.1 恢復前的準備及恢復順序
1、恢復前的準備
在恢復數據庫前必須限制數據庫的訪問,一般選擇“限制訪問”中的“db_owner、dbcreator或sysadmin的成員”,說明只有以上角色才可訪問數據庫;
2、恢復的順序
(1) 恢復最近的完全數據庫備份;
(2) 恢復完全數據庫備份之后最近的差異數據庫備份;
(3) 按日志備份的先后順序恢復自最近的完全或差異數據庫備份之后的所有日志。
15.2.2 實現恢復
1、用企業管理器恢復數據庫
2、用Transact-SQL語句恢復數據庫
RESTORE DATABASE 數據庫名
FROM 備份設備名
[WITH FILE=文件號[,]NORECOVERY[,]RECOVERY]
其中:
(1) FILE=文件號:標識要還原的備份集,文件號為1表示備份設備上的第一個備份集,文件號為2表示備份設備上的第二個備份集;
(2) NORECOVERY:表明對數據庫的恢復還沒有完成,使用此項恢復的數據庫是不可用的,但可以繼續恢復后續的備份;
(3) RECOVERY:表明對數據庫的恢復已完成,一般是在恢復數據庫的最后一個備份時使用此項,此時恢復的數據庫是可用的。
恢復日志的語法:
RESTORE LOG 數據庫名 FROM 備份設備名 [WITH FILE=文件號[,]NORECOVERY[,]RECOVERY]
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |