✅ MySQL 主从复制配置(基于 --master-data=2导出方式)
✅ MySQL 主从复制配置(基于 --master-data=2 导出方式)
一、准备条件
- 主库(Master)和从库(Slave)网络互通
- 两台服务器的 MySQL 均为 8.0.42
- 使用 传统复制(非 GTID)
- 已创建
repl用户并赋予复制权限:
CREATE USER 'repl'@'%' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
二、在主库上导出数据(推荐)
1. 使用 mysqldump 导出主库数据库(如:bfm)
mysqldump \
-uroot -p'密码' \
-h127.0.0.1 -P10004 \
--single-transaction \
--quick \
--set-gtid-purged=OFF \
--master-data=2 \
bfm > /mnt/sdc/bfm_dump.sql
⚠️ 注意事项:
-
--master-data=2:在导出文件中插入CHANGE MASTER TO语句(注释形式),记录 binlog 的位置。 -
警告提示:
WARNING: --master-data is deprecated and will be removed in a future version. Use --source-data instead.此警告 不影响使用,只是提示未来将被
--source-data替代。
三、查看导出文件中的 binlog 起始位置
如果 SQL 文件可能非常大(例如 70~80G),不建议用 vim 打开,可以用以下方式快速查看:
✅ 方法 1:使用 grep 快速查找(推荐)
grep -E "CHANGE MASTER TO|MASTER_LOG_FILE" /mnt/sdc/bfm_dump.sql
输出示例:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000011', MASTER_LOG_POS=17330827;
✅ 方法 2:使用 less 工具分页查看
less /mnt/sdc/bfm_dump.sql
然后在界面中按 / 输入关键词搜索:
/CHANGE MASTER TO
四、在从库中清空并导入新数据库
1. 停止复制(第一次搭建这步跳过)
STOP SLAVE;
2. 删除旧数据库并重新创建(第一次搭建这步跳过)
DROP DATABASE bfm;
CREATE DATABASE bfm;
3. 导入主库导出的 SQL 文件
mysql \
-uroot -p'密码' \
-h127.0.0.1 -P10004 \
-S /mnt/sdc/mysql/mysql.sock \
bfm < /mnt/sdc/bfm_dump.sql
五、配置主从同步起点并启动复制
根据前面查到的 binlog 位置,执行如下命令:
CHANGE REPLICATION SOURCE TO
MASTER_HOST='IP',
MASTER_PORT=端口,
MASTER_USER='repl',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='mysql-bin.000011',
MASTER_LOG_POS=17330827;
START SLAVE;
六、检查复制状态
SHOW SLAVE STATUS\G
关键字段含义:
Slave_IO_Running: YesSlave_SQL_Running: Yes
✅ 表示主从复制正常运行。
七、备注:关于 --master-data 的弃用说明
--master-data=2是当前常用的方式,用于在导出 SQL 中嵌入 binlog 位置信息。- 从 MySQL 8.0.34+ 起,官方提示该参数将被弃用,建议使用:
--source-data=2
使用方式完全一致,功能也相同,只是参数名称更新以保持语义一致。

浙公网安备 33010602011771号