sql server 備份與恢複系列三 簡單復原模式下的備份與還原

來源:互聯網
上載者:User

標籤:多個   使用者模式   資料庫   alter   修改   distinct   ack   丟失   比較   

原文:sql server 備份與恢複系列三 簡單復原模式下的備份與還原

一.概述

  前面講了備份的一些理論知識,這篇開始講在簡單復原模式下的備份與還原。在簡單模式下是不能做記錄備份的,發生災難後,資料庫最後一次備份之後做的資料修改將是全部丟失的,所以在生產環境下,資料又很重要,一般不建議使用這種模式。 例如對一個資料庫有5次完整資料備份,時間是t5,  之後發生災難,就會部丟失。

  當資料庫越來越大,完整備份時間會越來越長,為了減少丟失風險,引入差異備份。例如示範:在第一次建立資料庫完整備份後,建立了三次差異備份,之後再建立完整備份,從而建立新的差異基底。不管是完整備份還是差異備份,一般只能在晚間進行。如果資料比較龐大又不允許長時間資料丟失,那簡單復原模式是不能滿足的。

二.備份示範

  在簡單復原模式下主要的備份是完整備份和差異備份。我這裡有TestLog庫,庫裡有二個表。假設周日做一次完整備份,周一到周六晚上每天做一次差異備份,到第二周的周日時開始新的基準線。如下所示

use testexec sp_addumpdevice ‘disk‘, ‘BackupTestDevice‘,‘F:\SqlService\backup\BackupTestBackup.bak‘

  

--設定復原模式為簡單恢複
 ALTER DATABASE TestLog SET RECOVERY simple
go-- 做一次完整備份到備份裝置中(備份基準) 假設在周日晚上backup database TestLog to BackupTestDevicego

go--差異備份 周一晚backup database TestLog to BackupTestDevice with differential go--差異備份 周二晚backup database TestLog to BackupTestDevice with differential go--差異備份 周三晚backup database TestLog to BackupTestDevice with differential go--差異備份 周四晚backup database TestLog to BackupTestDevice with differential go--差異備份 周五晚backup database TestLog to BackupTestDevice with differential go--差異備份 周六晚backup database TestLog to BackupTestDevice with differential go--完整備份 周日晚(新基準)backup database TestLog to BackupTestDevice with differential go--差異備份 周一晚backup database TestLog to BackupTestDevice with differential 

 在備份裝置中查看備份組
  

-- 通過指令碼查看

select distinct s.first_lsn,s.last_lsn,s.database_backup_lsn,s.position,
s.backup_finish_date,s.type,y.physical_device_name,s.backup_size
from msdb..backupset as s inner join
msdb..backupfile as f on f.backup_set_id=s.backup_set_id inner join
msdb..backupmediaset as m on s.media_set_id=m.media_set_id inner join
msdb..backupmediafamily as y on m.media_set_id=y.media_set_id
where s.database_name=‘TestLog‘
order by s.position asc

 

三. 還原示範

   將一個資料庫還原,需要構造一個正確的還原順序。在還原過程中,備份檔案結尾使用norecovery事務不恢複(正在還原。。)不可讀寫,在最後一個備份檔案結尾使用recovery事務恢複。資料庫恢複正常。

-- 切換到master庫use master
--設定單一使用者模式(否則執行下面報錯:“因為資料庫正在使用,所以無法獲得對資料庫的獨佔訪問權”)ALTER DATABASE TestLog SET OFFLINE WITH ROLLBACK IMMEDIATE
-- 從備份恢複一個全備份 ,norecovery(正在還原...)不可讀寫. file指備份組位置號restore database TestLog from BackupTestDevice with file=1, norecovery 

  

-- 恢複到差異備份檔案3,跳過差異備份2 ,看是否備份成功restore database TestLog from BackupTestDevice  with file=3, recovery

  

-- 備份結束之後,結束單一使用者模式ALTER  database  TestLog  set   online  

 下面在來示範還原差異檔案,使用舊基準。還原看會怎麼樣

-- 從舊基準中恢複一個全備份 ,norecovery(正在還原...)不可讀寫. file是1restore database TestLog from BackupTestDevice with file=1, norecovery --新基準file是8, 恢複到差異備份檔案9 restore database TestLog from BackupTestDevice  with file=9, recovery

 

 總結:對於簡單復原模式,沒有記錄備份,恢複只需要一個完整Database Backup,以及最後一個差異備份。 對於多個差異備份檔案,在還原時不需要LSN的連續性(在同一個基準內)。

sql server 備份與恢複系列三 簡單復原模式下的備份與還原

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.