MySQL\MariaDB 多線程復制初探


背景:

      MariaDB 在10.0.5就已經支持了並行復制的功能,即從庫多線程復制的功能。MySQL最先在5.6.3中支持。目前暫時沒有用MySQL5.6的版本,故暫時只對MariaDB進行一些說明,后期會對MySQL進行說明。

      對於replication很多同學都已經很熟悉了,這里稍微講下,在復制過程中有3個線程:Master上的IO線程和Slave上的IO、SQL線程,復制的原理可以自己去google搜。從庫一直都是異步復制主庫的,通過SHOW SLAVE STATUS 可以查看從庫落后主庫的時間,當然這個時間不一定准確。從庫落后主庫的原因很大一部分是因為程序在主庫上執行SQL是多線程的,而從庫復制主庫卻只有一個線程。在MariaDB10.0.0和MySQL5.6.3之前一直也是這樣。在其之后的版本里支持了多線程復制,下面來看看如何開啟,和開啟之后的效果,目前只針對MariaDB。


說明:

MariaDB在配置文件的mysqld選項組中添加:

slave-parallel-threads

我手動修改成了8,該參數可以動態修改,在修改之前需要先stop slave。修改完之后的效果:

可以看到復制線程有8個。說明已經開啟了多線程復制的功能。

MySQL在配置文件的mysqld選項組中添加:

slave_parallel_workers
 
采用多個sql線程,每個sql線程處理不同的database,提高了並發性能,即使某database的某條語句暫時卡住,也不會影響到后續對其它的database進行操作。 如果只有一個database要同步,那么多個sql線程也沒有什么意義。

多線程復制在一定程度上解決了從庫延遲主庫並且很難追上的問題,有興趣的同學可以玩玩MySQL的多線程復制。

 

參考資料:

MariaDB 多線程復制說明:https://mariadb.com/kb/en/mariadb/parallel-replication/
MySQL 多線程復制說明:http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#sysvar_slave_parallel_workers

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM