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 TOMASTER_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唯一性和网络权限。
