2016年計算機(jī)等級考試四級數(shù)據(jù)庫筆記:備份和恢復(fù)數(shù)據(jù)庫

字號:


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