溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mysql主從三種復(fù)制模式是什么

發(fā)布時(shí)間:2022-08-11 09:53:12 來源:億速云 閱讀:166 作者:iii 欄目:開發(fā)技術(shù)

今天小編給大家分享一下Mysql主從三種復(fù)制模式是什么的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

MySQL異步復(fù)制

MySQL異步復(fù)制是主從復(fù)制過程中默認(rèn)的復(fù)制模式。主從復(fù)制涉及三個(gè)線程,master I/O線程、slave I/O線程、slave sql線程。因?yàn)槭钱惒綇?fù)制,所以master事務(wù)的提交,不需要經(jīng)過slave的確認(rèn),即master I/O線程提交事務(wù)后,不需要等待slave I/O線程的回復(fù)確認(rèn),master并不保證binlog一定寫入到了relay log中;而slave I/O把binlog寫入relay log后,由slave sql線程異步執(zhí)行應(yīng)用到slave mysql中,slave I/O也不需要slave sql的回復(fù)確認(rèn),并不保證relay log日志完整寫入到了mysql中。

Mysql主從三種復(fù)制模式是什么

半同步復(fù)制

基于傳統(tǒng)異步存在的缺陷,mysql在5.5版本推出半同步復(fù)制,是對傳統(tǒng)異步復(fù)制的改進(jìn)。在master事務(wù)commit前,必須確保binlog日志已經(jīng)寫入slave 的relay log日志中,收到slave給master的響應(yīng)后,才能進(jìn)行事務(wù)的commit。但是后半部分的relay log到sql線程仍然屬于異步執(zhí)行。

Mysql主從三種復(fù)制模式是什么

組復(fù)制

基于傳統(tǒng)異步復(fù)制和半同步復(fù)制的缺陷——數(shù)據(jù)的一致性問題無法保證,MySQL官方在5.7.17版本正式推出組復(fù)制(MySQL Group Replication,簡稱MGR)。

由若干個(gè)節(jié)點(diǎn)共同組成一個(gè)復(fù)制組,一個(gè)事務(wù)的提交,必須經(jīng)過組內(nèi)大多數(shù)節(jié)點(diǎn)(N / 2 + 1)決議并通過,才能得以提交。如上圖所示,由3個(gè)節(jié)點(diǎn)組成一個(gè)復(fù)制組,Consensus層為一致性協(xié)議層,在事務(wù)提交過程中,發(fā)生組間通訊,由2個(gè)節(jié)點(diǎn)決議(certify)通過這個(gè)事務(wù),事務(wù)才能夠最終得以提交并響應(yīng)。

引入組復(fù)制,主要是為了解決傳統(tǒng)異步復(fù)制和半同步復(fù)制可能產(chǎn)生數(shù)據(jù)不一致的問題。組復(fù)制依靠分布式一致性協(xié)議(Paxos協(xié)議的變體),實(shí)現(xiàn)了分布式下數(shù)據(jù)的最終一致性,提供了真正的數(shù)據(jù)高可用方案(是否真正高可用還有待商榷)。其提供的多寫方案,給我們實(shí)現(xiàn)多活方案帶來了希望。

MGR環(huán)境下,服務(wù)器數(shù)量必須是3臺以上,并且是單數(shù),實(shí)現(xiàn)2/n+1的算法。

Mysql主從三種復(fù)制模式是什么

一個(gè)復(fù)制組由若干個(gè)節(jié)點(diǎn)(數(shù)據(jù)庫實(shí)例)組成,組內(nèi)各個(gè)節(jié)點(diǎn)維護(hù)各自的數(shù)據(jù)副本(Share Nothing),通過一致性協(xié)議實(shí)現(xiàn)原子消息和全局有序消息,來實(shí)現(xiàn)組內(nèi)實(shí)例數(shù)據(jù)的一致。

MGR的解決方案現(xiàn)在具備的特性

數(shù)據(jù)一致性保障:確保集群中大部分節(jié)點(diǎn)收到日志

多節(jié)點(diǎn)寫入支持:多寫模式下支持集群中的所有節(jié)點(diǎn)都可以寫入(但是考慮1到高并發(fā)場景下,保證數(shù)據(jù)高度一致性,生產(chǎn)并沒有選擇多主寫入,使用單主集群)

Fault Tolerance: 確保系統(tǒng)發(fā)生故障(包括腦裂)依然可用,雙寫對系統(tǒng)無影響

MGR的解決方案目前的影響

  • 僅支持InnoDB表,并且每張表一定要有一個(gè)主鍵,用于做write set的沖突檢測;

  • 必須打開GTID特性,二進(jìn)制日志格式必須設(shè)置為ROW,用于選主與write set

  • COMMIT可能會導(dǎo)致失敗,類似于快照事務(wù)隔離級別的失敗場景

  • 目前一個(gè)MGR集群最多支持9個(gè)節(jié)點(diǎn)

  • 不支持外鍵于save point特性,無法做全局間的約束檢測與部分部分回滾

  • 二進(jìn)制日志不支持binlog event checksum

以上就是“Mysql主從三種復(fù)制模式是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI