對於常常應用MS-SQL的廣大鄕民們,對於目前沒有太多錢可運用的單位
MS-SQL備援方案有沒有更經濟一點的呢?這個問題應該帶給大家很大的困擾吧!
對於常常應用MS-SQL的廣大鄕民們,對於目前沒有太多錢可運用的單位
MS-SQL備援方案有沒有更經濟一點的呢?這個問題應該帶給大家很大的困擾吧!
其實Jason也曾深深的被困擾過,下列是Jason後來應用的方法,看看能否給大家一些想法。
若要達熱備援(Hot Site)可以透過Cluster技術達成,但其成本之高,若客戶是政府單位,且必須採用中信標的話,其試算如下:
名稱 單價 數量 小計 Windows server 2003 R2 Enterprise edition NT$ 64,698 1 NT$64,698 Windows Server 用戶端存取授權 (User or Device CAL) NT$769 5 NT$3,845 DB Microsoft SQL Server 2005 Std edition NT$ 24,169 1 NT$ 24,169 SQL Server 用戶端存取授權 (User or Device CAL) NT$4,332 5 NT$21,660 1組 2組OS 小計 NT$114,372 總計 NT$228,774
光是個軟體授權費用就要將近11萬5千元,更別說硬體,若是要建置為Failover cluster
除了要一台SAN,兩片Disk Control Card還得要再買兩台中階伺服器
一台SAN至少要買到48萬元,一台伺服器至少買16萬5千元
光是硬體設備就將近85萬元+23萬的軟體授權,將將好快1百萬,老闆不殺了你我才不信,鬼才敢玩。
Failover示意圖
於是,Jason想了一個方法,透過批次檔設定兩台Server的自動工作排程來呼叫整個備份及備援的程序
首先我們先確認一下需求的環境:
1.至少要有一種方法可以傳遞備份檔(.bak) ps.本範例以網芳為例。
2.主要伺服器要能夠信任備援伺服器的服務要求
3.備份檔案名稱必須相同
4.有一組可做還原的SQL帳戶。
為符合上述要求,假設主要伺服器IP為192.168.1.3,備援伺服器IP為192.168.1.5,其程序如下:
1.每天晚間半夜3點整是主要伺服器將資料完整備份至指定的目錄中
2.備援伺服器於每天半夜3點半自動將主要伺服器的備份檔透過網芳將檔案拉取過來
3.將檔案取得後透過T-Script自動的將資料還原到備援伺服器
主要伺服器透過網路讓備份的檔案能直接取取,其路徑為:\\192.168.1.3\databasesync\db.bak
備援伺服器將備份的檔案抓取過來至本機的磁碟內,其路徑為:d:\databasesync\
首先請先於主要伺服器上設定備份工作,並且設定完整備份至指定的檔案名稱,並且使用覆蓋原檔的方式
接下來在備援伺服器中建立一個批次檔(.bat),其內容如下:
osql -S "備援伺服器電腦名稱" -U 可執行還原的帳號 -P "可執行還原的帳戶密碼” -i 還原T-Script的實體路徑.sql
exit
其中還原T-Script的檔案(.sql)內容如下:
GO
ALTER DATABASE 資料庫名稱 SET single_user WITH rollback immediate
GO
RESTORE DATABASE 資料庫名稱 FROM DISK='d:\databasesync\db.bak’ WITH RECOVERY
GO
ALTER DATABASE 資料庫名稱 SET multi_user
GO
接下來手動的執行主要伺服器的備份程序,及備援伺服器的排定工作即可測試。
批次檔運作示意圖
這個方法可以直接在批次檔中加入其它欲備援的資料庫T-script,只要你在主要伺服器上有完整備份出欲備援的資料庫,並且將還原的t-script另外新增即可。
Anything keeps Availability.
Anywhere keeps Integrity.
Anytime keeps Confidentiality.
keep A.I.C. = Information Security