複製鏈接
請複製以下鏈接發送給好友

DBTwin

鎖定
1.當前數據庫用户面臨的問題
隨着信息時代的發展,公司企業的運作越來越依賴於計算機系統。大量有關企業生產、銷售的數據維繫着企業的生存,是企業珍貴的無形資產。這些數據一旦因為存儲系統遭受到失竊、斷電或不可避免的自然災害,造成大量丟失,將會給企業帶來重大的經濟損失。
根據Gartner的調查數據,在經歷大型災難事件而導致系統停運的公司中,有五分之二左右的公司再也沒有恢復運營,剩下的公司中也有接近三分之一在兩年內破產了。而由於數據庫的故障導致的重大事故確是時有發生的,讓我們來看幾個實例:
外文名
DBTwin
類別1
數據庫數據可靠性
類別2
數據庫系統性能
類別3
系統服務的可用性

目錄

DBTwin實例

實例1:2005年12月5日,國內某著名網絡遊戲公司的數據庫服務器出現嚴重宕機事故,造成眾多玩家數據丟失並蒙受經濟損失
實例2:2005年6月9日某證券公司股票交易系統的數據庫出現故障,股票無法正常買賣,迫使股民望“紅”興嘆。
實例3:2002年7月23日國內某機場數據庫系統宕機,導致6000名旅客長時間滯留機場。
實例4:2000年國內某銀行的支付系統突然死機,給廣大用户造成極大的損失和不便。
以上發生的這些事件都是與企業數據庫系統相關的故障。
另外,幾乎每個數據庫客户都或多或少地存在數據庫性能問題,當然數據庫性能問題涉及很多方面,其中,能否採用“集羣”的方法來提高性能,我們公司研究的重點。
概括來講,當前數據庫系統已經成為了企業信息系統的瓶頸,究其原因,各廠家的解決方案無外乎在下列三大方面無法取得同步的進展:
1)數據庫數據可靠性
2)數據庫系統性能
3)系統服務的可用性
當前幾乎所有的數據庫系統解決方案,都無法的象真正的集羣系統那樣,在上述三方面同時具有良好的可伸縮性,具體來講,當前數據庫系統存在下列各種各樣的問題:
1.企業只有一份實時生產數據集,一旦主數據庫系統發生故障,將導致業務中斷,數據恢復很麻煩,甚至丟失部分數據。
2.實時數據備份採用主備機串行復制數據的方式,該方式延長了業務處理的時間,降低了系統的工作效率,增大了系統出錯幾率。
3.在實際的工作中,數據庫系統宕機事件時有發生,無法完全實現7X24小時不停機服務
4.在實行異步數據備份的數據庫系統中,備份數據庫的資源被極大地浪費了。
5.現有數據庫的升級方式多為向上擴展方式,即:服務器—〉小型機—〉大型機的升級方式,既不經濟,又缺乏伸縮性。
6.數據庫系統屬於磁盤密集型操作,現有的數據庫系統解決方案在應對大規模、頻繁訪問時(如電子交易網站等),存在I/O瓶頸。
2.當前市場上存在的針對數據庫的解決方案
由於“集羣”概念的廣為人知,因此,不少公司推出了針對數據庫的“集羣”解決方案。但是,我們進行仔細的甄別之後,發現當前市場上存在的,除我們的DBTwin數據庫集羣解決方案之外,主要是下面三類產品之一或者是它們的適當組合。

DBTwin主要技術

串行復制技術,本來是用於數據複製和數據備份的,離人們熟悉的“數據庫集羣”的概念有一定的距離。但是由於計算機軟硬件技術和網絡通訊技術的快速發展,使得利用這種概念和技術構成的“數據庫集羣”有了一定的可行性。此類集羣,又可以分兩類:
1.串行異步複製。
圖1 圖1
此種方式是異步串行復制或日誌拷貝(Log Shipping)。 主數據庫完成事務處理後,生成事務處理日誌,日誌記錄通過FIFO隊列,進入備份數據庫處理,從而得到備份數據。此種方式的缺陷在於:
a. 複製隊列溢出問題:主數據庫是並行處理而日誌拷貝是串行的,因此備份數據庫處理日誌記錄也是串行的。因此,FIFO隊列的溢出隨時可能發生。一旦發生,隊列必須重建,從而需要重新建立備份數據庫。此種方法對於一般客户來講是不可行的。
b. 或者為了避免隊列溢出,必須保證主數據庫處理事務的速度小於備份數據庫,這樣將嚴重束縛主數據庫的性能發揮。
c. 由於日誌拷貝是異步的,主備數據庫不是實時一致。因此無法用備份數據庫作負荷均衡。
d. 由於主備數據庫永遠不一致, 主數據庫一旦發生事故,就一定會丟失數據。在這種情況下,要麼需要手工恢復數據庫,這會消耗大量的人工成本,或者數據根本就不能恢復。
2.串行同步複製。
此類集羣往往是由昂貴的專用軟硬件構成的,原理圖如下:
圖2 圖2
此類系統採用專用的高速網絡和軟件技術,將每個數據庫的請求,通過同步複製的方式,同步在主備兩台數據庫服務器上執行正確後,才將結果返回給數據庫客户。
此係統的特點是:
a. 主數據庫被強迫與備份數據庫同步串行處理,因此性能受到限制。
b. 主備數據庫中任意一個出現問題,都會迫使事務處理交易回滾,因此整個系統的可靠性比單機系統降低了一半。
c. 由於以上問題,這種備份方式只適用於近距離光纖網絡(5英里)。
d. 專用系統造價昂貴,又加上述明顯缺陷,因此市場上很少被採用。
B.基於雙機容錯技術
從技術適應性的角度講,雙機容錯比較適合於無狀態應用,或者狀態信息較少的應用切換,以此達到應用級的高可用性目的,其實並不適合於數據庫級的應用切換。
圖3 圖3
此種結構往往是兩個服務器共享一個磁盤陣列,這裏兩個服務器共享一個虛擬的IP供數據庫客户使用,形成一個單一的邏輯數據庫映象。此種所謂的數據庫集羣的目的是,一旦主機系統出現問題,備份系統通過心跳機制的檢測,完成從主機系統到備份系統的切換,它有下列特點:
a. 此種高可用性解決方案只是無狀態系統(典型的如Web服務器)的普通容錯切換思想在數據庫領域的應用。
b. 此係統本身只有一個單一的數據映象,數據儲存在共享的磁盤陣例上,因此共享的磁盤陣例成為了整個系統的單點錯誤源。
c. 由於是單一數據映象,因此必須採用通常的複製或備份方法獲取第二份數據,以保證數據的安全性。因此所有複製或備份方法的缺點,此類系統全部存在。
d. 主機系統和備份系統之間是沒有任何負載均衡關係的,在正常情況下,備份系統是閒置在那裏,因此對用户來説是一種投資浪費。
e. 在錯誤切換的時候,往往存在切換時間長,而且更嚴重的是存在丟失用户交易數據丟失的現象,結果導致系統被迫停止服務,或者需要人工修復數據,或者數據永遠找不回來。
f. 在錯誤切換的時候,有時候會發生備份系統的數據庫啓動不了的情況,這時候,整個數據庫系統也就無法訪問了,這與雙機方案本身是高可用性方案的宗旨是相牴觸的。
C.以RAC為代表的系統
RAC的英文全稱是:Real Application Cluster(真正的應用級集羣)。我們需要關注的是“應用級”。為了緩解數據庫系統日益增長的性能壓力,ORACLE公司推出了RAC系統。它基本結構如下:
圖4 圖4
此類系統,專門是針對數據庫性能問題而提出的。採用共享磁盤陣列的方式,因此在結構上和上述雙機容錯相似,不同的地方在於此係統中的數據庫節點之間採用的不是簡單的心跳檢測,而是ORACLE公司自己定義的一套複雜的信息交換協議,以此來動態分配來自數據庫客户端的請求。它的特點是:
a. 是個應用級的集羣,也就是針對ORACLE的數據庫管理系統(因為數據庫管理系統對於操作系統來講,就是一個“應用程序”,因此被稱為“應用級集羣”),專門為提高數據庫性能而設計。
b. 此係統本身只有一個單一的數據映象,數據儲存在共享的磁盤陣例上,因此享的磁盤陣例成為了整個系統的單點錯誤源。
c. 管理配置複雜。
d. 由於是單一數據映象,因此必須採用通常的複製或備份方法獲取第二份數據,以保證數據的安全性。因此所有複製或備份方法的缺點,此類系統全部存在。
e. 由於數據庫系統本身具有高I/O的特性,因此,RAC系統裏,磁盤I/O是提高性能的關鍵地方。
綜合上所述,針對數據庫系統普遍存在的三大方面的問題,上述各個技術和方案,各有不同的側重,實現的代價和複雜度也各不相同,但是它們有共同的特點是:只解決數據庫系統的某一方面的問題,甚至在解決這方面問題的時候,同時加重了另外一個或兩個方面的問題。
DBTwin是無錫浙潮科技基於動態併發事務的理念設計出的新型數據庫集羣軟件,對當前數據庫集羣領域是一次革命性的突破。由DBTwin構成的新型數據庫集羣在數據安全性、高性能和服務可用性方面均具有非常好的伸縮能力,因此,我們稱其為“數據庫擴展器”(Database Scaler)。
數據庫擴展器DBTwin允許同時連接n個數據庫,由DBTwin網關對它們進行統一管理。而對於客户端來講,DBTwin屏蔽了後面的n台數據庫,它看到的只是由DBTwin網關表現出來的一個虛擬數據庫服務,只連接客户端只需要連接此虛擬的IP和端口,就能象訪問普通數據庫那樣進行操作。DBTwin數據庫集羣的原理結構如下圖所示:
圖5 圖5
DBTwin最大的特色是能夠對訪問數據庫的事務(Transaction)進行併發地處理:當DBTwin網關接收到插入、修改、更新等事務操作時,它同時將這個事務(Transaction)發送到後面連接的n台數據庫上,這樣n台數據庫中的數據同時得到了更新;由於在任何時刻,DBTwin網關後面連接的n台數據庫的數據是完全一致的,因此當DBTwin網關接收到查詢操作時,整個數據庫系統可以實現負載均衡(Load Balance),由此達到客户訪問負荷的動態分擔,提高整個系統的響應能力。
4.DBTwin的實現原理
DBTwin是一箇中間件服務軟件,它工作在微軟的數據庫專用協議TDS層之上,如下圖所示:
圖6 圖6
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集羣系統的,這樣整個數據庫系統的可用性就大大提高了。
5.DBTwin的特性
DBTwin有以下特性:
數據可靠性和安全性大大增強– 由於任何時刻系統同時擁有多份數據集,因此大大提高了整個系統的數據可靠性和安全性。假設單台數據庫服務器出現錯誤的概率為0.01%,n台數據庫構成的集羣系統出錯的概率就是。。
服務的可用性大大增強– 如果某一時刻,一台數據庫服務器出現問題,其它的數據庫服務器仍然能夠正常工作;同時,在利用DBTwin提供的PRT(高級同步工具)進行修復的同時,系統服務可以正常進行,真正使客户的數據庫系統永遠在線。
顯著提升數據庫系統的性能–DBTwin能夠在多個獨立的數據庫系統之間實現動態負載均衡,進而顯著提升數據庫系統的整體性能。
充分利用已有投資,降低系統TCO(總體擁有成本)–在現有所有別的方案中,備份數據庫服務器平時是閒置在那裏的,無形中是一種浪費,DBTwin將這備份數據庫服務器也充分利用起來,提高了資源的使用效率,降低了整個數據庫系統的TCO。
保證數據庫系統具有良好的伸縮性 –通過增加新的數據庫服務器即可提升系統的性能、可靠性等。
6.DBTwin技術指標
A. 非入侵部署
與所有的系統服務一樣, DBTwin也是通過唯一的入口-一對(IP,port)來向外提供數據服務。因此,應用程序及其數據庫接口不需作任何修改。支持所有的數據庫接口:ADO .Net、ADO、RDO、DAO、OLE DB、ODBC、DB-LIBRARY等。
Microsoft SQL Server 2005/2008的標準版和企業版。
C. 事務處理同步複製
通過常用的寬帶網絡, 快速的事務處理同步複製
D. 高系統可用性
自動的錯誤恢復,真正把意料之內和意料之外的停機時間縮至最短。網關在錯誤恢復期間的停止服務間隙達到小於10秒。
E. 零單點錯誤源
從DBTwin網關這一部件開始,整個數據庫系統是完全、徹底地物理冗餘。
F. 數據“零”丟失
DBTwin使得系統同時擁有多個實時一致的數據集,這樣從理論上講,就真正消除了數據丟失的任何可能性。數據庫可靠性達到目5個9,即99.999%。
G. 動態負載均衡
DBTwin對只讀數據庫查詢操作可以進行自動的判別和動態負載均衡,這是當前唯一實現的針對數據庫的動態負載均衡技術,此技術可以大大改善整個數據庫系統的性能。性能提升在30%~300%之間,具體提升比例取決於應用系統及網絡結構和軟硬件的配置。
H. 可伸縮性
可伸縮的數據庫性能(負載均衡+非入侵式的數據庫陣列擴展),使得數據庫具有可伸縮性。需要更多的數據庫性能的時候,只要增加數據庫服務器就可以了。
I. 容災能力
具備即時的災難恢復能力。
J. DBTwin自身的雙機容錯
DBTwin支持自身的雙機主備容錯切換,也可以採用第三方的HA方案解決DBTwin自身的容錯問題。
7.DBTwin與備份/複製軟件,及數據庫鏡像的功能、特點比較


DBTwin
備份(複製)軟件
鏡像
1
2
部分支持
部分支持
3
支持併發數據庫操作
4
支持動態負載均衡
部分支持
部分支持
5
工作方式
並行
串行
串行
6
支持多份數據集
7
支持多份一致數據集
7
單點錯誤源
8
支持業務連續性程度
9
數據丟失可能性
10
錯誤恢復自動化程度
8.DBTwin支持的系統環境
DBTwin集羣代理:
硬件環境:
處理器:最低要求:600 MHz推薦使用:1 GHz 或更高
內存:最低要求:256 MB推薦使用:512MB 或更大
磁盤空間:100M硬盤
軟件環境:
操作系統:
windows server 2003 sp2 32/64位 標準版/企業版
windows server 2008 sp2 32/64位 標準版/企業版
windows server 2008R2 標準版/企業版
數據庫:
Microsoft SQL Server 2005 SP4 標準版/企業版
Microsoft SQL Server 2008 SP2 標準版/企業版
Microsoft SQL Server 2008R2 標準版/企業版
DBTwin集羣網關:
硬件環境:
處理器:最低要求:600 MHz推薦使用:1 GHz 或更高
內存:最低要求:512 MB推薦使用:1 GB 或更大
磁盤空間:200M硬盤
軟件環境:
windows server 2003 sp2 32/64位 標準版/企業版
windows server 2008 sp2 32/64位 標準版/企業版
windows server 2008R2 標準版/企業版