mysql中复制SQL线程和IO线程区别

20次阅读

IO线程 负责从主库拉取 binlog 并写入中继日志,sql线程负责读取中继日志并执行 SQL 实现数据同步,两者分工协作完成主从复制。

mysql 中复制 SQL 线程和 IO 线程区别

mysql 主从复制中,IO 线程和 SQL 线程是两个核心组件,它们分工不同,协同完成数据的复制过程。

IO 线程的作用

IO 线程(I/O Thread)运行在从库(Slave)上,主要负责与主库(Master)建立连接,并请求主库发送二进制日志(binlog)中的变更 事件

  • 从库的 IO 线程连接到主库,像一个客户端一样请求主库的 binlog 更新。
  • 主库会启动一个 binlog dump 线程,将新的 binlog 事件推送给从库的 IO 线程。
  • IO 线程接收到这些事件后,将其写入从库本地的 中继日志(relay log)文件中。

简单说,IO 线程负责“拉取”主库的日志内容并保存到本地磁盘。

SQL 线程的作用

SQL 线程(SQL Thread)也运行在从库上,负责读取本地的中继日志,并重放其中的sql 语句,从而实现数据同步。

mysql 中复制 SQL 线程和 IO 线程区别

稿定 AI 社区

在线 AI 创意灵感社区

mysql 中复制 SQL 线程和 IO 线程区别 60

查看详情 mysql 中复制 SQL 线程和 IO 线程区别

  • SQL 线程读取 relay log 中的事件,按照顺序执行对应的更改操作(如 INSERT、UPDATE、delete等)。
  • 通过执行这些操作,从库的数据逐步与主库保持一致。
  • SQL 线程的位置信息通常记录在 master.info 或系统表中,用于断点续传。

换句话说,SQL 线程负责“回放”已经拉取过来的日志,真正应用变更。

两者的关键 区别

  • 职责不同:IO 线程负责网络传输和日志拉取;SQL 线程负责本地执行日志中的操作。
  • 处理阶段不同:IO 线程处理的是日志获取阶段;SQL 线程处理的是日志应用阶段。
  • 可能出现延迟的原因不同:如果 IO 线程延迟,可能是网络慢或主库压力大;如果 SQL 线程延迟,通常是由于从库执行速度慢(如大事务、硬件性能不足)。

基本上就这些。理解这两个线程的分工,有助于排查复制延迟问题,比如通过 SHOW SLAVE STATUS 查看 Seconds_Behind_Master 以及 Slave_IO_RunningSlave_SQL_Running状态来判断是哪个环节出了问题。

站长
版权声明:本站原创文章,由 站长 2025-11-05发表,共计861字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources