MySQL复制是实现数据高可用、读写分离和备份恢复的重要手段。要成功配置MySQL主从复制,必须正确设置与复制相关的参数。以下是具体的配置方法和关键参数说明。
1. 启用二进制日志(binary log)
主库必须开启二进制日志,因为它是记录所有更改数据操作的日志,从库通过读取这些日志来同步数据。
建议在主库的my.cnf或my.ini配置文件中添加: log-bin = /var/log/mysql/mysql-bin.log:启用二进制日志并指定路径 server-id = 1:设置唯一的服务器ID,主库设为1 binlog-format = ROW:推荐使用ROW格式,更安全且支持GTID修改后重启MySQL服务,并确认日志已生成。
2. 配置唯一的server-id
每个参与复制的MySQL实例必须有唯一的server-id,否则复制无法启动。
主库设置:server-id = 1 从库设置:server-id = 2(或其他唯一值)该参数在[mysqld]段落中配置,必须确保在同一复制集群中不重复。
3. 设置需要复制的数据库或忽略的数据库
可选择性地指定哪些数据库参与复制,提升效率或隔离数据。
binlog-do-db = db1:只记录db1的二进制日志(主库) replicate-do-db = db1:从库只应用db1的更新 replicate-ignore-db = mysql:忽略系统库的同步注意:使用这些参数时建议保持主从结构一致,避免跨库操作导致数据不一致。
4. 启用GTID(全局事务标识符)可选但推荐
GTID简化了复制管理,尤其在故障切换和主从切换时更可靠。
在主从库的配置文件中添加: gtid-mode = ON enforce-gtid-consistency = ON log-slave-updates = ON(用于级联复制)启用GTID后,CHANGE MASTER TO命令需使用MASTER_AUTO_POSITION=1。
5. 从库启用中继日志(relay log)
从库会自动启用中继日志来缓存主库传来的二进制事件。
relay-log = /var/log/mysql/relay-bin:可自定义路径 skip-slave-start:防止从库意外启动复制线程通常默认已启用,可根据需要调整路径或性能参数。
基本上就这些核心配置。完成参数设置后,重启主从MySQL服务,创建复制专用用户,使用CHANGE MASTER TO连接主从,并启动START SLAVE即可开始复制。关键是保证参数一致性与唯一性,避免配置冲突。
