一、數據庫恢復模式
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,增加了日誌的可用空間
截斷事務日誌釋放日誌佔用的磁盤空間
backup log zhanglw to disk=’c:\backup\20160121.bak’ 將沒有活躍事務的VLF變爲可用
空間日誌文件不能變小
backup log zhanglw with no log 截斷事務日誌,收縮日誌文件,釋放磁盤空間
手動收縮日誌文件
對數據庫再進行完整備份
三、差異備份
將數據庫恢復模式設置爲完整
備份策略完整數據庫備份+日誌備份+差異備份+日誌備份+差異備份+日誌備份
差異備份實驗
創建數據庫創建表插入10條記錄
完整數據庫備份
插入10條記錄做日誌備份
插入10條記錄做數據庫差異備份
backupdatabase zhanglw to disk=’c:\backup\20160121.bak’ with Differential
插入10條記錄做日誌備份
插入10條記錄做數據庫差異備份
還原選擇完整備份,在選擇最後一次差異備份還原即可
四、大型數據庫備份策略
完整數據庫備份+日誌備份+主數據文件備份+日誌備份+副數據文件備份+日誌備份+
數據庫出現故障後備份的日誌
創建數據庫添加一個副數據庫文件zhanglw1
創建表插入10條記錄
完整數據庫備份
backupdatabase zhanglw to disk=’c:\backup\20160121.bak’
插入10條記錄
進行日誌備份
backuplog zhanglw to disk=’c:\backup\20160121.bak’
備份主數據庫文件
backupdatabase zhanglw file=’zhanglw’ to disk=’c:\backup\20160121.bak’
插入10條記錄
備份日誌
插入10條記錄
備份副數據庫文件zhanglw1
backup databasezhanglw file=’zhanglw1’ to disk=’c:\backup\20160121.bak’
11、插入10條記錄
12、備份日誌
13、插入10條記錄
還原數據庫的過程
備份數據庫文件損壞後的日誌
backup log zhanglw todisk=’c:\backup\20160121.bak’ with no truncate
還原副數據庫文件zhanglw1
選擇還原文件和文件組和日誌
五、使用多硬盤備份文件,提高備份速度
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
六、創建數據庫備份的鏡像備份
創建兩個備份設備
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’
備份
backup databasezhanglw to backuporginal mirror to backupmirror with format
使用其中的任意一個還原
restore databasezhanglw from backuporginal with replace
restoredatabase zhanglw from backupmirror with replace
七、SQL2005數據庫快照
對數據庫進行危險操作之前需要做快照,使用快照還原數據庫
想要對某個時間點的數據庫中的數據進行分析
創建數據庫快照
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
4、在命令提示符下輸入sqlcmd 還原master數據庫
restore database master from disk='C:\backup\masterbackup.bak'