MySQL多線程復制配置

原理

眾所周知,MySQL的復制延遲是一直被詬病的問題之一,然而在MySQL 5.7+已經(jīng)支持“真正”的并行復制功能,官方稱為enhanced multi-threaded slave(簡稱MTS),因此復制延遲問題已經(jīng)得到了極大的改進。
MySQL 5.6并行復制架構(gòu)
誠然,MySQL 5.6版本也支持所謂的并行復制,但是其并行只是基于schema的,也就是基于庫的。如果用戶的MySQL數(shù)據(jù)庫實例中存在多個schema,對于從機復制的速度的確可以有比較大的幫助。MySQL 5.6并行復制的架構(gòu)如下所示:


說明:
如果在mysql5.6開啟并行復制功能,SQL線程就變成了coordinator線程,那么coordinator線程主要負責兩部分內(nèi)容:
1.若判斷可以并行執(zhí)行,那么選擇worker線程執(zhí)行事務的二進制日志
2.若判斷不可以并行執(zhí)行,如該操作是DDL,亦或者是事務跨schema操作,則等待所有的worker線程執(zhí)行完成之后在執(zhí)行當前的日志
所以,coordinator線程并不是僅將日志發(fā)送給worker線程,也可以回放日志,但是所有可以并行的操作交付由worker線程完成。coordinator線程與worker是典型的生產(chǎn)者消費者模型

配置過程

1、show processlist 查看現(xiàn)在的狀態(tài)

image.png

2、在從庫上停止復制
mysql> stop slave;

image.png

3、設置并發(fā)同步類型為邏輯時鐘方式
mysql> show variables like 'slave_parallel_type';

image

默認是datebase,每個線程只能處理一個數(shù)據(jù)庫
配置成基于邏輯時鐘的方式
mysql> set global slave_parallel_type='logical_clock';


image

image

4、設置復制線程的數(shù)量
先看下當前的并發(fā)數(shù)量,通過變量 slave_parallel_workers 的值來獲得,這個變量用來決定并發(fā)處理的線程數(shù)
mysql> show variables like 'slave_parallel_workers';

image

現(xiàn)在是 0,我們把他改成 4
mysql> set global slave_parallel_workers=4;
image

5、啟動復制
mysql> start slave;

6、驗證配置結(jié)果
mysql> show processlist;

image

可以看到已經(jīng)有4個IO線程了,配置完成。

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

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

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