MySQL主备复制
文章目录 MySQL 主备原理 binlog 的 3 种格式 statement row mixed 循环复制问题 我们知道MySQL中的binlog 可以用来归档,同时也可以用来做主从同步,今天来详细介绍一下。 MySQL 主备原理 从上面流程可以看出,A 节点是主库,B 节点是从库。通常情况下从库我们会设置为 readonly ,这样可以防止因业务代码中的切换 BUG 造成 在从库写数据;同时我们也可以通过 readonly 的状态来判断,节点的主从状态。 下面我们看一下,一个 update 语句在 A、B 节点上面的数据流转。 上图包含了 binlog 和 redo log 的写入机制,备库 B 和 A 之间维持了一个长连接。主库 A 里面有一个线程,专门服务于备库 B 。一个事务的同步的完整过成如下: 在备库 B 上面通过 change master 命令,设置主库 A 的IP、端口、用户名、密码,以及需要同步主库 binlog 的位置; 在备库 B 上执行 start slave 命令,这个时候备库会启动 2 个线程,就是图中的 io_thread 和 sql_thread。其中 io_thread 负责和主库建立连接; 主库校验完成之后,开始从指定 binlog 位置读取,并传送给备库 B; 备库 B 拿到 binlog 后写到本地(relay log); sql