做 Mysql slaves 运行 多线程读取 Relay log 同步 Master 的操作

Do Mysql slaves run multiple threads to read Relay log for sync up Master's operation

我知道Mysql slaves单线程顺序读取Master的bin-log,并在本地转储数据为relay log。我的问题是,slave 会使用多个线程来读取中继日志以同步操作(插入、更新、删除)吗? 如果不是多线程,我猜下面的场景Mysqlslave可能永远追不上Master

假设Master有100个table,他们之间没有任何关系。所以它可能是同时向 100 table 发送 100 个写入请求。如果我们假设在 1 秒内 100 tables 在 Master 中完成写入,那么如果是单线程操作,Slave 可能需要 100 秒才能完成同步。对吗?谢谢!

它使用一个读取线程和一个更新线程。

你的场景没有意义。 100 次更新在 master 和 slave 上花费的时间一样长,也许更长,除非 master 和 slave 主机的 CPU 和磁盘之间存在显着差异。

除非您使用的是 MySQL Server 5.6 或更高版本,否则是的,复制事件在从主服务器收到后由单个线程("SQL" 线程)按顺序执行"IO" 线程并写入中继日志。

但是,MySQL 5.6 引入了 slave_parallel_workers,如果配置(以及多线程复制的其他先决条件)允许多个(理论上最多 1024 个)并行复制工作线程,控制和协调从属 SQL 线程,以便可以并行复制独立数据库之间的查询。