Mysql主从复制的实现过程

发布时间:2023年12月29日

前言:

Mysql主从复制是基于binlog实现的

1、从服务器开始主从复制后,会开启两个线程:1、I/O线程 2、SQL线程

2、从服务器的I/O线程会尝试和主服务器建立连接,主服务器中有一个binlog dump线程,专门和从服务器的I/O线程交互

3、从服务器的I/O线程会告诉主服务器的dump线程要从什么位置开始接收binlog

4、主服务器在更新的过程中,会将所有的操作都写入binlog当中

5、当dump线程检测到binlog发生变化时,会从指定位置开始读取内容,然后会被从服务器的I/O线程拉取过去

6、从服务器的I/O线程接收到通知后,会将内容保存到relay log中(中继日志)

7、从服务器的sql线程会不断的从relay log中读取内容,然后将数据写入到自己的数据库中

复制方式:

全同步复制、异步复制、半同步复制

全同步复制:

全同步复制中,当主库执行完一个事务之后,会等待所有的从库完成数据复制之后,才会给客户端反馈

安全可以保障,但是性能差,从库很多的话,需要等待很长时间

异步复制:

Mysql的默认复制方式,当主库执行完事务之后,立刻给客户端返回,不需要关心从库数据是否复制完成

容易丢失此次变更的内容

半异步复制:

半异步复制是全同步复制和异步复制之间的一种复制方式,主库执行完事务之后,不会立马给客户端返回,也不会等所有从库都进行复制完成,而是等其中一个从库完成数据复制之后,再反馈给客户端。

? ? ? ? 半同步复制,会在事务提交的2阶段都完成之后,等待从库复制完binlog,然后在返回成功。

文章来源:https://blog.csdn.net/weixin_43005845/article/details/135258567
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。