在mysql中我们经常会听说到master-slave的结构。一个master带有很多slave,所有的slave都从master去同步数据。
上一篇文章《CDC工具Canal的安装并且使用JAVA客户端读取数据变更》我们也是基于master-slave的结构来进行数据同步的。所以这篇我们我们聊聊mysql的master-slave的主从复制原理。
说到mysql的master-slave,那么我们就能知道肯定有两个角色,第一个是master,另外一个是slave。
master主要做什么呢?
1、master需要开启binlog日志。
2、master主要做数据的写入操作。
slave主要做什么呢?
1、开启一个I/O Thread线程向master订阅binlog
2、master接收到订阅后,把通过dump协议把binlog推送给slave
3、slave对binlog进行解析并且写入自己的库中。
整体的步骤流程就是:
1、客户端向master节点写入数据
2、master主库将变更的记录写入到二进制日志binlog里面去
3、Slave向master发送dump协议,请求订阅binlog
4、master将binlog events拷贝到中继日志relay log里面去
5、master将relay log推送给slave节点
6、slave读取中继日志中的events事件,将变更的数据同步到自己的数据库中。
最后来一张图示表达下整个master-slave主从复制的流程。
还没有评论,来说两句吧...