注意
mysql8.0.x前,从库将主库信息记录在master.info文件中mysql8.0.x后,从库将主库信息记录在mysql.slave_master_info表中
主从同步流程:
1、在从库执行change master ........ 命令
2、从库会记录change master的信息
3、从库执行start slave (此时从库会开启io\_t和sql\_t)
4、从库的io\_t读取保存的主库信息并连接主库
5、主库会提供一个dump\_t与从库的io\_t交互
6、io\_t会通过mi指针对比主库最新binlog位置点
7、主库通过dump\_t将最新的binlog通过tcp传给从库
8、从库接收到binlog日志先存储在tcp缓存中,并更新主库位置点信息
9、io\_t将tcp缓存中的数据转移到磁盘的relaylog中
10、sql\_t读取relay.info的信息,获取最新的relaylog位置点
11、sql\_t回放最新的relaylog,并再次更新relay.info
12、从库会自动清理历史relaylog
这里还有一个小细节
在6、7点主从交互的过程中,类似于从库主动发起请求,询问主库是否有新的binlog,有我就拿走。
最后一次更新于2024-06-05