一、什么要備份數(shù)據(jù)庫 ?
在現(xiàn)實(shí)IT世界里,我們使用的服務(wù)器硬件可能因?yàn)槭褂脮r(shí)間過長,而發(fā)生故障;
Windows系列服務(wù)器有可能藍(lán)屏或者感染病毒;SQL Server數(shù)據(jù)庫也可能因?yàn)檎`操作或Bug而停止運(yùn)行。
如何有效備份SQL Server數(shù)據(jù)庫,避免故障真正發(fā)生時(shí)長時(shí)間的宕機(jī),是每個(gè)系統(tǒng)管理員必須面對(duì)的任務(wù)。
二、簡單實(shí)現(xiàn)Standby Sql Server 數(shù)據(jù)庫的原理
我這里介紹一種不需要多大硬件投入(只需一臺(tái)專用或兼用備份服務(wù)器)的Standby SQL Server的簡單配置和使用方法。
數(shù)據(jù)庫完全備份和日志備份文件通過Msdos下xcopy命令從工作環(huán)境復(fù)制到備份環(huán)境(比在SQL Server里設(shè)置日志轉(zhuǎn)移方法要簡單得多),
備份環(huán)境再根據(jù)xcopy過來的備份文件設(shè)定作業(yè)(執(zhí)行一些存儲(chǔ)過程)來完成自動(dòng)恢復(fù)操作。
如果意外發(fā)生時(shí),這樣的備份體系當(dāng)然還需要人為地來干預(yù)和恢復(fù)(如改變備份機(jī)器的IP地址和主機(jī)名或更改應(yīng)用程序的連接數(shù)據(jù)庫參數(shù)等),會(huì)丟失一些數(shù)據(jù)也在所難免。
下面是我的測(cè)試環(huán)境Standby SQL Server備份體系圖:

三、備份和恢復(fù)案例介紹
首先我們要了解系統(tǒng)所能承受的最長宕機(jī)時(shí)間是多少(假如是1小時(shí)),能承受的數(shù)據(jù)丟失最多是多少(假如是30分鐘),用它來定下備份和恢復(fù)的目標(biāo):
工作環(huán)境下的某一個(gè)SQL Server數(shù)據(jù)庫(假如是db_test)必須設(shè)置成完全故障還原模式;
然后在數(shù)據(jù)庫維護(hù)計(jì)劃里設(shè)定每天凌晨四點(diǎn)做一次完全數(shù)據(jù)庫備份(每天從0:00開始,每20分鐘做一次數(shù)據(jù)庫日志文件的備份,直到23:59分);
備份目錄下只保留最近一天內(nèi)的完全備份和日志備份文件;并把此目錄共享。
備份環(huán)境下的服務(wù)器在[控制面板]->[任務(wù)計(jì)劃]里添加一個(gè)每天0:05分開始,每20分鐘執(zhí)行一次的xcopy局域網(wǎng)上備份目錄下最新文件的任務(wù),直到23:59分。
xcopy \\192.168.0.1\db_test_backup\ F:\backup_data\db_test\ /c /y /d /s
備份服務(wù)器上SQL Server根據(jù)復(fù)制過來的備份文件,也每天0:10分開始,每20分鐘執(zhí)行一次由舊到新,逐一恢復(fù)數(shù)據(jù)庫的作業(yè)(調(diào)用我改寫的過程sp_RestoreDir實(shí)現(xiàn));
另外還有一個(gè)刪除備份服務(wù)器兩天前備份文件的作業(yè)(調(diào)用我寫的過程p_delete_db_test_backup實(shí)現(xiàn)),避免備份硬盤扇區(qū)被裝滿。
過程sp_RestoreDir的源代碼: sp_RestoreDir.sql
過程p_delete_db_test_backup的源代碼:p_delete_db_test_backup.sql
四、結(jié)束語
這里介紹的簡單實(shí)現(xiàn)Standby Sql Server 數(shù)據(jù)庫方法在我的工作環(huán)境也是運(yùn)行良好的。
它沒有主從服務(wù)器之間明顯的依賴關(guān)系,沒有復(fù)雜的配置,只要我們定好備份和恢復(fù)時(shí)間計(jì)劃表,就可以簡單實(shí)現(xiàn)實(shí)時(shí)備份數(shù)據(jù)庫的目的了。