主从复制需配置主库开启binlog、设置唯一server-id、创建复制用户;从库配置server-id和只读模式;通过CHANGE MASTER启动同步,并推荐启用GTID提升可靠性。

MySQL 镜像配置通常用于提升读性能、实现高可用或数据备份。在使用 Docker 或云环境部署 MySQL 时,正确设置关键参数能显著提高系统稳定性与查询效率。以下是 MySQL 主从复制(镜像)中常见的核心参数配置方法和说明。
1. 启用二进制日志(binlog)
主库必须开启二进制日志,它是实现数据同步的基础。
在主库的 my.cnf 或 mysqld.cnf 配置文件中添加:
- log-bin = /var/lib/mysql/mysql-bin:启用 binlog 并指定路径
- server-id = 1:设置唯一服务器 ID(主库一般设为 1)
- binlog-format = ROW:推荐使用 ROW 格式,更安全且支持 GTID
- expire-logs-days = 7:自动清理过期日志
配置后重启 MySQL,并确认日志已生成:
mysql> SHOW BINARY LOGS;
2. 配置主库用户权限
从库需要一个具备复制权限的账号连接主库。
在主库执行:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
确保防火墙开放 3306 端口,且 MySQL 允许远程连接(bind-address 可注释或设为 0.0.0.0)。
3. 配置从库参数
从库也需要设置 server-id,且不能与主库重复。
在从库配置文件中添加:
- server-id = 2:唯一标识从库
- relay-log = /var/lib/mysql/relay-bin:可选,指定中继日志路径
- read-only = 1:防止从库被误写入数据
如果使用 Docker,可通过环境变量或挂载自定义配置文件实现。
4. 启动主从同步
先获取主库当前 binlog 位置:
mysql> SHOW MASTER STATUS;
记录 File 和 Position 值。
在从库执行同步命令:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; START SLAVE;
查看同步状态:
SHOW SLAVE STATUS\G
重点关注 Slave_IO_Running 和 Slave_SQL_Running 是否为 Yes。
5. 推荐启用 GTID 模式(高级选项)
GTID 能简化故障恢复和主从切换。
主从都需配置:
- gtid_mode = ON
- enforce-gtid-consistency = 1
启动时使用 CHANGE MASTER TO ... MASTER_AUTO_POSITION = 1 自动定位同步点。
基本上就这些。只要 binlog 正确开启、server-id 唯一、网络通畅、权限到位,主从同步就能稳定运行。定期检查复制延迟和错误日志,确保系统长期可靠。










