本文主要是介绍MySQL主从复制从库IO线程源码分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
mysql主从复制通过binlog来同步数据,在从库上执行start slave,会开启两个线程,分别是io线程和sql线程。io线程负责从主库拉取binlog并存储到本地的relay log,sql线程负责把relay log中的事务在从库应用。本文将结合源码分析io线程的具体实现。
MySQL源码版本:5.7.19
原文地址:
https://mytecdb.com/blogDetail.php?id=85
1. io线程函数
mysql io线程函数在源码sql/rpl_slave.cc中实现,执行命令start slave或者start slave io_thread,就会创建io线程,io线程函数为:
extern “C” void *handle_slave_io(void *arg)
io线程函数的参数arg,实际上是一个Master_info类型的指针mi,保存了主库相关的一些信息,比如host,user,password,主库uuid,主库binlog文件名,主库binlog文件位置等等。
io线程函数中会创建一个THD的对象,一个THD的对象就相当于一个连接,这个连接是可以在show processlist中看到,实际上io线程也可以理解为一个通向主库的连接。
紧接着io线程函数初始化一个MYSQL结构体的指针,称之为mysql,主要作用是与主库通信,走的标准的MySQL客户端/服务器协议,后面io线程获取主库
这篇关于MySQL主从复制从库IO线程源码分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!