配置主从复制需先在主库启用binlog并设置server-id,创建复制用户,从库配置唯一server-id;再通过mysqldump导出主库数据并记录binlog位置,导入从库后启动复制,实现数据实时同步与平滑迁移。

MySQL使用复制进行数据迁移是一种高效、可靠的方式,特别适用于需要最小化停机时间的场景。通过主从复制机制,可以将源数据库(主库)的数据实时同步到目标数据库(从库),完成数据迁移后,再切换应用连接,实现平滑过渡。
1. 配置主从复制环境
要使用复制迁移数据,首先要搭建主从架构:
- 启用二进制日志(binlog):在主库的配置文件my.cnf或my.ini中设置log-bin=mysql-bin和server-id=1。
- 重启主库:使配置生效。
-
创建复制专用用户:在主库执行:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; - 配置从库:在从库配置文件中设置server-id=2(唯一),并启用中继日志(可选)。
- 重启从库:确保配置加载。
2. 导出并导入主库数据
从库需要与主库初始状态一致,才能开始复制:
-
锁定主库并获取binlog位置:
执行FLUSH TABLES WITH READ LOCK;,然后运行SHOW MASTER STATUS;,记录当前binlog文件名和位置。 -
导出数据:使用mysqldump工具导出:
mysqldump -u root -p --all-databases --master-data=2 > backup.sql - 解锁主库:UNLOCK TABLES;
-
导入到从库:
mysql -u root -p
3. 启动复制进程
配置从库连接主库并开始同步:
-
设置主库连接信息:在从库执行:
CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1234; - 启动复制:START SLAVE;
- 检查复制状态:SHOW SLAVE STATUS\G,确认Slave_IO_Running和Slave_SQL_Running均为Yes。
4. 完成迁移与切换
当从库完全同步后,可进行迁移切换:
- 停止写入主库:短暂停止应用写操作,确保数据一致性。
- 确认从库追上主库:再次查看SHOW SLAVE STATUS,确认无延迟。
- 提升从库为主库:修改从库配置,开启log-bin,并断开复制(可选)。
- 更新应用连接:将应用数据库地址指向新主库。
- 原主库可下线或作为新从库:根据需要重新配置角色。
基本上就这些。只要步骤清晰,主从复制是实现MySQL数据迁移非常成熟的方法,尤其适合大容量、高可用要求的系统。注意监控复制延迟和错误日志,确保过程平稳。不复杂但容易忽略细节,比如server-id唯一性和网络权限。










