第三章 數據庫備份和還原

一、數據庫恢復模式

   1、完整:能夠讓數據庫恢復到出現故障的時間點和指定時間點(主要是日誌文件完

             整備份)

  2、大容量日誌:數據庫日誌不記錄對數據修改的時間(即指定的時間點)效率高只

                   能通過日誌恢復到故障點

  3、簡單:對事務日誌不活躍的邏輯日誌文件覆蓋重複利用(日誌寫滿後覆蓋完成的

            提交的事務日誌)不能利用日誌還原數據庫,只能利用完整數據庫文件恢

           

    1)簡單恢復模式 數據庫備份和還原策略

       數據小 數據變化不大 數據庫不能恢復到出現故障的時間點(重複擦寫日誌文件)

       完整數據庫備份  完整的數據庫備份還原

       select count(*) from dbo.Y_檔案  查看檔案表條數

       select * from dbo.Y_檔案  查看檔案表所有內容

       backup database zhanglwto disk='D:\zhanglwDB\databackup.bak'  備份數據庫

       restore databasezhanglw from disk='D:\zhanglwDB\databackup.bak' 還原數據庫

       backup databasezhanglw to disk=’D:\backup\databackup.bak’ with init 覆蓋原有數據庫

      備份(無with init 爲追加備份)

    2)簡單創建備份設備(可以創建備份設備代替完整的備份文件路徑)

       圖形界面 “服務器設備”—“備份設備”創建然後“創建”

       命令創建

       use master

       go

       execsp_addumpdevice ‘disk’,’mybackupfile’,’c:\backup\zhanglwDB.bak’

    3)中大型數據庫備份還原

       恢復模式(完整)能夠使用事務日誌恢復到出故障的那個時間點

       備份策略完整備份(備份數據庫和日誌)+日誌備份+日誌備份+日誌備份+日誌備份

       數據庫恢復模式(完整)在完整數據庫備份後從數據庫備份開始以後的日誌保留

       如果從來沒進行過數據庫的完整備份,日誌不保留和恢復簡單模式一樣(日誌文件重複擦寫)

       命令還原數據庫

       查看數據庫有幾個備份

       restore headeronly from disk=’c:\backup\20160121.bak’

       還原數據庫

     restore database zhanglw fromdisk=c:\backup\20160121.bakwithfile=1,replace,norecovery

    (還需要用日誌再還原 所以寫norecovery

     還原日誌

      restore logzhanglw from disk=’c:\backup\20160121.bak’ with file=2,replace,norecovery

      restore log zhanglwfrom disk=’c:\backup\20160121.bak’ with file=3,replace,recovery

     (還原最後一個日誌需要norecovery變爲recovery)

     數據庫損壞的情況下備份日誌文件:

     backup log zhanglw todisk=’c:\backup\20160121.bak’ with no_truncate


二、截斷事務日誌

     備份日誌釋放了不活躍的VLF,增加了日誌的可用空間

     截斷事務日誌釋放日誌佔用的磁盤空間

  1. backup log zhanglw to disk=’c:\backup\20160121.bak’ 將沒有活躍事務的VLF變爲可用

    空間日誌文件不能變小

  2. backup log zhanglw with no_log 截斷事務日誌,收縮日誌文件,釋放磁盤空間

  3. 手動收縮日誌文件

  4. 對數據庫再進行完整備份


三、差異備份

  1. 將數據庫恢復模式設置爲完整

  2. 備份策略完整數據庫備份+日誌備份+差異備份+日誌備份+差異備份+日誌備份

     

   差異備份實驗

  1. 創建數據庫創建表插入10條記錄

  2. 完整數據庫備份

  3. 插入10條記錄做日誌備份

  4. 插入10條記錄做數據庫差異備份

    backupdatabase zhanglw to disk=’c:\backup\20160121.bak’ with Differential

  5. 插入10條記錄做日誌備份

  6. 插入10條記錄做數據庫差異備份

  7. 還原選擇完整備份,在選擇最後一次差異備份還原即可


四、大型數據庫備份策略

     完整數據庫備份+日誌備份+主數據文件備份+日誌備份+副數據文件備份+日誌備份+

數據庫出現故障後備份的日誌

  1. 創建數據庫添加一個副數據庫文件zhanglw1

  2. 創建表插入10條記錄

  3. 完整數據庫備份

    backupdatabase zhanglw to disk=’c:\backup\20160121.bak’

  4. 插入10條記錄

  5. 進行日誌備份

    backuplog zhanglw to disk=’c:\backup\20160121.bak’

  6. 備份主數據庫文件

    backupdatabase zhanglw file=’zhanglw’ to disk=’c:\backup\20160121.bak’

  7. 插入10條記錄

  8. 備份日誌

  9. 插入10條記錄

  10. 備份副數據庫文件zhanglw1

   backup databasezhanglw file=’zhanglw1’ to disk=’c:\backup\20160121.bak’

11、插入10條記錄

12、備份日誌

13、插入10條記錄


還原數據庫的過程

  1. 備份數據庫文件損壞後的日誌

    backup log zhanglw todisk=’c:\backup\20160121.bak’ with no truncate

  2. 還原副數據庫文件zhanglw1

  3. 選擇還原文件和文件組和日誌

 

   五、使用多硬盤備份文件,提高備份速度

        exec sp_addumpdevice’disk’,’a1’,’c:\a1.bak’

        execsp_addumpdevice’disk’,’a2’,’e:\a2.bak’

       backup database zhanglw to a1,a2 withmedianame=’a12’

     還原數據庫

      restoredatabase zhanglw from a1,a2 with replace

 

  六、創建數據庫備份的鏡像備份

  1. 創建兩個備份設備

    use master

    go

    execxp_cmdshell ‘mkdir c:\backuporginal’

    execxp_cmdshell ‘mkdir c:\backupmirror’

    execsp_addumpdevice’disk’,’backuporginal’,’c:\backuporginal\backuporginal.bak’

    exec sp_addumpdevice’disk’,’backupmirror’,’e:\backupmirror\backupmirror.bak’

  2. 備份

    backup databasezhanglw to backuporginal mirror to backupmirror with format

  3. 使用其中的任意一個還原

    restore databasezhanglw from backuporginal with replace

    restoredatabase zhanglw from backupmirror with replace

 

七、SQL2005數據庫快照

  1. 對數據庫進行危險操作之前需要做快照,使用快照還原數據庫

  2. 想要對某個時間點的數據庫中的數據進行分析

   創建數據庫快照

CREATE DATABASE zhanglw1400 ON

( NAME = N'zhanglw', FILENAME =

N'c:\snapshot\zhanglw_1200.ss')

AS SNAPSHOT OF zhanglw

GO

 

恢復快照

RESTORE DATABASE zhanglw

FROM DATABASE_SNAPSHOT = 'zhanglw1400'

GO

 

  八、 備份還原master數據庫

     1、備份系統數據庫

       backup databasemaster to disk='C:\backup\masterbackup.bak'

 2、停止SQL服務

C:\Documents andSettings\Administrator>net stop mssqlserver

     3、以單用戶模式啓動SQLServer

                            wKioL1asC7LjuU6bAABwrwkorIo584.png

 4、在命令提示符下輸入sqlcmd 還原master數據庫

      restore database master from disk='C:\backup\masterbackup.bak'

wKioL1asC-iQRbm3AAAeuri-VyU618.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章