mysql之多线程复制

mysql主从原理回顾:

  1. 从库的io线程请求主库的binglogdump线程;
  2. 主库的binlogdump线程读取二进制日志,将获取到的binlog位置和文件名相关信息发送给从库的io线程;
  3. 从库的io线程将数据转储在中继日志中,并将主库的binlog位置和文件名记录到master.info中;
  4. 从库的sql线程读取中继日志,在本地执行,完成复制。

    以上是mysql的主从复制原理,但是mysql中是默认单一线程。在生产中我们的主库往往是多线程写入,从库还默认单线程的话,会造成数据库主从不一致的情况,这就用到了我们今天聊的多线程复制。

那该如何在mysql中开启多线程复制呢?
首先需要修改slave_parallel_workers数,默认为0,按需修改。
mysql在5.7中加入了slave_parallel_type,默认值是database,需要改成基于时钟逻辑的LOGICAL_CLOCK

mysql> show variables like 'slave_parallel%';
+------------------------+----------+
| Variable_name          | Value    |
+------------------------+----------+
| slave_parallel_type    | DATABASE |
| slave_parallel_workers | 0        |
+------------------------+----------+

mysql> stop slave;
mysql> set global slave_parallel_type='LOGICAL_CLOCK';
Query OK, 0 rows affected (0.00 sec)

mysql> set global slave_parallel_workers=4;
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)


mysql> show variables like 'slave_parallel%';
+------------------------+---------------+
| Variable_name          | Value         |
+------------------------+---------------+
| slave_parallel_type    | LOGICAL_CLOCK |
| slave_parallel_workers | 4             |
+------------------------+---------------+

以上方法只是临时生效,重启后会自动失效。
(ps:修改完一定要记得写入配置文件,防止时间久了忘记或则其他人重启后失效,导致不必要的麻烦,曾经的就犯过这样的错误,想起来都是眼泪啊…)
在配置文件my.cnf的mysqld下填入以下内容,重启数据库后永久生效。

slave_parallel_workers=4
slave_parallel_type='LOGICAL_CLOCK
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值