一、爲什麼要使用對等事務複製
首先要說明的是使用sqlserver複製的目的
使用sqlserver數據庫複製的目的,就是要將數據庫壓力由一臺服務器分散到多臺服務器,通過一臺sqlserver服務器作爲主機,將主數據庫中的數據,複製到其他N臺備份服務器上,從而實現分佈式查詢,大大降低了主服務器的壓力.
在圖一中,右面的拓撲結構就是典型的複製,寫入的壓力,全都在B這臺服務器上,讀取的壓力平衡到兩臺機器上
圖一
綜上所述,使用sqlserver複製的目的就是均衡壓力,提高sqlserver的高可用性
類似的能夠提高數據庫高可用性的解決方案目前有四種
1 windows集羣實現sqlserver雙機熱備
2 sqlserver 數據庫鏡像
3 sqlserver日誌傳送
4 sqlserver複製
在這四種解決方案中,能夠滿足分佈式數據庫需求的只有sqlserver複製
其次爲什麼要使用事務複製呢?在sqlserver複製技術中,共有三種
1 快照複製
2 事務複製
3 合併複製
在這三種複製技術中
快照複製最簡單,定時將主數據庫中的所有數據,同步到其他備份機器中,這樣做的缺點有兩點,1 數據同步定時,不即時;2 浪費I/O資源,每次同步都是將主數據庫中的所有數據同步到其他備份機器上.快照複製的主要用途是定期初始化備份機,例如在進行事務複製時可用設定每週進行一次快照複製,有效的保證了主數據庫與其他備份數據庫的數據一致性.
合併複製較爲複雜,在合併複製中主數據庫與其他備份數據庫可以同時修改一條數據,當發生衝突是,處理起來較爲複雜.
事務複製是最適合做分佈式的,首先,要求主數據庫和其他備份數據庫中的架構和數據一致(可以通過使用相同的備份還原,快照複製等方法),當數據庫運行時,只用當主數據庫中的架構或者數據發生變動,才產生事務將變動同步到其他備份數據庫上.相比快照複製,同步即時,又省I/O資源.相比合並複製,簡單,可靠.
那爲什麼要使用對等事務複製呢?
在sqlserver 事務複製中,又分爲三種方式
1 標準事務複製
2 層次結構更新訂閱事務複製
3 對等事務複製
在上面,介紹複製技術的三種方式中,已經將了標準事務複製的好處,但是這裏要講講它的缺點,大家可以再仔細看看圖一,就會發現,所有寫入壓力都在B這臺服務器上,也就是說事務複製的瓶頸在於主服務器,當主服務器掛掉時,雖然其他備份數據依然可以提供讀取服務,但是這個數據庫系統已經掛掉了,不能寫入了.
這時應該怎麼辦?別擔心,Microsoft已經爲我們提供瞭解決方案,那就是可更新訂閱的事務複製和對等事務複製
可更新訂閱的事務複製有一個特性,可以同時在多個位置(服務器)更改同一行。這必然會帶來衝突.
所以我們選擇了對等事務複製,同一行在同一時間只能在一個位置修改.
圖一中,左邊的圖,就是典型的對等事務複製,不單單讀取的壓力被分散到多臺服務器上,連寫入的壓力也被分散了.
圖二中就是一個典型的對等事務複製實施案例
圖二
上圖顯示了三個參與數據庫,它們作爲一家在洛杉磯、倫敦和臺北均設有辦事處的國際軟件支持單位的後端數據庫。每個辦事處的支持工程師接聽客戶電話,並輸入和更新每個客戶電話的相關信息。三個辦事處的時區各相差八小時,因此不會出現工作日的重疊:臺北辦事處下班時,倫敦辦事處正開始一天的工作。如果辦事處下班時電話仍在進行中,則電話將被轉接到下一個開始辦公的辦事處的代表。
每個地點都有一臺數據庫服務器和一臺應用程序服務器,供支持工程師在輸入和更新客戶電話的相關信息時使用。拓撲按時間進行分區,因此更新只發生在正在辦公的節點。然後更新流動到其他參與數據庫。此拓撲具有下列優點:
· 獨立,但不孤立:每個辦事處都可以獨立插入、更新或刪除數據,還可以共享數據,因爲數據將複製到其他所有的參與數據庫。
· 出現故障或維護任一參與數據庫的同時可提供更高的可用性。
圖三
上圖顯示了向三節點拓撲添加節點的過程。當出現下列情形時,可以添加一個節點:
· 因爲又開設了一家辦事處。
· 爲了提供更高的可用性以支持維護或提高發生災難性錯誤時的容錯能力。
請注意:在三節點拓撲和四節點拓撲中,所有的數據庫都向其他數據庫發佈和訂閱,從而在需要維護或者一個或多個節點發生故障時,提供最大的可用性。添加節點後,必須針對性能以及部署和管理的複雜性來權衡可用性和可伸縮性的需要。