新聞中心
隨著互聯(lián)網(wǎng)和大數(shù)據(jù)時代的到來,數(shù)據(jù)庫已經(jīng)成為企業(yè)生產(chǎn)力不可或缺的組成部分。無論是各類企業(yè)內(nèi)部管理,還是機(jī)構(gòu)數(shù)據(jù)收集和分析,都需要使用數(shù)據(jù)庫來存儲和處理數(shù)據(jù)。因此,數(shù)據(jù)庫高可用性成為了數(shù)據(jù)庫管理員和企業(yè)管理者越來越關(guān)注的問題。

成都創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為雙塔企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、網(wǎng)站制作,雙塔網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
數(shù)據(jù)庫高可用性指的是在遭受服務(wù)器、網(wǎng)絡(luò)或軟件故障時,系統(tǒng)可以保持可用性,從而保證業(yè)務(wù)的持續(xù)運(yùn)行。在數(shù)據(jù)庫高可用性的實現(xiàn)中,主備同步技術(shù)是一種常用的技術(shù)手段。
主備同步技術(shù)概述
主備同步技術(shù)是一種數(shù)據(jù)庫高可用的技術(shù)手段,它通過在主庫上對數(shù)據(jù)進(jìn)行實時記錄,將數(shù)據(jù)實時同步到備庫中,當(dāng)主庫故障時,備庫可以立即接替主庫的數(shù)據(jù)服務(wù)。這樣,數(shù)據(jù)庫系統(tǒng)的可用性將會得到很大的提高。
主備同步技術(shù)的實現(xiàn)需要一個主庫和一個或多個備庫。主庫用于接收和響應(yīng)用戶請求,備庫用于復(fù)制主庫數(shù)據(jù),并在主庫故障時接管主庫任務(wù)。主庫和備庫之間的通信是通過網(wǎng)絡(luò)進(jìn)行的,并要求兩臺服務(wù)器之間保持同步。
主備同步技術(shù)的優(yōu)點(diǎn)
1. 數(shù)據(jù)冗余:主備同步技術(shù)使得備庫中有主庫的完全復(fù)制品,可以保證數(shù)據(jù)不會因為主庫故障而丟失。
2. 數(shù)據(jù)恢復(fù):一旦主庫出現(xiàn)故障,備庫可以立即接管主庫工作。在主庫恢復(fù)以后,備庫可以將數(shù)據(jù)同步到主庫中,達(dá)到數(shù)據(jù)的恢復(fù)。
3. 網(wǎng)絡(luò)容錯:主備同步技術(shù)體現(xiàn)了數(shù)據(jù)中心的容災(zāi)和備份策略,提高了網(wǎng)絡(luò)的穩(wěn)定性和可用性。
主備同步技術(shù)的實現(xiàn)方式
1. 基于物理復(fù)制:在主備同步技術(shù)中,物理復(fù)制是一種廣泛采用的方式,它把主庫的數(shù)據(jù)直接復(fù)制到備庫中。這種方式的優(yōu)點(diǎn)在于速度快、數(shù)據(jù)不易丟失、恢復(fù)速度快,但是不支持?jǐn)?shù)據(jù)過濾。
2. 基于邏輯復(fù)制:邏輯復(fù)制是通過SQL語句進(jìn)行同步的方式。它是將主庫生成的SQL語句發(fā)送到備庫,讓備庫執(zhí)行同樣命令的方式來實現(xiàn)數(shù)據(jù)同步。它的優(yōu)勢在于數(shù)據(jù)可過濾,但是由于需要記錄SQL語句,所以受數(shù)據(jù)量的限制。
3. 基于混合復(fù)制:混合復(fù)制是物理復(fù)制和邏輯復(fù)制技術(shù)的結(jié)合。它通過指定過濾條件,采用邏輯復(fù)制方式來同步特定數(shù)據(jù),使用物理復(fù)制方式來同步其余數(shù)據(jù)。這種方式既保證了數(shù)據(jù)的完整性,也提高了同步效率。
應(yīng)用場景
主備同步技術(shù)適用于需要高可用性的數(shù)據(jù)庫系統(tǒng)。例如,金融、電信、醫(yī)療和機(jī)構(gòu)等行業(yè)的企業(yè)。在這些行業(yè)中,如果數(shù)據(jù)庫系統(tǒng)發(fā)生故障,會對企業(yè)產(chǎn)生非常大的經(jīng)濟(jì)和社會影響。因此,這些企業(yè)需要采取主備同步技術(shù)保證日常的運(yùn)營,同時也為業(yè)務(wù)的高質(zhì)量服務(wù)提供了保障。
主備同步技術(shù)是一種數(shù)據(jù)庫高可用的技術(shù)手段,它可以提高數(shù)據(jù)庫的容錯能力和恢復(fù)能力。主備同步技術(shù)的實現(xiàn)方式包括物理復(fù)制、邏輯復(fù)制和混合復(fù)制。主備同步技術(shù)應(yīng)用于需要高可用性的數(shù)據(jù)庫系統(tǒng),并且在金融、電信、醫(yī)療和機(jī)構(gòu)等行業(yè)得到廣泛的應(yīng)用。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,響應(yīng)式網(wǎng)站制作,設(shè)計師量身打造品牌風(fēng)格,熱線:028-86922220數(shù)據(jù)庫讀寫分離如何保證主從一致性
當(dāng)我們的數(shù)據(jù)庫壓力主鍵變大的時候,我們會嘗試增加一些從節(jié)點(diǎn)來分?jǐn)傊鞴?jié)點(diǎn)的查詢壓力磨襪。而一般來說,我們是用一主多從的結(jié)構(gòu)來作為讀寫分離的基本結(jié)構(gòu)。
而一般來說我們有兩種常用的方法來實現(xiàn)讀且分離架構(gòu):
客戶端直接分離
這種方式是由客戶端,或者我們的微服務(wù)直接進(jìn)行數(shù)據(jù)庫的讀寫選擇。將讀庫選擇路由到主庫上進(jìn)行,將查詢路由到從主庫上進(jìn)行。
這種方式的優(yōu)點(diǎn)在于因為是直連所以性能比較高,但是需要由業(yè)務(wù)團(tuán)隊了解數(shù)據(jù)庫的實例細(xì)節(jié),當(dāng)數(shù)據(jù)庫做調(diào)整的時候就需要業(yè)務(wù)側(cè)姿高同步改造。
使用數(shù)據(jù)中間件代理
這種方式是由一層代理層對數(shù)據(jù)的讀寫做分發(fā),業(yè)務(wù)層將所有的請求都通過代理來實現(xiàn)。
這種方式的優(yōu)點(diǎn)在于對于業(yè)務(wù)層不需要感知到數(shù)據(jù)庫的存在,但問題在于數(shù)據(jù)中間件的性能要求較高,還需要專人來進(jìn)行優(yōu)化和維護(hù),整體架構(gòu)較為復(fù)雜。
但是我們發(fā)現(xiàn),盡管這兩種方式各有優(yōu)劣。但核心都是通過數(shù)據(jù)的寫入、查詢請求的路由而實現(xiàn)的,那么這就會引發(fā)標(biāo)題的問題:
主備同步存在延遲,所以在延遲時間內(nèi)對插入的內(nèi)容進(jìn)行查詢則無法查詢到最新提交的事務(wù)。
那么如何保證主從一致性的問題,其實就變成了如何處理主從延遲的問題。
根據(jù)項目的大小,團(tuán)隊的規(guī)模以及主機(jī)的部署模式。我們處理問題的方法也有很多種。
最簡單強(qiáng)硬的就是強(qiáng)制讀主庫。
一般情況下我們在不同的查詢中會有不同程度的一致性要求。我們可以將需要保證數(shù)據(jù)一致性的請求配置強(qiáng)制查詢主庫,而對于無強(qiáng)依賴的查詢請求仍然查詢備庫。
盡管這個方案不是很優(yōu)雅,但是是最簡單實現(xiàn)的方法,并且在Spring等框架的支持下一般只需要加一個注解就能實現(xiàn)。但這個方法的問題也是顯而易見的,如果存在大量的強(qiáng)一致性要求的查詢語句,則相當(dāng)于沒有進(jìn)行讀寫分離與擴(kuò)展。那么這種方法就會導(dǎo)致系統(tǒng)在數(shù)據(jù)庫層面沒有有效的擴(kuò)展手段了。
由于問題產(chǎn)生的來源是主從延遲,所以在下一次查詢的時候進(jìn)行一段時間的等待以彌補(bǔ)這種延遲即可。
所以在進(jìn)行主庫的數(shù)據(jù)插入之后,讓數(shù)據(jù)庫數(shù)據(jù)連接或者對應(yīng)的執(zhí)行線程等待一段時間后返回。通過等待時間來消化掉主從備份的延遲時間。但是這個方法也有一些問題比如:這個等待時間一般是固定的,即便主從已經(jīng)無延遲了也會繼續(xù)等待到時間結(jié)束;如果在服務(wù)高峰時期,有可能數(shù)據(jù)在等待時間結(jié)束后仍然沒有完成同步則仍然會存在一致性問題。
但這種方法優(yōu)雅的地方是可以配合業(yè)務(wù)來進(jìn)行實現(xiàn),舉例來說當(dāng)用戶下單之后,通過下單送卷或者下單抽獎的方式從前端拖住用戶,從而當(dāng)用戶在一次連續(xù)操作中再次查詢自己訂單的時候中間必然會間隔一定時間,也就讓需要再次查詢數(shù)據(jù)的時候保證了數(shù)據(jù)的一致性。
上述兩種方案看起來可能不那么“技術(shù)”,感覺有點(diǎn)投機(jī)取巧。那么下面咱們可以分兩種情況來討論用更高技術(shù)的方法如何實現(xiàn)一致性。
對于主從復(fù)制來說,是當(dāng)主庫完成一個事務(wù)后,通知給從庫,當(dāng)從庫接受到后,則主庫完成返回客戶端。所以當(dāng)主庫完成事務(wù)后,僅能確保從庫已經(jīng)接受到了,但是不能保證從庫執(zhí)行完成,也就是導(dǎo)致了主從備份跡游尺延遲。
但是從庫執(zhí)行數(shù)據(jù)是有進(jìn)度的,而這個進(jìn)度是可以通過show slave status語句中的seconds_behind_master來進(jìn)行描述,這個參數(shù)描述從庫落后了主庫數(shù)據(jù)多少秒,當(dāng)這個參數(shù)為0時,我們可以認(rèn)為從庫和主庫已經(jīng)基本上沒有延遲了,那么這時候就可以查詢請求。
但seconds_behind_master是秒級的,所以只能大概地判斷,由于精度較低,所以還是可能出現(xiàn)不一致的情況。
如果要求精準(zhǔn)執(zhí)行的話,我們可以比較同步文件的執(zhí)行記錄,具體來說是:
所以當(dāng)Relay_Master_Log_File和Exec_Master_Log_Pos和其一致的時候,就說明從庫的已執(zhí)行數(shù)據(jù)已經(jīng)追上主庫了,那么這時就可以說保證了主從一致性了
但是比較同步文件的執(zhí)行記錄方法的問題在于,如果當(dāng)前的這個事務(wù)的binlog尚未傳入到從庫,即Master_Log_File和Read_Master_Log_Pos未更新,也就無法保證從庫已經(jīng)包含最新的主庫事務(wù)了。
而為了保證在一主一備的情況下,從庫里一定接受到數(shù)據(jù)了,也就是Master_Log_File和Read_Master_Log_Pos中的數(shù)據(jù)是和主庫一致的,我們可以開啟semi-sync replication半同步復(fù)制。
半同步復(fù)制的原理是在主庫提交事務(wù)前先將binlog發(fā)送給從庫,然后當(dāng)從庫接受后返回一個應(yīng)答,主庫只有在接受到這個應(yīng)答之后才返回事務(wù)執(zhí)行完成。這樣就可以保證從庫的Master_Log_File和Read_Master_Log_Pos與主庫是一致的,從而解決了主從一致的問題。
半同步復(fù)制可以解決一主一備的情況,但是當(dāng)一主多備的時候,只要主庫接受到一個從庫的應(yīng)答,就會返回事務(wù)執(zhí)行完成。而這時當(dāng)請求打到未完成同步的從庫上時就會發(fā)生主從延遲。
所以針對一主多備的情況,我們可以將目光集中在執(zhí)行查詢的從庫上,即確保
我們即將查詢的備庫已經(jīng)執(zhí)行了我們預(yù)期的事務(wù)。
那么我們的問題就變成兩部分:1. 確認(rèn)主庫事務(wù),2. 查詢數(shù)據(jù)條件。
確認(rèn)主庫事務(wù)
當(dāng)我們提交完一個事務(wù)后,可以通過執(zhí)行show master status來得到主庫中的數(shù)據(jù)事務(wù)文件(File)和位置記錄(Position)。
查詢數(shù)據(jù)條件
當(dāng)我們要查詢從庫數(shù)據(jù)的時候,我們可以通過語句select master_pos_wait(File, Position, 1);來查詢當(dāng)前是否已經(jīng)執(zhí)行到了該記錄(當(dāng)返回值>=0的時候說明已經(jīng)執(zhí)行過了)。其中最后的數(shù)字1表示阻塞時長。
通過先確認(rèn)主庫事務(wù)記錄,再判確認(rèn)備庫是否已經(jīng)執(zhí)行了了主庫對應(yīng)的事務(wù)。
但是可以發(fā)現(xiàn),這種方法要求查詢的時候知道主庫的事務(wù)信息,對場景有很大的限制。
主從一致的問題源自主從延遲,所以我們就是從如何消除延遲來解決問題。簡單點(diǎn)的方案我們可以不走備庫、或者直接等待一段時間來忽略延遲的影響。在一主一備的情況下我們可以粗力度的用seconds_behind_master來判斷或者用Relay_Master_Log_File和Exec_Master_Log_Pos來判斷。而當(dāng)一主多從的情況下我們則需要在查詢前傳入主庫執(zhí)行的事務(wù)記錄才能保證數(shù)據(jù)一致性。
可以看出,當(dāng)數(shù)據(jù)規(guī)模和部署方式變更的時候,好的解決方案將會越來越多。我認(rèn)為根據(jù)實際業(yè)務(wù)情況選擇最合適的方法才是最重要的。
數(shù)據(jù)庫主備同步的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫主備同步,數(shù)據(jù)庫實現(xiàn)高可用:主備同步技術(shù),數(shù)據(jù)庫讀寫分離如何保證主從一致性的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)是成都專業(yè)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計、SEO優(yōu)化、手機(jī)網(wǎng)站、小程序開發(fā)、APP開發(fā)公司等,多年經(jīng)驗沉淀,立志成為成都網(wǎng)站建設(shè)第一品牌!
網(wǎng)頁名稱:數(shù)據(jù)庫實現(xiàn)高可用:主備同步技術(shù)(數(shù)據(jù)庫主備同步)
標(biāo)題URL:http://m.fisionsoft.com.cn/article/dhpgcch.html


咨詢
建站咨詢
