1.change master to 时,ip port 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日志,如果有新的,TcP(传送)给从从库的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会有自动清理的功能。
细节:
1.主库一旦有新的日志生成,会发送“信号”给binlog dump ,IO线程再请求
关于mysql 的prom 监控项设计:
主从复制运行指标:主机复制线程Slave_IO_Running、Slave_SQL_Running ; 主从复制落后时间Seconds_Behind_Master 表示从节点relaylog 中 未被执行完的部分差值。如果io过来的都执行完了,就是0
查询吞吐量:读(Com_select) 写(com_insert+com_update+com_delete)
慢查询性能:Slow_queries慢查询次数 long_query_time慢查询限定时间
连接数监控: 最大连接数,当前连接数(threads_connected),当前活跃连接数(threads_running),剩余可用连接数,拒绝连接数(超过最大后拒绝)
缓冲池