[SQL SERVER][Maintain]備份策略
良好的資料庫備份策略個人認為相當重要,
如果DBA沒有好好思考依資料庫重要性來規劃備份策略的話,
假設那天遇到物理(硬碟掛了)或邏輯(使用者誤刪資料表..等)相關錯誤造成資料庫(資料)毀損,
而且也沒有該資料庫任何備份檔案的話,到時我想任誰也沒辦法挽救資料庫(資料),
而那時後悔也來不及了,這篇我大概介紹一下公司生產環境的備份策略,
但如果有更好的備份策略請告知我一聲,謝謝拉。
一、依現有資料庫重要性規劃備份頻率週期
二、依完整備份、差異備份、交易紀錄檔備份規畫備份策略
生產環境資料庫的備份策略。
A.每個禮拜三和日進行完全備份(凌晨00:00)。
B.一、二、四、五、六進行差異備份(晚間23:00)。
C.每小時備份交易紀錄檔(每天每小時)。
D.檔案寫入遠端網路磁碟均不刪除,本地端只留當週備份檔案。
個人比較喜歡使用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
再利用Win2008工作排成建立相關工作(異地備份也是很需要的)就大功告成了。