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

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


咨詢
建站咨詢
