Mysql主从复制的实现过程
2023-12-29 08:01:14
前言:
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!