背景:
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
多線程復制在一定程度上解決了從庫延遲主庫並且很難追上的問題,有興趣的同學可以玩玩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