作為一個關(guān)系型數(shù)據(jù)庫,MySQL內(nèi)建地提供數(shù)據(jù)復(fù)制機(jī)制,這使得在使用時,可以基于其復(fù)制機(jī)制實現(xiàn)高可用架構(gòu)等高級特性,從而使得MySQL無需借助額外的插件或其他工具就具備適用于生產(chǎn)環(huán)境。這是MySQL得到大面積實際應(yīng)用的條件之一。
基于MySQL的復(fù)制機(jī)制,不僅可以實現(xiàn)數(shù)據(jù)庫的高可用,還能實現(xiàn)如:性能擴(kuò)展、異地災(zāi)備以及冷熱分離等高級特性。
為了獲得上述能力,需要了解基本的MySQL復(fù)制機(jī)制,并結(jié)合實際應(yīng)用場景選擇恰當(dāng)?shù)呐渲谩?/p>
MySQL基于binlog實現(xiàn)主從復(fù)制,從節(jié)點跟蹤并獲取主節(jié)點binlog中最新更新并在自身進(jìn)行重放,從而實現(xiàn)復(fù)制主節(jié)點數(shù)據(jù)。
下圖是MySQL主從復(fù)制過程的示意圖。在整個過程中涉及三個線程,他們的職責(zé)分別是:
默認(rèn)情況下,MySQL的主從復(fù)制是異步復(fù)制,在這種機(jī)制下,主節(jié)點會在完成本地日志寫入后立刻響應(yīng)客戶端的請求,從節(jié)點的數(shù)據(jù)復(fù)制過程異步執(zhí)行。
很明顯,在這種機(jī)制下面,由于復(fù)制過程并不會影響主節(jié)點對客戶端請求的響應(yīng),因此,相比于單節(jié)點,并不會造成整體性能上的明顯損失。
但是,在這種機(jī)制下面,如果數(shù)據(jù)在主節(jié)點完成提交而未同步至從節(jié)點時主節(jié)點宕機(jī),此時如果發(fā)生主從切換并寫入新的數(shù)據(jù),可能導(dǎo)致數(shù)據(jù)丟失或不一致。
從5.6版本開始,MySQL支持半同步復(fù)制,這種機(jī)制與異步復(fù)制相比主要有如下區(qū)別:
主節(jié)點在收到客戶端的請求后,必須在完成本節(jié)點日志寫入的同時,還需要等待至少一個從節(jié)點完成數(shù)據(jù)同步的響應(yīng)之后(或超時),才會響應(yīng)請求。
從節(jié)點只有在寫入relay-log并完成刷盤之后,才會向主節(jié)點響應(yīng)。
當(dāng)從節(jié)點響應(yīng)超時時,主節(jié)點會將同步機(jī)制退化為異步復(fù)制。在至少一個從節(jié)點恢復(fù),并完成數(shù)據(jù)追趕后,主節(jié)點會將同步機(jī)制恢復(fù)為半同步復(fù)制。
可以看出,相比于異步復(fù)制,半同步復(fù)制在一定程度上提高了數(shù)據(jù)的可用性,在未退化至異步復(fù)制時,如果主節(jié)點宕機(jī),此時數(shù)據(jù)已復(fù)制至至少一臺從節(jié)點。
同時,由于向客戶端響應(yīng)時需要從節(jié)點完成響應(yīng),相比于異步復(fù)制,此時多出了主從節(jié)點上網(wǎng)絡(luò)交互的耗時以及從節(jié)點寫文件并刷盤的耗時,因此整體上集群對于客戶端的響應(yīng)性能表現(xiàn)必然有所降低。
由于MySQL的復(fù)制機(jī)制是基于binlog的,因此binlog的格式就決定了主從復(fù)制的格式。binlog有基于行的和基于語句兩種,從而復(fù)制也有兩種對應(yīng)的格式。
對于基于語句的復(fù)制機(jī)制,binlog僅記錄所執(zhí)行的語句。這種方式,有如下優(yōu)點:
有如下缺點:
基于行的復(fù)制機(jī)制下,對應(yīng)binlog也是基于行的,這時每次數(shù)據(jù)更新當(dāng)寫入binlog時,都被轉(zhuǎn)化所有受影響行的變化。
這種復(fù)制方式,有如下優(yōu)點:
有如下缺點:
在實際的架構(gòu)應(yīng)用中,需要根據(jù)系統(tǒng)的業(yè)務(wù)特點合理利用主從復(fù)制機(jī)制,并選擇合適主從復(fù)制格式。
以上就是MySql主從復(fù)制機(jī)制全面解析的詳細(xì)內(nèi)容,更多關(guān)于MySql主從復(fù)制機(jī)制的資料請關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:迪慶 龍巖 自貢 徐州 麗水 無錫 南充 西寧
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySql主從復(fù)制機(jī)制全面解析》,本文關(guān)鍵詞 MySql,主從,復(fù)制,機(jī)制,全面,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。