主從復(fù)制-過慮復(fù)制事件

過慮復(fù)制事件有兩種方式:

1、在主服務(wù)器在把事件從進(jìn)二制日志中過濾掉,相關(guān)的參數(shù)是:binlog_do_db和binlog_ignore_db。master過濾器控制哪些被寫入二進(jìn)制日志,以及哪些會發(fā)送給slave。被過濾的表事件不會寫入二進(jìn)制日志。

2、在從服務(wù)器上把事件從中繼日志中過濾掉,相關(guān)的參數(shù)是replicate_*。slave過濾控制哪些在slave上執(zhí)行。事件會寫入二進(jìn)制日志,然后發(fā)送到slave,直到事件執(zhí)行時才進(jìn)行過濾。

3、在Master上設(shè)置:

Binlog_Do_DB:設(shè)定哪些數(shù)據(jù)庫需要記錄Binlog

Binlog_Ignore_DB:設(shè)定哪里數(shù)據(jù)庫不需要記錄Binlog

優(yōu)點是Master端的Binlog記錄所帶來的Io量減少,網(wǎng)絡(luò)IO減少,還會讓slave端的IO線程,SQL線程減少,從而大幅提高復(fù)制性能,

缺點是mysql判斷是否需要復(fù)制某個事件不是根據(jù)產(chǎn)生該事件的查詢所在的DB,而是根據(jù)執(zhí)行查詢時刻所在的默認(rèn)數(shù)據(jù)庫(也就是登錄時指定的庫名或運行"use database"中指定的DB),只有當(dāng)前默認(rèn)DB和配置中所設(shè)定的DB完全吻合時IO線程才會將該事件讀取給slave的IO線程.所以,如果在默認(rèn)DB和設(shè)定須要復(fù)制的DB不一樣的情況下改變了須要復(fù)制的DB中某個Table中的數(shù)據(jù),該事件是不會被復(fù)制到Slave中去的,這樣就會造成Slave端的數(shù)據(jù)和Master的數(shù)據(jù)不一致.同樣,在默認(rèn)的數(shù)據(jù)庫下更改了不須要復(fù)制的數(shù)據(jù)庫中的數(shù)據(jù),則會被復(fù)制到slave端,當(dāng)slave端并沒有該數(shù)據(jù)庫時,則會造成復(fù)制出錯而停止。

4、在slave上設(shè)置:

Replicate_Do_DB:設(shè)定需要復(fù)制的數(shù)據(jù)庫,多個DB用逗號分隔

Replicate_Ignore_DB:設(shè)定可以忽略的數(shù)據(jù)庫.

Replicate_Do_Table:設(shè)定需要復(fù)制的Table

Replicate_Ignore_Table:設(shè)定可以忽略的Table

Replicate_Wild_Do_Table:功能同Replicate_Do_Table,但可以帶通配符來進(jìn)行設(shè)置。

Replicate_Wild_Ignore_Table:功能同Replicate_Do_Table,功能同Replicate_Ignore_Table,可以帶通配符。

優(yōu)點是在slave端設(shè)置復(fù)制過濾機(jī)制,可以保證不會出現(xiàn)因為默認(rèn)的數(shù)據(jù)庫問題而造成Slave和Master數(shù)據(jù)不一致或復(fù)制出錯的問題.

缺點是性能方面比在Master端差一些.原因在于:不管是否須要復(fù)制,事件都會被IO線程讀取到Slave端,這樣不僅增加了網(wǎng)絡(luò)IO量,也給Slave端的IO線程增加了Relay

Log的寫入量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容