50. MySQL 主从复制的流程是怎么样的?

MySQL 的主从复制是基于如下 3 个线程的交互(多线程复制里面应该是 4 类线程):

  1. Master 上面的 binlog dump 线程,该线程负责将 master 的 binlog event 传到 slave 。
  2. Slave 上面的 IO 线程,该线程负责接收 Master 传过来的 binlog,并写入 relay log 。
  3. Slave 上面的 SQL 线程,该线程负责读取 relay log 并执行。
  4. 如果是多线程复制,无论是 5.6 库级别的假多线程还是 MariaDB 或者 5.7 的真正的多线程复制, SQL 线程只做 coordinator ,只负责把 relay log 中的 binlog 读出来然后交给 worker 线程, woker 线程负责具体 binlog event 的执行。