Mysql5.6的1755错误解决办法

遇到的问题:

最近遇到一个Mysql5.6的主备复制问题,这个错误编号为1755:

1 Cannot execute the current event group in the parallel mode
2 ......此处省略......
3 Reason: the event is a part of a group that is unsupported in the parallel execution mode.

从这个错误的翻译来看:

翻译:不能在并行模式下执行当前的事件组。事件是一个组的一部分,是不支持的并行的执行模式。

报错的意思很明确,这个事件组执行不能并行

什么是并行复制:

在MySQL 5.6版本之前,Slave服务器上有两个线程I/O线程和SQL线程。I/O线程负责接收二进制日志(更准确的说是二进制日志的event),SQL线程进行回放二进制日志。如果在MySQL 5.6版本开启并行复制功能,那么SQL线程就变为了coordinator线程,coordinator线程主要负责以前两部分的内容:

  • 若判断可以并行执行,那么选择worker线程执行事务的二进制日志
  • 若判断不可以并行执行,如该操作是DDL,亦或者是事务跨schema操作,则等待所有的worker线程执行完成之后,再执行当前的日志

这意味着coordinator线程并不是仅将日志发送给worker线程,自己也可以回放日志,但是所有可以并行的操作交付由worker线程完成。coordinator线程与worker是典型的生产者与消费者模型。

总的来说,就是拉取binlog为单线程,应用binlog则为多线程并发。

MySQL5.6版本的并行复制是基于库级别的,不过这个貌似和这个错误关系不大。

解决办法:

既然错误中说的很清楚,这个事件不支持并行,应该改回串行就可以。因此。修改一下并行复制参数即可。

slave_parallel_workers :默认值 0,表示不开启并行复制,有效值:0-1024。

1 stop slave
2 set global skip_parallel_works=0;
3 start slave;

反过来,想开启,就可以设置为大于0的数值。

资料:

http://mysql.taobao.org/monthly/2015/08/09/
http://isadba.com/?p=557
http://www.innomysql.net/article/16317.html?utm_source=tuicool

转载请注明:旅途@KryptosX » Mysql5.6的1755错误解决办法

上一篇:设计模式[17]-Flyweight


下一篇:.NET设计模式-享元模式(Flyweight Pattern)