配置主库参数启用二进制日志并设置唯一server-id;2. 创建复制账号repl并授权;3. 从库配置server-id和中继日志;4. 导出主库数据并记录日志位置;5. 导入数据到从库后启动复制。

在 mysql 中配置主从复制,需要正确设置主库和从库的参数,确保数据能正常同步。整个过程涉及修改配置文件、创建复制账号、导出主库数据以及启动复制链路。
1. 配置主库(Master)参数
编辑主库的 mysql 配置文件(通常是 my.cnf 或 my.ini),在 [mysqld] 段中添加以下内容:
- server-id = 1:设置唯一服务器 ID,主从不能重复
- log-bin = mysql-bin:启用二进制日志,并指定文件前缀
- binlog-format = ROW:推荐使用 ROW 格式,更安全准确
- expire-logs-days = 7:自动清理 7 天前的日志(可选)
- binlog-do-db = your_db_name:仅同步指定数据库(可选)
修改后重启 MySQL 服务使配置生效。
2. 创建从库复制专用账号
在主库上执行以下 SQL 命令,创建一个供从库连接使用的账号:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
3. 配置从库(Slave)参数
同样编辑从库的配置文件,在 [mysqld] 段中添加:
- server-id = 2:必须与主库不同
- relay-log = mysql-relay-bin:启用中继日志(可选但推荐)
- log-slave-updates = 1:如果从库还要作为其他库的主库,需开启
- read-only = 1:防止从库被误写入数据
配置完成后重启从库 MySQL 服务。
4. 获取主库二进制日志位置并导入数据
在主库上执行:
SHOW MASTER STATUS;
记录输出中的 File 和 position 值,例如:
mysql-bin.000003 | 154
使用 mysqldump 导出主库数据并导入到从库:
mysqldump -u root -p --master-data=1 --single-transaction your_db_name > backup.sql # 将 backup.sql 导入从库 mysql -u root -p your_db_name < backup.sql
–master-data=1 会自动记录主库的 binlog 位置。
5. 启动从库复制进程
在从库执行以下命令,配置复制源:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154; <p>START SLAVE;</p>
然后检查复制状态:
SHOW SLAVE STATUSG
重点关注以下两项:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
如果都为 Yes,说明复制已正常运行。
基本上就这些。只要每一步配置准确,主从复制就能稳定工作。注意定期检查复制延迟和错误日志。不复杂但容易忽略细节。


