新聞中心
隨著互聯網應用的不斷發(fā)展,數據庫的重要性也越來越凸顯。當互聯網應用流量增長到一定程度時,單臺數據庫無法承受如此大的負荷。這時候,我們需要數據庫集群來進行數據存儲和負載均衡。但是,集群模式下,不同節(jié)點之間必須實現數據同步,保證數據的正確性和一致性。本文將對數據庫集群同步技術的原理進行簡述。

一、數據庫集群同步技術的作用
在數據庫集群中,如果只是簡單的將數據存儲到不同節(jié)點,那么會出現數據不一致的情況。比如說,用戶在一臺節(jié)點進行了修改,但是該節(jié)點并沒有同步到其他節(jié)點,這時候如果其他節(jié)點繼續(xù)對該數據進行修改,那么就會出現數據不一致的問題。因此,為了維護及時、準確的數據,必須要實現數據庫的同步。
二、數據庫集群同步技術的目標
數據庫集群同步技術的目標是保證在不同的節(jié)點上數據具有一致性和正確性。在這個基礎上,需要滿足以下幾個要求:
1. 數據庫的數據應該能夠通過網絡進行傳輸和同步;
2. 當數據庫中的數據在不同節(jié)點的主機上進行修改時,需要通知其他節(jié)點,讓其也能及時和正確地同步該數據;
3. 數據庫同步過程中不能影響當前系統(tǒng)的正常運行,應該保證集群在同步的同時,能夠應用程序不受影響地處理其他請求;
4. 當出現網絡分區(qū)現象時,需要通過相應的機制避免“分片”現象對數據的影響,保證集群的一致性。
三、數據庫集群同步技術的實現原理
1. 基于主從模式同步
主從模式是最基本的一種數據庫集群模式。在這種模式下,有一個主節(jié)點和若干個子節(jié)點(從節(jié)點)。所有的寫入操作都在主節(jié)點上執(zhí)行,從節(jié)點則只能執(zhí)行讀操作。主節(jié)點上的數據發(fā)生修改后,就向所有被動從節(jié)點發(fā)送數據變更信息,從節(jié)點接收到數據變更信息后,再主動與主節(jié)點進行重新交互,將修改后的數據進行同步。
該模式的優(yōu)點是簡單易懂,缺點則是存在單點故障風險和容災能力差。
2. 基于主主模式同步
在主主模式下,不同節(jié)點之間同時擁有寫操作和讀操作的功能,寫入的數據可以在不同節(jié)點之間進行復制和同步。也就是說,不同節(jié)點之間的數據都應該是完全相同的。在該模式下需要解決數據沖突、鎖競爭等問題。
主主模式在實現過程中,需要考慮到許多復雜情況的處理,比如在主主模式下,兩臺機器在不同時間段對同一條記錄進行修改時,就需要考慮數據同步的問題。同時,數據的沖突、鎖競爭等問題都需要引入解決機制,這大大增加了系統(tǒng)的復雜度。
3. 基于復制日志同步
復制日志同步是現在主流的數據庫集群同步技術之一。在這種技術下,主節(jié)點會記錄每次的數據變更情況,同時向所有從節(jié)點發(fā)送數據變更日志。從節(jié)點接收到新的數據變更信息后,就向主節(jié)點請求數據變更日志,進行數據同步。
復制日志同步的優(yōu)點在于,具有較高的性能和容災能力,且節(jié)點之間的數據一定是一致的。其缺點在于實現較為復雜,需要考慮很多實現細節(jié)。
4. 基于Voting同步
基于Voting的同步方式是一種基于指數級管道的系統(tǒng)。在該同步方式下,每個節(jié)點同時維護一個日志列表,并在每個磁盤上記錄一個計數器;當數據變更時,主節(jié)點的計數器會加1,并將日志發(fā)送給其他節(jié)點,這些節(jié)點的計數器也都會遞增。與主節(jié)點的計數器和日志項完全匹配后,才會被同步到其他節(jié)點。
Voting同步的優(yōu)點在于不會發(fā)生網絡分區(qū),并能自適應地選擇合適的同步節(jié)點。其缺點在于需要高效的分布式協(xié)議,并且執(zhí)行效率較低。
四、結論
隨著數據庫技術的不斷發(fā)展,數據庫集群同步技術也在不斷完善。對于不同的使用場景,需要選擇適合的技術方案,以保持集群的高可靠性和高性能。在選擇合適的技術方案上,需要考慮到數據一致性、容錯性、系統(tǒng)可擴展性等因素,才能夠有助于提升我們的數據庫集群架構的效率和可靠性。
相關問題拓展閱讀:
- 數據庫集群的性質
數據庫集群的性質
一.與分布式數據庫系統(tǒng)的區(qū)別 數據庫集群有的具有單份數據集,有的具有兩份或槐談多份相似的數據集,有的具有兩份或多份實時一致的數據集;而分布式數據庫系統(tǒng)往往具有完全不同的數據集。 數據庫集群往往是同構的系統(tǒng),要求集群各節(jié)點都具有相同的操作系統(tǒng)和數據庫系統(tǒng)版本,甚至補丁包的版本也要求保持一致;而分布式數據庫系統(tǒng)可以是異構系統(tǒng),包含不同的操作系統(tǒng)和不同的數據庫系統(tǒng)。 數據庫集群往往建立在高速局域網內;而分布式數據庫系統(tǒng)既可以是高速局域網,也可以是跨部門、跨單位的異地遠程網絡。 二.數據庫集群的技術指標
由于數據庫系統(tǒng)是任何一個信息系統(tǒng)的核心,因此除了業(yè)務邏輯之外,用戶還關心下面三點:
1. 系統(tǒng)性能
性能問題涉及硬件、軟件、網絡、應用設計架構、代碼質量等多方面。但是數據庫集群如果能提供負載均衡能力和自動優(yōu)化能力,則是對整個系統(tǒng)性能具有莫大的好處。
2. 數據可靠性
在系統(tǒng)發(fā)生任意故障(包括操作系統(tǒng)、數據庫引擎、硬盤或磁盤陣列或存儲網絡等故障)條件下數據丟失的可能性。有的系統(tǒng)從設計原理上注定了必然會存在理論上的數據丟失可能性,而有的系統(tǒng)因為冗余設計原理,可以保證理論上的數據零丟失。鉛改碰用容災領域的術語來講,這類似于RPO(Recovery Point Objective),但是不完全等同于RPO。
3. 服務可用性
在系殲則統(tǒng)發(fā)生任意故障(包括操作系統(tǒng)、數據庫引擎、硬盤或磁盤陣列或存儲網絡等故障)條件下整個系統(tǒng)停止對外提供數據服務的可能性。與上面的數據庫可靠性緊密關聯,如果一個系統(tǒng)從理論上存在數據丟失的可能性,那么這樣的系統(tǒng)必然會導致整個系統(tǒng)的服務停止。同樣地,用容災領域的術語來講,這類似于RTO(Recovery Time Objective),但是也同樣不能完全等同于RTO。
三.數據庫集群的分類
在市場上,數據庫集群是一個籠統(tǒng)的名詞,沒有一個權威的定義,各市場參與者往往是各取所需,推出各種特色的數據庫集群解決方案。一般地具有下列四種集群方案:
1.基于串行數據復制技術
串行復制技術,本來是用于數據傳送和數據備份的,離人們熟悉的“數據庫集群”的概念有一定的距離。但是由于計算機軟硬件技術和網絡通訊技術的快速發(fā)展,使得利用這種概念和技術構成的“數據庫集群”有了一定的可行性。此類集群,又可以分兩類:
a.串行異步復制
此種方式是數據的異步串行復制。主要采用數據庫事務日志傳送或者硬盤數據塊傳送技術來實現,SQL Server自帶的復制、鏡像和SQL2023新出的AlwaysON(備機可讀)以及第三的一些鏡像Mirror技術都是屬于此類產品,此類技術和產品本質上就是數據備份技術和產品。下列以事務日志傳送(Log Shipping)為例來說明。主數據庫完成事務處理后,生成事務處理日志,日志記錄通過FIFO隊列,進入備份數據庫處理,從而得到備份數據。此種方式的缺陷在于:
a) 主數據庫并行處理事務而日志拷貝是串行的,而備份數據庫處理日志記錄也是串行的。因此,FIFO隊列的溢出隨時可能發(fā)生。一旦發(fā)生,隊列必須重建,從而需要重新建立備份數據庫。此種方法對于一般客戶來講是不可行的。
b) 由于日志拷貝是異步的,主備數據庫不是實時一致,兩者之間存在“時間差”,因此如果用備份數據庫作負荷均衡,這樣的應用存在邏輯上的漏洞,可能會發(fā)生數據錯亂。
c) 由于主備數據存在時間差, 主數據庫一旦發(fā)生事故,理論上一定會丟失數據。在這種情況下,要么需要手工恢復數據庫,這會消耗大量的人工成本,或者數據根本就不能恢復。
d) 對主機的性能影響,根據測試一般在15%到25%之間。
b.串行同步復制
此類集群往往是由昂貴的專用軟硬件構成的,原理圖如下:
此類系統(tǒng)采用專用的高速網絡和軟件技術,將每個數據庫的請求,通過同步復制的方式,同步在主備兩臺數據庫服務器上執(zhí)行正確后,才將結果返回給數據庫客戶。此系統(tǒng)的特點是:
a) 主數據庫被強迫與備份數據庫同步串行處理,因此性能受到限制。
b) 主備數據庫中任意一個出現問題,都會迫使事務處理交易回滾,因此整個系統(tǒng)的可靠性比單機系統(tǒng)降低了一半。
c) 由于以上問題,這種備份方式只適用于近距離光纖網絡(5英里)。
d) 專用系統(tǒng)造價昂貴,又加上述明顯缺陷,因此市場上很少被采用。
2.基于共享存儲的雙機容錯技術
從技術適應性的角度講,雙機容錯比較適合于無狀態(tài)應用,或者狀態(tài)信息較少的應用切換,以此達到應用級的高可用性目的,其實并不適合于數據庫級的應用切換。
此種結構往往是兩個服務器共享一個磁盤陣列,這里兩個服務器共享一個虛擬的IP供數據庫客戶使用,形成一個單一的邏輯數據庫映象。此種所謂的數據庫集群的目的是,一旦主機系統(tǒng)出現問題,備份系統(tǒng)通過心跳機制的檢測,完成從主機系統(tǒng)到備份系統(tǒng)的切換。這種方案在市場上被稱為“雙機集群”或者“雙機熱備”,簡稱參見“雙機”,但微軟稱之為“故障轉移集群”。它有下列特點:
a. 此種高可用性解決方案只是無狀態(tài)系統(tǒng)(典型的如Web服務器)的普通容錯切換思想在數據庫領域的應用。
b. 此系統(tǒng)本身只有一個單一的數據映象,數據儲存在共享的磁盤陣例上,因此共享的磁盤陣列成為了整個系統(tǒng)的單點錯誤源。
c. 由于是單一數據映象,因此必須采用通常的復制或備份方法獲取第二份數據,以保證數據的安全性。因此所有復制或備份方法的缺點,此類系統(tǒng)全部存在。
d. 主機系統(tǒng)和備份系統(tǒng)之間是沒有任何負載均衡關系的,在正常情況下,備份系統(tǒng)是閑置在那里,因此對用戶來說是一種投資浪費。
e. 在錯誤切換的時候,往往存在切換時間長,而且更嚴重的是可能會存在丟失用戶交易數據丟失的現象,結果導致系統(tǒng)被迫停止服務,或者需要人工修復數據,或者數據永遠找不回來。
3.以Oracle RAC為代表的系統(tǒng)
RAC的英文全稱是:Real Application Cluster(真正的應用級集群)。我們需要關注的是“應用級”。為了緩解數據庫系統(tǒng)日益增長的性能壓力,Oracle公司推出了RAC系統(tǒng)。它基本結構如下:
此類系統(tǒng),專門是針對數據庫性能問題而提出的。采用共享磁盤陣列的方式,因此在結構上和上述雙機容錯相似,不同的地方在于此系統(tǒng)中的數據庫節(jié)點之間采用的不是簡單的心跳檢測,而是Oracle公司自己定義的一套復雜的信息交換協(xié)議,以此來動態(tài)分配來自數據庫客戶端的請求。它的特點是:
a. 是個應用級的集群,也就是針對Oracle的數據庫管理系統(tǒng)(因為數據庫管理系統(tǒng)對于操作系統(tǒng)來講,就是一個“應用程序”,因此被稱為“應用級集群”),專門為提高數據庫性能而設計。
b. 此系統(tǒng)本身只有一個單一的數據映象,數據儲存在共享的磁盤陣例上,因此享的磁盤陣例成為了整個系統(tǒng)的單點錯誤源。
c. 管理配置復雜。
d. 由于是單一數據映象,因此必須采用通常的復制或備份方法獲取第二份數據,以保證數據的安全性。因此所有復制或備份方法的缺點,此類系統(tǒng)全部存在。
e. 由于數據庫系統(tǒng)本身具有高I/O的特性,因此,RAC系統(tǒng)里,磁盤I/O是提高性能的關鍵地方。
f. 依據不同的數據庫應用,有的性能有所提升,有的性能可能會反而下降。
數據庫集群 同步的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于數據庫集群 同步,數據庫集群同步技術原理簡析,數據庫集群的性質的信息別忘了在本站進行查找喔。
創(chuàng)新互聯服務器托管擁有成都T3+級標準機房資源,具備完善的安防設施、三線及BGP網絡接入帶寬達10T,機柜接入千兆交換機,能夠有效保證服務器托管業(yè)務安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯專注于成都服務器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認可。
文章標題:數據庫集群同步技術原理簡析(數據庫集群同步)
分享URL:http://fisionsoft.com.cn/article/dhssecg.html


咨詢
建站咨詢
