一、目前數據庫服務器情況概述
兩臺數據庫服務器,分別為主、備數據庫服務器,已做數據庫鏡像,數據實時同步,保證數據一致性;當主服務器故障時,可以在10秒鐘內自動切換至備用數據庫服務器提供服務,不間斷服務。
·優點:高可用集群,保證數據的安全性,服務的不間斷、持續性。
·缺點:在用戶訪問量不斷上升的情況下,現有單臺服務器將會面臨服務器硬件資源無法滿足需求。
二、服務器規劃方案
1、升級服務器硬件、更換高配服務器
隨著訪問量上升,需要投入新服務器,增加服務器硬件性能,滿足日益增長的流量需求。
缺點:增加了新服務器的成本,替換下的服務器浪費資源。
2、采用負載均衡設備及服務器集群技術,擴充系統的處理能力
數據庫服務器集群概述
(1)、即數據庫服務器集群,多臺服務器共同分擔數據庫流量壓力,增強帶寬的利用率、資源使用率,提高性能和速度。
(2)、擴展性強:隨著訪問量上升,當系統要更高數據庫處理速度時,只要簡單地增加數據庫服務器就可以得到擴展,無需增加高配服務器、避免升級硬件造成的資源浪費。
(3)、負載均衡可以真正的保證SQL Server數據庫服務器不間斷的提供服務,在服務器發生故障的時候實時切換到其他服務器上繼續提供服務,切換時間為“零”。
優點:
(1)、擴展性強,無需增加高配服務器、只需要在集群節點中增加相應服務器、即可滿足增長的流量壓力,避免升級硬件造成的資源浪費,節省成本。
(2)、提高帶寬利用率、資源使用率,提高性能和訪問速度。
(3)、多臺服務器數據冗余,保證了數據的安全性;服務的持續穩定運行;服務器零故障率切換。
缺點:
(1)、程序及數據庫結構需要調整,具有風險性。
(2)、SQL服務器集群屬于新技術,需要購入新設備及新技術,并且需要時間進行調試、測試,保證負載均衡的穩定性。
三、數據庫集群實施方案
Ⅰ、技術要求
·增加帶寬的利用率、緩解信息擁塞
·提高服務器硬件性能、系統訪問速度
·分擔數據庫流量壓力、提供服務器性能
·保證數據服務穩定、提高數據安全性、
·使各服務器集群實現系統的無縫擴展
Ⅱ、下列為幾種可行性方案
·Moebius for SQL Server集群
·DBTwin數據庫集群系統
·SQL轉換到ORACLE平臺, RAC集群
·數據庫路由器—ICX,實現集群
·數據庫讀寫分離,實現集群
Ⅲ、下述分別列出各方案原理及優缺點
1、Moebius for SQL Server集群 (中間件)
(1)拓撲圖
(2)實現原理
實現數據庫的集群,首先要有一個可以控制連接數據庫的控制端。在這里,它截斷了數據庫和程序的直接連接,由所有的程序來訪問這個中間層,然后再由中間層來訪問數據庫。這樣就可以具體控制訪問某個數據庫了,然后可以根據數據庫的當前負載采取有效的均衡策略,來調整每次連接到哪個數據庫。
(3)Moebius for SQL Server數據同步原理
·Moebius for SQL Server集群采用將核心程序駐留在每個機器的數據庫中的辦法,核心程序為Moebius for SQL Server 中間件,主要作用是監測數據庫內數據的變化,并將變化的數據同步到其他數據庫中。數據同步完成后客戶端才會得到響應,同步過程是并發完成的,所以同步到多個數據庫和同步到一個數據庫的時間基本相等;另外同步的過程是在事務的環境下完成的,保證了多份數據在任何時刻數據的一致性。正因為Moebius 中間件宿主在數據庫中的創新,讓中間件不但能知道數據的變化,而且知道引起數據變化的SQL語句,根據SQL語句的類型智能的采取不同的數據同步的策略以保證數據同步成本的最小化。
·數據條數很少,數據內容也不大,則直接同步數據。
·數據條數很少,但是里面包含大數據類型,比如文本,二進制數據等,則先對數據進行壓縮然后再同步,從而減少網絡帶寬的占用和傳輸所用的時間。
·數據條數很多,此時中間件會拿到造成數據變化的SQL語句,
然后對SQL語句進行解析,分析其執行計劃和執行成本,并選擇是同步數據還是同步SQL語句到其他的數據庫中。此種情況應用在對表結構進行調整或者批量更改數據的時候非常有用。
(4)優缺點
優點:
·擴展性強:當系統要更高數據庫處理速度時,只要簡單地增加數據庫服務器就可以得到擴展。
·可維護性:當某節點發生故障時,系統會自動檢測故障并轉移故障節點的應用,保證數據庫的持續工作。
·安全性:因為數據會同步的多臺服務器上,可以實現數據集的冗余,通過多份數據來保證安全性。另外它成功地將數據庫放到了內網之中,更好地保護了數據庫的安全性。
·易用性:對應用來說完全透明,集群暴露出來的就是一個IP
缺點:
·不能夠按照Web服務器的處理能力分配負載。
·負載均衡器(控制端)故障,會導致整個數據庫系統癱瘓。
2、DBTwin數據庫集群系統
(1)、拓撲圖
(2)、工作原理
DBTwin是一個中間件服務軟件,它工作在微軟的數據庫專用協議TDS層之上,如下圖所示:
TDS(Tabular Data Stream表格數據流)是微軟數據庫客戶端與SQL Server服務器進行通訊的未公開協議,DBTwin就工作在這一層,因此,DBTwin能支持所有的SQL Server客戶端數據組件。正象1433是微軟SQL Server的缺省服務端口那樣,8106是DBTwin數據庫集群的缺省服務端口,另外8105、8107、8108和8109是DBTwin或者它的代理端軟件的固定工作端口,在選擇端口的時候,避免選擇這些端口,以免發生端口沖突。
DBTwin時刻檢測來自客戶端的事務。一旦接收到客戶事務請求,DBTwin將此事務同時發給集群中的每個數據庫,并且確保所有的集群數據庫要么全部提交,要么全部回滾此事務,以此保證每個集群數據庫的數據映象始終是處于一致狀態,同時保持對數據庫客戶端的透明、無縫連接。
DBTwin是以批處理為單位來進行負載均衡的。也就是說,每當DBTwin接收到來自客戶端的一次請求,這個請求其實就是一個批處理,這時候DBTwin會對此批處理進行語法檢查,并判斷出是否能負載均衡,若可以進行負載均衡,那么DBTwin將根據某一算法,挑選出其中某臺集群數據庫來執行此批處理;如果此批處理不能負載均衡,那么DBTwin就同時給所有的集群數據庫發送此批處理請求。
在DBTwin集群啟動之前,用戶可以通過PRT高級同步工具作數據同步,或者也可以利用SQL Server提供的BACKUP/RESTORE命令來作到這一點。在DBTwin運行過程中,如果有數據庫掉線了,這時,DBTwin會有兩種方式來修復集群,一是定時自動方式,此方式是預先設置好在某個時間進行數據庫同步和DBTwin網關的重啟動,它適合于一些晚上進行批處理作業的系統。另一種方式是手工同步方式,此方式針對的是由隨機錯誤,例如網絡錯誤,服務器重啟等導致的。無論哪種方式,在同步過程中,客戶端是始終客戶訪問DBTwin集群系統的,這樣整個數據庫系統的可用性就提高了。
(3)、DBTwin技術指標
·非入侵部署
與所有的系統服務一樣, DBTwin也是通過唯一的入口-一對(IP,port)來向外提供數據服務。 因此,應用程序及其數據庫接口不需作任何修改。支持所有的數據庫接口:ADO .NET、ADO、RDO、DAO、OLE DB、ODBC、DB-LIBRARY等。
·支持數據庫
Microsoft SQL Server /6.5/7.0/2000/2005/2008的標準版和企業版。
·事務處理同步復制
通過常用的寬帶網絡, 快速的事務處理同步復制
·高系統可用性
自動的錯誤恢復,真正把意料之內和意料之外的停機時間縮至最短。網關在錯誤恢復期間的停止服務間隙達到小于10秒。
·零單點錯誤源
從DBTwin網關開始,整個數據庫系統是完全、徹底地物理冗余。
·數據“零”丟失
DBTwin使得系統同時擁有多個實時一致的數據集,這樣從理論上講,就真正消除了數據丟失的任何可能性。數據庫可靠性達到目5個9,即99.999%。
·動態負載均衡
DBTwin對只讀數據庫查詢操作可以進行自動的判別和動態負載均衡,這是當前唯一實現的針對數據庫的動態負載均衡技術,此技術可以大大改善整個數據庫系統的性能。性能提升在30%~300%之間,具體提升比例取決于應用系統及網絡結構和軟硬的配置。
·可伸縮性
可伸縮的數據庫性能(負載均衡+非入侵式的數據庫陣列擴展),使得數據庫具有可伸縮性。需要更多的數據庫性能的時候,只要增加數據庫服務器就可以了。
·容災能力
DBTwin自身的雙機容錯
DBTwin支持自身的雙機主備容錯切換,也可以采用第三方的HA方案解決DBTwin自身的容錯問題。
(4)優缺點
優點:
·數據可靠性和安全性增強: 由于任何時刻系統同時擁有多份數據集,因此大大提高了整個系統的數據可靠性和安全性
·服務的可用性增強: 臺數據庫服務器出現問題,其它的數據庫服務器仍然能夠正常工作
·提升數據庫系統性能: DBTwin能夠在多個獨立的數據庫系統之間實現動態負載均衡,進而顯著提升數據庫系統的整體性能。
·充分利用已有投資,降低總體擁有成本
·保證數據庫系統具有良好的伸縮性:通過增加新的數據庫服務器即可提升系統的性能、可靠性等。
缺點:
·DBTwin運行原理模糊,需要實際測試穩定性、可用性。
·DBTwin網關訪問數據庫,擴展硬件資源。
3、SQL轉換到ORACLE平臺
轉換數據到ORACLE平臺,采用ORACLE “RAC”來解決, “RAC”采用共享緩存(Cache)的辦法,來是實現鎖的互換,多個實例同時分擔負載。不但能負載均衡而且擴展性強。
(1)、工作原理
硬件上至少需要兩臺以上的服務器,一個共享存儲設備。同時還需要兩類軟件,一個是集群軟件,另外一個就是Oracle數據庫中的RAC組件。同時所有服務器上的OS都應該是同一類OS,根據負載均衡的配置策略,當一個客戶端發送請求到某一臺服務的listener后,這臺服務器根據我們的負載均衡策略,會把請求發送給本機的RAC組件處理也可能會發送給另外一臺服務器的RAC組件處理,處理完請求后,RAC會通過集群軟件來訪問共享存儲設備。
邏輯結構上看,每一個集群的節點有一個獨立的instance,這些instance訪問同一個數據庫。節點之間通過集群軟件的通訊層(communication layer)來進行通訊。同時為了減少IO的消耗,存在了一個全局緩存服務,因此每一個數據庫的instance,都保留了一份相同的數據庫cache。
(2)、ORACLE“RAC”、微軟集群(MSCS) 、SQL2005 鏡像對比
Ⅰ、微軟的集群解決方案中缺點:
·數據庫只運行在一個節點上,當出現故障時,另一個節點只是作為這個節點的備份;
·因為始終只有一個節點在運行,在性能上得不到提升,系統也就不具備擴展的能力;
·當現有機器性能不能滿足應用的負載時,只能更換更高配置機器;
Ⅱ、ORACLE“RAC”缺點:
·“RAC”的價格昂貴;
需增加共同存儲設備,增加成本
其次要將應用移植,代碼要重新編寫,要面臨很大風險的過程。
4、數據庫路由器--ICX
數據庫路由器是實時并發數據庫事務處理同步復制器和負載平衡器。
數據庫路由器--ICX(意思是:I SEE X DATABASE SERVERS),也就是說,在ICX后面可以同時連接N個數據庫
(1)、所有的數據庫客戶都通過ICX訪問數據庫。當訪問、查詢SQL Server數據庫的時候ICX可以根據實際情況分配服務器來提供服務,大大提高服務速度和優化性能,完成負載均衡。
(2)、ICX可以同時連接多臺數據庫(2-16臺,具體連多少臺,看客戶的具體需求而定),這若干臺數據庫的內容在任何時刻由ICX保證是完全一致的。也就是說,ICX采用了全新的并發事務處理的方式,向連接的N臺數據庫同步復制事務處理,使得系統在任何時刻具有多個一致的最新邏輯數據庫數據集。當其中一臺數據庫服務器發生故障的時候,ICX可以實時的、第一時間切換到其他服務器上來繼續提供服務。真正的實現零時間的服務器切換,大大提高安全性,真正意義的實現服務器不間斷服務。
5、數據庫的讀寫分離
(1)實現原理:
讀寫分離簡單的說是把對數據庫讀和寫的操作分開對應不同的數據庫服務器,這樣能有效地減輕數據庫壓力,也能減輕IO壓力。主數據庫提供寫操作,從數據庫提供讀操作,其實在很多系統中,主要是讀的操作。當主數據庫進行寫操作時,數據要同步到從的數據庫,這樣才能有效保證數據庫完整性。
(ebay的讀寫比率是260:1,ebay的讀寫分離)
(微軟數據庫分發)
(2)實現方法:
在MS Sql server中可以使用發布定義的方式實現數據庫復制,實現讀寫分離,復制是將一組數據從一個數據源拷貝到多個數據源的技術,是將一份數據發布到多個存儲站點上的有效方式。使用復制技術,用戶可以將一份數據發布到多臺服務器上。復制技術可以確保分布在不同地點的數據自動同步更新,從而保證數據的一致性。SQL SERVER復制技術類型有三種,分別是:快照復制、事務復制、合并復制。SQL SERVER 主要采用出版物、訂閱的方式來處理復制。源數據所在的服務器是出版服務器,負責發表數據。出版服務器把要發表的數據的所有改變情況的拷貝復制到分發服務器,分發服務器包含有一個分發數據庫,可接收數據的所有改變,并保存這些改變,再把這些改變分發給訂閱服務器。
因寫入服務器為單臺機器運行,為了增加安全性,所以需另增加一臺寫入服務器,兩臺寫入服務器做數據庫鏡像,當主寫入數據庫服務器宕機,自動切換至備用寫入數據庫服務器。
(3)優缺點
優點:
①、讀具有高性能高可靠性和可伸縮:只讀服務器,因為沒有寫操作,會大大減輕磁盤IO等性能問題,大大提高效率;只讀服務器可以采用負載均衡,主數據庫發布到多個只讀服務器上實現讀操作的可伸縮性。
②、部署成本降低,無需購買額外特定集群設備。
缺點:
①、數據的實時性差:數據不是實時同步到自讀服務器上的,當數據寫入主服務器后,要在下次同步后才能查詢到。
②、數據量大時同步效率差:單表數據量過大時插入和更新因索引,磁盤IO等問題,性能會變的很差,使用于寫入量不大的數據庫。
③、同時連接多個(至少兩個)數據庫:至少要連接到兩個數據數據庫,實際的讀寫操作是在程序代碼中完成的,容易引起混亂。
四、方案總結:
1、方案對比
序號
名稱
原理
部署過程
測試
資源協調
1
Moebius for SQL Server
清晰
不清晰
需測試可行性
2
DBTwin數據庫集群
待驗證
不清晰
需測試可行性
3
ORACLE平臺, RAC集群
清晰
不清晰
需測試可行性
技術部配合
4
數據庫路由器—ICX,
不清晰
不清晰
與廠家溝通可行性
5
數據庫讀寫分離
清晰
不清晰
需測試可行性
技術部配合
2、方案說明
因數據庫服務器集群方案資料有限,需要進行虛擬部署、測試,通過實際部署、測試,進一步驗證集群方案的可行性,穩定性、安全性等。
部署、測試過程中根據實際需求,選擇最為合適的規劃方案。