概述
最后更新于
最后更新于
MySQL 的复制原理大致如下:
首先,MySQL主库在事务提交时会把数据变更作为事件 Events 记录在二进制日志文件 Binlog 中;MySQL 主库上的 sync_binlog 参数控制 Binlog 日志刷新到磁盘。
主库推送二进制日志文件 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 中更新的数据库事件并应用