1. MySQL主从复制原理
1.1. 主从复制具体实现官方说明:
1.2. 示意图
1.3. 相关线程
MySQL复制功能使用三个线程实现,一个在主服务器上,两个在从服务器上
Binlog dump thread
: 主节点Binlog转储线程,用于主节点在被从节点连接后发送二进制日志内容。Slave I/O thread
: 从节点 I/O 线程,当从节点执行START SLAVE语句时,将创建一个 I/O 线程,该线程连接到主节点,并要求它发送在其二进制日志中记录的更新。Slave SQL thread
: 从节点 SQL 线程,来读取由从节点 I/O 线程读取的中继日志,并执行其中包含的事件。
2. 互为主从配置
2.1. 注意事项
- 主从复制只能复制开启主从复制之后的记录,开启前要保证各节点数据一致,数据手动同步可参考MySQL数据库手动同步复制(拷贝datadir目录文件)。
- 两个MySQL服务节点分别用
mysql-01
和mysql-02
表示。
2.2. 开启复制配置
- 编辑
mysql-01
节点的配置文件my.cnf
,在[mysqld]
配置段中添加以下配置
# 设置服务节点ID,不能重复
server-id=1
# 开启二进制同步
log-bin=mysql-bin
# 需要开启二进制日志的数据库,可设置白名单[binlog-do-db]和黑名单[binlog-ignore-db]中一种,多个可重复设置
binlog-do-db=my_database_a
binlog-do-db=my_database_b
# 需要开启同步的数据库,可设置白名单[replicate-do-db]和黑名单[