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线程获取主库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值