数据库集群
數據庫集群
一.數據庫集群的定義 數據庫集群,顧名思義,就是利用至少兩臺或者多臺數據庫服務器,構成一個虛擬單一數據庫邏輯映像,像單數據庫系統那樣,向客戶端提供透明的數據服務。 這里有兩個關鍵點: 1.??兩臺或者多臺數據庫服務器:如果只有一臺數據庫服務器是不能稱其為集群的。 2.??透明的服務:集群向客戶端提供的服務與單機系統向客戶端提供的服務,從通訊協議上保持二進制兼容。 二.與分布式數據庫系統的區別??
此種方式是數據的異步串行復制。主要采用數據庫事務日志傳送或者硬盤數據塊傳送技術來實現,SQL Server自帶的復制、鏡像和SQL2012新出的AlwaysON(備機可讀)以及第三的一些鏡像Mirror技術都是屬于此類產品,此類技術和產品本質上就是數據備份技術和產品。下列以事務日志傳送(Log Shipping)為例來說明。主數據庫完成事務處理后,生成事務處理日志,日志記錄通過FIFO隊列,進入備份數據庫處理,從而得到備份數據。此種方式的缺陷在于: a)? ?主數據庫并行處理事務而日志拷貝是串行的,而備份數據庫處理日志記錄也是串行的。因此,FIFO隊列的溢出隨時可能發生。一旦發生,隊列必須重建,從而需要重新建立備份數據庫。此種方法對于一般客戶來講是不可行的。 b)? ?由于日志拷貝是異步的,主備數據庫不是實時一致,兩者之間存在“時間差”,因此如果用備份數據庫作負荷均衡,這樣的應用存在邏輯上的漏洞,可能會發生數據錯亂。 c)? ?由于主備數據存在時間差, 主數據庫一旦發生事故,理論上一定會丟失數據。在這種情況下,要么需要手工恢復數據庫,這會消耗大量的人工成本,或者數據根本就不能恢復。 d)? ?對主機的性能影響,根據測試一般在15%到25%之間。 b.串行同步復制 此類集群往往是由昂貴的專用軟硬件構成的,原理圖如下:??
此類系統采用專用的高速網絡和軟件技術,將每個數據庫的請求,通過同步復制的方式,同步在主備兩臺數據庫服務器上執行正確后,才將結果返回給數據庫客戶。此系統的特點是: a)? ?主數據庫被強迫與備份數據庫同步串行處理,因此性能受到限制。 b)? ?主備數據庫中任意一個出現問題,都會迫使事務處理交易回滾,因此整個系統的可靠性比單機系統降低了一半。 c)? ?由于以上問題,這種備份方式只適用于近距離光纖網絡(5英里)。 d)? ?專用系統造價昂貴,又加上述明顯缺陷,因此市場上很少被采用。 2.基于共享存儲的雙機容錯技術 從技術適應性的角度講,雙機容錯比較適合于無狀態應用,或者狀態信息較少的應用切換,以此達到應用級的高可用性目的,其實并不適合于數據庫級的應用切換。??
此種結構往往是兩個服務器共享一個磁盤陣列,這里兩個服務器共享一個虛擬的IP供數據庫客戶使用,形成一個單一的邏輯數據庫映象。此種所謂的數據庫集群的目的是,一旦主機系統出現問題,備份系統通過心跳機制的檢測,完成從主機系統到備份系統的切換。這種方案在市場上被稱為“雙機集群”或者“雙機熱備”,簡稱參見“雙機”,但微軟稱之為“故障轉移集群”。它有下列特點: a.??此種高可用性解決方案只是無狀態系統(典型的如Web服務器)的普通容錯切換思想在數據庫領域的應用。 b.??此系統本身只有一個單一的數據映象,數據儲存在共享的磁盤陣例上,因此共享的磁盤陣列成為了整個系統的單點錯誤源。 c.??由于是單一數據映象,因此必須采用通常的復制或備份方法獲取第二份數據,以保證數據的安全性。因此所有復制或備份方法的缺點,此類系統全部存在。 d.??主機系統和備份系統之間是沒有任何負載均衡關系的,在正常情況下,備份系統是閑置在那里,因此對用戶來說是一種投資浪費。 e.??在錯誤切換的時候,往往存在切換時間長,而且更嚴重的是可能會存在丟失用戶交易數據丟失的現象,結果導致系統被迫停止服務,或者需要人工修復數據,或者數據永遠找不回來。 3.以Oracle RAC為代表的系統 RAC的英文全稱是:Real Application Cluster(真正的應用級集群)。我們需要關注的是“應用級”。為了緩解數據庫系統日益增長的性能壓力,Oracle公司推出了RAC系統。它基本結構如下:??
此類系統,專門是針對數據庫性能問題而提出的。采用共享磁盤陣列的方式,因此在結構上和上述雙機容錯相似,不同的地方在于此系統中的數據庫節點之間采用的不是簡單的心跳檢測,而是Oracle公司自己定義的一套復雜的信息交換協議,以此來動態分配來自數據庫客戶端的請求。它的特點是: a.??是個應用級的集群,也就是針對Oracle的數據庫管理系統(因為數據庫管理系統對于操作系統來講,就是一個“應用程序”,因此被稱為“應用級集群”),專門為提高數據庫性能而設計。 b.??此系統本身只有一個單一的數據映象,數據儲存在共享的磁盤陣例上,因此享的磁盤陣例成為了整個系統的單點錯誤源。 c.??管理配置復雜。 d.??由于是單一數據映象,因此必須采用通常的復制或備份方法獲取第二份數據,以保證數據的安全性。因此所有復制或備份方法的缺點,此類系統全部存在。 e.??由于數據庫系統本身具有高I/O的特性,因此,RAC系統里,磁盤I/O是提高性能的關鍵地方。 f.??依據不同的數據庫應用,有的性能有所提升,有的性能可能會反而下降。 4.基于實時數據同步技術 基于此技術構造的數據庫集群是市場上的新興力量,它又具有兩類,分別是: a.具有獨立網關 下面以DBTwin為例來說明其技術特點。??
DBTwin采用了冗余設計原理,對于來自客戶端的請求,請求被分成兩類:查詢請求和數據更新請求。對于數據更新請求,集群內部各節點之間保持數據的實時同步一致;對于數據的查詢請求,則可以在集群各節點之間負載均衡執行。它的特點是: a)? ?負載均衡的單元是客戶端的每個獨立請求,這點除了Oracle RAC集群,是市場上獨有的。 b)? ?實時冗余一致的多份數據,從理論上講實現了數據的零丟失。 c)? ?由于可以做到數據零丟失,因此在系統發生任意故障條件下,可以做到系統的對外服務不停止。 d)? ?此系統使用了專用高速數據同步技術,根據測試,數據同步速度能SQL Server的鏡像相等。 e)? ?此系統的缺點是數據同步需要花費代價,節點數量受到限制,一般2到4個節點為宜。 f)? ?此系統從宏觀上提升了整個系統的性能。 b.沒有獨立網關 當前市場上也存在下列一種基于數據實時同步的集群,其拓撲結構如下圖所示:??
此系統由于沒有獨立的集群網關,因此本質上簡化成了數據庫的實時備份系統,與實際的備份系統不同的是,它是工作在數據庫應用層。此系統的特點: a) 沒有獨立的集群網關,通過主節點的轉發來實行查詢的負載均衡。在系統壓力大的情況下,集群主機會形成性能瓶頸,無論是CPU、內存還是網絡帶寬,也可能是OS等系統內核資源,都容易因到達臨界狀態而形成瓶頸。 b) 各節點數據實時一致,對于數據容錯有利。 c) 對客戶端沒有二進制透明。 d) 負載均衡單元是數據庫連接。也就是說,在客戶端登陸數據庫的時候,靜態地指定連接到某個集群節點,此后此連接上的全部請求一律發送到該數據庫上,因此在特殊情況下,可能會出現這樣的場景:所有客戶端的連接集中在集群主機上,這時候,集群主機不但承擔了客戶端的所有查詢,還需要實時同步數據到所有的集群從機,即集群主機的CPU為100%,而集群別的節點CPU可能為0%,這樣整個系統的性能會受到嚴重影響。 e) 由于使用的是分布式事務機制(MSDTC)確保數據的實時一致性,因此數據同步的性能比較慢,根據測試,會比SQL Server鏡像慢好幾倍。 f) 同樣地,此集群的節點數量也受到限制,也是以2到4個節點為宜。 五.相關名詞解釋 1.同步 數據庫客戶端發出數據更新請求后,要等集群的每個節點全部更新后,才給客戶端返回結果。 2.異步 數據庫客戶端發出數據更新請求后,接受請求的節點(這里往往是主數據庫)立馬給客戶端返回結果,被更新的數據則會在接下來的某個時間里被復制傳輸到集群的其它節點上。 3.基于連接的負載均衡 此種負載均衡實現技術比較簡單,就是在客戶端發起登陸的時候,按照某種負載均衡算法,選擇登陸到集群某臺數據庫,此后所有客戶端的請求全部會發送到此數據庫上。 4.基于請求的負載均衡 此種負載均衡實現技術比較復雜,但是功能強大,就是在客戶端發起登陸的時候,集群網關會同時登錄到集群各節點數據庫,此后所有的客戶端請求,經過集群網關的分析被分成兩類,查詢請求根據負載均衡算法挑選一個節點執行,數據更新請求則有主機執行并實時同步數據到集群各節點。轉載于:https://www.cnblogs.com/xiaogelove/archive/2013/05/28/3103344.html
總結
- 上一篇: CentOS 6网络配置
- 下一篇: 【mysql 】sql删除重复记录 Yo