开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(二):MyCat - 高级 - 读写分离 - MySQL 主从复制原理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/756/detail/13278
MyCat - 高级 - 读写分离 - MySQL 主从复制原理
一、MySQL 主从复制原理
MyCat 实现 MySQL 读写分离,需要先了解 MySQL 主从复制如何实现,因为读写分离是要基于 MySQL 的主从复制的,所以我们先来研究 MySQL 的主从复制原理。
1、原理
MySQL 的主从复制指的是将主数据库当中的 DDL 语句和 DML 语句通过二进制日志,也就是 beinglog 日志的形式传到从数据库当中,然后再从数据库当中进行重新执行,从而使得主库和从库的数据保持同步,如下图主从复制的原理图:
第一个 Master,第二个 Slaver。Master 在主重复制当中是主,Slave 就是从。当主数据库中有数据变更的时候,他就会将数据变更的语句写入到二进制日志 Binary log 当中。从数据库要想完成同步,他就会去读取 Master 当中的 Binary log 也就是二进制日志,把二进制日志通过 IO 读取过来之后,在写入到他本地的一个日志叫 Relay log,这个叫中继日志。写入到中继日志当中,然后再通过 io 的读取线程,读取中继日志当中的数据变化,把 Relay log 中的日志再重新执行。重新执行之后,从库和主库中的数据就一样了,这就是它的原理。
2、步骤
MySQL 的主从复制主要分为三步,第一步 Master 在提交事务时,把数据变更的日志记录到 binlog 当中;第二步主库推送二进制日志 binlog 给从库,并且写入到中继日志 Relay log ;第三步就是 slave 从做日志,日志的重新执行也叫重做。Slave 重做日志将其数据的改变反应到自身的数据库上,从而来实现主从同步。而在 MySQL 当中的主从同步他是可以完成从一个主到多个从,当然也可以完成的是一个主同步到一个从,然后再往从库上面作为其他数据库的一个主库。也就是后面还有一个从数据库,但他的主库是箭头所指的从库,实现链状复制。
这是 MySQL 主重复制原理。

