Mysql 主从复制原理
画一个图
用语言表述一下吧
- change master to 时,ip pot user password binlog position写入到master.info进行记录
- start slave 时,从库会启动IO线程和SQL线程
- IO_T,读取master.info信息,获取主库信息连接主库
- 主库会生成一个准备binlog DUMP线程,来响应从库
- IO_T根据master.info记录的binlog文件名和position号,请求主库DUMP最新日志
- DUMP线程检查主库的binlog日志,如果有新的,TP(传送)给从从库的IO_T
- IO_T将收到的日志存储到了TCP/IP 缓存,立即返回ACK给主库 ,主库工作完成
- IO_T将缓存中的数据,存储到relay-log日志文件,更新master.info文件binlog 文件名和postion,IO_T工作完成
- SQL_T读取relay-log.info文件,获取到上次执行到的relay-log的位置,作为起点,回放relay-log
- SQL_T回放完成之后,会更新relay-log.info文件。
- relay-log会有自动清理的功能。
Tips:
- 主库一旦有新的日志生成,会发送“信号”给binlog dump ,IO线程再请求