概述

MySQL 的复制原理大致如下:

  1. 首先,MySQL主库在事务提交时会把数据变更作为事件 Events 记录在二进制日志文件 Binlog 中;MySQL 主库上的 sync_binlog 参数控制 Binlog 日志刷新到磁盘。

  2. 主库推送二进制日志文件 Binlog 中的事件到从库的中继日志 Relay Log,之后从库根据中继日志 Relay Log 重做数据变更操作。

MySQL 通过 3 个线程来完成主从库间的数据复制:其中 Binlog Dump 线程跑在主库上, I/O 线程SQL 线程跑在从库上:

  • 当在从库上启动复制(START SLAVE)时,首先创建 I/O 线程连接主库

  • 主库随后创建Binlog Dump 线程读取数据库事件并发送给 I/O 线程

  • I/O 线程获取到事件数据后更新到从库的中继日志Relay Log 中去

  • 之后从库上的 SQL 线程读取中继日志 Relay Log 中更新的数据库事件并应用

最后更新于