上篇文章介紹了MMM架構(gòu)的實(shí)現(xiàn)方法,但是上篇文章的MMM方案的復(fù)制是異步復(fù)制,異步復(fù)制的主要問題在于當(dāng)主從存在延時(shí)時(shí)如果主機(jī)出現(xiàn)了故障導(dǎo)致了主從切換時(shí)這時(shí)將會(huì)存在數(shù)據(jù)丟失;mysql為了解決異步復(fù)制數(shù)據(jù)丟失的問題增加了半同步復(fù)制,半同步復(fù)制存在5.5以上的版本,半同步復(fù)制的原理是客戶端在事務(wù)提交時(shí)必須等待從庫(kù)接收到binlog的回應(yīng)之后才能提交事務(wù)(當(dāng)存在多個(gè)從庫(kù)時(shí)默認(rèn)只需要一個(gè)從庫(kù)接受到了bInlog即可,也可以配置必須每一個(gè)從庫(kù)都必須接收到binlog但是這樣對(duì)性能影響就會(huì)很大),如果從庫(kù)宕機(jī)或者故障導(dǎo)致binlog沒有及時(shí)傳送到從庫(kù)(由參數(shù)rpl_semi_sync_master_timeout控制,默認(rèn)是10S),這時(shí)mysql會(huì)自動(dòng)轉(zhuǎn)為異步復(fù)制,當(dāng)從庫(kù)又重新啟動(dòng)有新的一條binglog從主庫(kù)發(fā)送到從庫(kù)在規(guī)定的時(shí)間內(nèi)得到響應(yīng)mysql又會(huì)自動(dòng)轉(zhuǎn)換為半同步復(fù)制,所以半同步復(fù)制對(duì)主從之間的網(wǎng)絡(luò)要求比較高。
mysql版本:5.6
方案:MMM+半同步復(fù)制
一、原理
5.6的半同步復(fù)制是在客戶端執(zhí)行commit主庫(kù)寫入完binlog然后執(zhí)行數(shù)據(jù)刷新到磁盤后才由dump線程將binlog記錄發(fā)送到從庫(kù)的io線程。
二、安裝配置
首先說明一下,當(dāng)前的配置是基于MMM方案的配置,由于MMM方案是兩主一從,所以我在其中的雙主上面配置半同步復(fù)制,從庫(kù)上面還是原先的異步復(fù)制。半同步復(fù)制是基于插件來實(shí)現(xiàn)的,主從上面各自執(zhí)行不同的插件。
1.查詢是否支持動(dòng)態(tài)插件
主從上面都需要查看是否支持動(dòng)態(tài)插件