[SQL SERVER][Maintain]備份策略

[SQL SERVER][Maintain]備份策略

良好的資料庫備份策略個人認為相當重要,

如果DBA沒有好好思考依資料庫重要性來規劃備份策略的話,

假設那天遇到物理(硬碟掛了)或邏輯(使用者誤刪資料表..等)相關錯誤造成資料庫(資料)毀損,

而且也沒有該資料庫任何備份檔案的話,到時我想任誰也沒辦法挽救資料庫(資料),

而那時後悔也來不及了,這篇我大概介紹一下公司生產環境的備份策略,

但如果有更好的備份策略請告知我一聲,謝謝拉。

 

一、依現有資料庫重要性規劃備份頻率週期

二、依完整備份、差異備份、交易紀錄檔備份規畫備份策略

 

生產環境資料庫的備份策略。

A.每個禮拜三和日進行完全備份(凌晨00:00)。

B.一、二、四、五、六進行差異備份(晚間23:00)。

C.每小時備份交易紀錄檔(每天每小時)。

D.檔案寫入遠端網路磁碟均不刪除,本地端只留當週備份檔案

image

 

個人比較喜歡使用Script來備份。

 

Sql

--完整備份
Declare @Path Nvarchar(2000)
Set @Path ='E:\Backup\ASSET_Full_'+Replace(Convert(Nvarchar,Getdate(),120),':','')+'.bak'
Backup Database [ASSET] To disk=@Path
WITH COMPRESSION
 
--差異備份
Declare @Path Nvarchar(2000)
Set @Path ='E:\Backup\ASSET_Diff_'+Replace(Convert(Nvarchar,Getdate(),120),':','')+'.diff'
BACKUP DATABASE [ASSET] TO DISK = @Path
WITH DIFFERENTIAL,COMPRESSION
 
--備份交易紀錄檔
Declare @Path Nvarchar(2000)
Set @Path ='E:\Backup\ASSET_Log_'+Replace(Convert(Nvarchar,Getdate(),120),':','')+'.trn'
BACKUP LOG [ASSET] TO DISK = @Path
WITH COMPRESSION

Bat

--Call_Full.bat
sqlcmd -S YourSQLInstance -U youraccount -P yourpassword -i E:\backup\scripts\Full.sql
 
--Call_Diff.bat
sqlcmd -S YourSQLInstance -U youraccount  -P yourpassword  -i E:\backup\scripts\Diff.sql
 
--Call_Log.bat
sqlcmd -S YourSQLInstance -U youraccount  -P yourpassword  -i E:\backup\scripts\Log.sql

image

 

再利用Win2008工作排成建立相關工作(異地備份也是很需要的)就大功告成了。

image