Mysql半同步复制原理及问题排查

2019-01-04 16:26:20王振洲

(7)问题延生

问题定位后,另外一个问题还困扰我了半天。因为mysql内核中有监听的部分有3块,1是监听端口的select,2是线程池的监听epoll,3是半同步的select监听。slave binlog dump的线程就是普通的工作线程,而工作线程的socket会受epoll的监听,这样一来,binlog dump的socket会同时受半同步的select监听和线程池的epoll监听,这不乱了吗?后来仔细看了看代码,才发现线程池的epoll监听采用的是EPOLLONESHOT模式,每次接收消息后会解绑,需要重新注册,因此不会出现同一个句柄被两种监听机制同时监听的情况。

到此,排查问题过程就结束了,结论是比较简单的,但定位这个问题确实花费了一些功夫。由于select一种比较通用的多路IO复用机制,因此有用到select函数的童鞋,可能要注意下它的限制。

您可能感兴趣的文章:

深入解析半同步与异步的MySQL主从复制配置MySQL主从复制的原理及配置方法(比较详细)mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法MySQL数据表字段内容的批量修改、清空、复制等更新命令mysql中复制表结构的方法小结MySQL复制表结构和内容到另一张表中的SQL语句简单谈谈MySQL的半同步复制