MySQL的复制原理

举报
技术火炬手 发表于 2019/02/21 11:05:52 2019/02/21
【摘要】 MySQL官网链接:https://dev.mysql.com/doc/refman/5.7/en/replication-implementation-details.htmlMySQL复制功能使用三个线程实现,一个在master上,两个在slave上:Binlog dump threadmaster创建此线程,以便在slave连接时将二进制日志内容发送到slave.master上的SHO...

MySQL官网链接:https://dev.mysql.com/doc/refman/5.7/en/replication-implementation-details.html
MySQL复制功能使用三个线程实现,一个在master上,两个在slave上:

  • Binlog dump thread

    • master创建此线程,以便在slave连接时将二进制日志内容发送到slave.master上的SHOW PROCESSLIST的输出中将此线程标识为Binlog Dump线程。

    • 此线程获取master二进制日志上的一个锁,以便读取发送到slave的每个事件。一旦读取了事件,即使在事件发送到slave之前,锁也会被释放。**

  • Slave I/O thread

    • 在slave上发出START SLAVE语句时,slave会创建一个I/O线程,该线程连接到master并要求它发送二进制日志中记录的更新。

    • 此线程读取master的Binlog Dump thread发送的更新(请参阅上一项)并将它们复制到包含slave的中继日志的本地文件中。

    • 该线程的状态在SHOW SLAVE STATUS的输出中显示为Slave_IO_running,或者在SHOW STATUS的输出中显示为Slave_running

  • Slave SQL thread.

    • slave创建一个SQL线程来读取由Slave I/O thread写入的中继日志,并执行其中包含的事件。

NEXT:2:基于二进制日志文件位置的复制 http://blog.51cto.com/itzhoujun/2351367

----------------------------------

本文转自shixiazhoujun博客51CTO博客

如需转载,请联系作者授权

原文链接:http://blog.51cto.com/itzhoujun/2352587

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。