[High Available-Develop] SQL Server 2005 Mirroring – SQL Server 鏡像資料庫
[High Available-Develop] SQL Server 2005 Mirroring
– SQL Server 鏡像資料庫
SQL Server 在高可用性的架構中的鏡射架構是由兩台不同機器中的檔案複寫來達成資料檔案的保護.在鏡射架構下兩台機器會同步
檔案,而你可以架設第三台機器來擔任所謂的』見證伺服器』,這台機器會負責監控這兩台鏡像的死活.當主要伺服器如果壞掉停止服務時, 見證伺服器會通知次要主機上線運作.這樣的架構主要是在保護資料,讓你所輸入的資料有一個異機的備份.不過在鏡射備份的部分主要
還有分為高安全性與高可用性.兩者差別在請自行上微軟官網.
如果您建立了鏡射架構在您的企業環境中,那首當其衝之一的就是您的應用程式了.過去我們撰寫應用程式連結資料庫時,會要撰寫 連線字串.但是過去我們撰寫連線字串時指定資料庫是指定資料庫位置.但是在鏡像資料庫中,當主要資料庫Fail時,資料庫服務由
備援資料庫接手,但是這兩台機器是不同的伺服器個體(Instance),所以在保護資料的同時也要相對考量到寫程式時的連線字串再鏡射架構下資料庫移轉時,你的連線字串也要能跟著failover.
.
- 我們這個Lab我們會架設四台Server.
主要就是DC1(一台網域控制站,網域名稱我們定為 Example.com)
SQL1(主體資料庫,請把他加入Example.com網域)
SQL2(鏡像資料庫,請把他加入Example.com網域)
SQL3(見證資料庫,這個資料庫允許您在企業內部使用一個SQL Express 版本來安裝,請把他加入Example.com網域)
在建立SQL Server 鏡像時,我們要自行將SQL Server 主體資料庫要備份的資料庫備份出來.(在這邊我們是備份SQL1.Example.com主機上的一個資料庫)
然後在SQL Server 鏡像伺服器(SQL2.Example.com)上做還原的動作.第一次還原必須要由我們手動執行.在還原是我們要選擇不還原交易紀錄檔.
這邊簡單敘述一下鏡像架構[Mirroring].~當主要伺服器收到一筆交易時,當主要資料庫寫進資料後,主體資料庫會將這個交易記錄(log)傳送
給鏡像伺服器,然後鏡像伺服器再將資料寫進其本身的資料庫.
我們在SQL2機器上還原從SQL1備份出來的資料庫.
再來我們選擇SQL3.example.com見證資料庫
在這個畫面我們選擇[見證伺服器],這個設定就是讓[SQL3.example.com]擔任見證的工作,當主要伺服器[SQL1.example.com
]壞掉的時候,見證伺服器[SQL3.example.com]會通知鏡像伺服器[SQL2.example.com]起來工作.
選擇主體資料庫,這邊我們選擇SQL1.example.com這台機器.
再來我們SQL2.example.com 為鏡像資料庫.
再來我們選擇SQL3.example.com見證資料庫
接著我們設定完成
這時鏡像 已經是在work中了.
我們利用SMSS介面來觀察,我們同時連線[SQL1.example.com],[SQL2.examle.com]時,可以看到SQL1.example.com邊寫著(主體,以同步處理),然後看到SQL2的jstest是(鏡像,以同步處理).
這時我們對主體資料庫[SQL1.example.com]做搜尋,一開始這是一個空的資料庫,接著我們亂輸入一些資料.
這時我們對主體資料庫做搜尋,看到裡面有一些我們隨便打的資料.
接著我們將第一台主體伺服器主機停止服務.
在去看到第二台鏡像伺服器主機,這時看到主機啟動服務了,他的資料庫由鏡像變成主體資料庫了.
接著我們去對原本是鏡像伺服器的主機[SQL2.example.com]做資料的搜尋.
剛剛在主體資料庫[SQL1.example.com]所輸入的資料確實被寫入了原本的鏡像伺服器[SQL2.example.com].
然後我們在啟動第一台主體主機.
這時我們去SMSS管理介面觀察,您可以看到第一台主機上線運作了,但是這時它變成了鏡像主機了.
接著我們來建立一個簡單連接資料庫的程式,首先我們在任一台主機上建立一個test.udl.然後我們點兩下test.udl檔案.
接著我們選擇 [SQL Native Client],然後按下一步,接著到[連線]標籤,這時我們輸入[sql1.example.com],然後輸入連結
資料庫時要使用的帳號以及密碼.然後我們按下[測試連線],如果連線成功,會跳出視窗通知您.
您可以在桌面上打開一個記事本,然後我們把這個udl檔案直接拖拉到這個記事本檔案裡面.就可以看到一個以[SQL
Native Client]連接 到資料庫的連線字串. 接著我們來寫一隻 vbs程式.在連線字串上我們要加入一行[Failover partner=sql2.example.com]的程式來告訴
連線字串,當failover發生時,程式要移轉到那台機器上做連結.這邊要比較注意的是,要加入的[Failover partner] 會因為您所使用的驅動程式不同而有些許的差異.
撰寫好連線字串後,我們可以點兩下裝面上的這個vbs檔案,可以看到一個跳出的視窗,資料庫的資料被我們撈出來了.這時您
可以在去測試一下,當關閉掉主體資料庫時,資料庫服務由鏡像伺服器接手,這是我們剛剛所撰寫的資料庫連線程式 依舊是可以成功撈出資料的.
本篇文章參考以下網站資訊,.
建立資料庫鏡像工作階段的初始連接
http://technet.microsoft.com/zh-tw/library/ms366348.aspx
Connection strings for SQL Server 2005
http://www.connectionstrings.com/sql-server-2005