Mysql 主从复制原理

画一个图
在这里插入图片描述

用语言表述一下吧

  1. change master to 时,ip pot user password binlog position写入到master.info进行记录
  2. start slave 时,从库会启动IO线程和SQL线程
  3. IO_T,读取master.info信息,获取主库信息连接主库
  4. 主库会生成一个准备binlog DUMP线程,来响应从库
  5. IO_T根据master.info记录的binlog文件名和position号,请求主库DUMP最新日志
  6. DUMP线程检查主库的binlog日志,如果有新的,TP(传送)给从从库的IO_T
  7. IO_T将收到的日志存储到了TCP/IP 缓存,立即返回ACK给主库 ,主库工作完成
  8. IO_T将缓存中的数据,存储到relay-log日志文件,更新master.info文件binlog 文件名和postion,IO_T工作完成
  9. SQL_T读取relay-log.info文件,获取到上次执行到的relay-log的位置,作为起点,回放relay-log
  10. SQL_T回放完成之后,会更新relay-log.info文件。
  11. relay-log会有自动清理的功能。

Tips:

  1. 主库一旦有新的日志生成,会发送“信号”给binlog dump ,IO线程再请求