上一篇
上周隔壁研发部的小王遇到了件头疼事——他们用了三年的MySQL数据库服务器要退役了,新机器已经到位,但怎么把上百张表、上亿条数据安全搬到新家?凌晨两点他盯着屏幕上的ERROR 2003 (HY000)
报错抓狂时,我突然意识到:数据迁移这种看似基础的操作,其实藏着不少容易踩坑的细节。
今天咱们就用"搬家"的视角,聊聊数据库迁移的标准姿势,不需要高端工具,就用最基础的命令行,带你走通从老库到新库的安全通道。
源库体检报告
-- 查看数据库大小 SELECT table_schema "数据库名", ROUND(SUM(data_length+index_length)/1024/1024,2) "大小(MB)" FROM information_schema.tables GROUP BY table_schema; -- 检查特殊对象 SHOW PROCEDURE STATUS; -- 存储过程 SHOW FUNCTION STATUS; -- 函数 SHOW TRIGGERS; -- 触发器
新家验收清单
最佳搬家时间窗
# 全库打包(包含存储过程等) mysqldump -u root -p --routines --triggers --single-transaction --master-data=2 source_db > backup.sql # 传输到目标服务器(推荐用scp/rsync) scp backup.sql user@new_server:/tmp/ # 新库导入 mysql -u root -p target_db < /tmp/backup.sql
避坑指南:
--single-transaction
避免锁表(仅InnoDB有效) --where
分批导出 max_allowed_packet
参数 # 源库锁表备份 FLUSH TABLES WITH READ LOCK; system cp -r /var/lib/mysql/data_dir /backup/ UNLOCK TABLES; # 目标库替换数据文件(需停服务) systemctl stop mysql rm -rf /var/lib/mysql/data_dir/* cp -r /backup/data_dir /var/lib/mysql/ chown -R mysql:mysql /var/lib/mysql/data_dir systemctl start mysql
特别注意:
-- 目标库执行 CHANGE MASTER TO MASTER_HOST='old_server_ip', MASTER_USER='replica_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; START SLAVE; SHOW SLAVE STATUS\G -- 查看同步状态
优雅切换技巧:
数据一致性核验
-- 随机抽查表记录数 SELECT 'users', (SELECT COUNT(*) FROM source_db.users), (SELECT COUNT(*) FROM target_db.users) UNION ALL SELECT 'orders', (SELECT COUNT(*) FROM source_db.orders), (SELECT COUNT(*) FROM target_db.orders);
功能测试要点
-- 相同查询响应时间对比 SELECT * FROM large_table WHERE create_time > '2025-01-01' LIMIT 1000;
场景1:导入时报外键错误
SET FOREIGN_KEY_CHECKS=0;
场景2:存储过程语法不兼容
sql_mode
是否一致:SHOW VARIABLES LIKE 'sql_mode';
ONLY_FULL_GROUP_BY
等严格模式 场景3:磁盘空间不足中断
pv
监控进度:pv backup.sql | mysql -u root -p target_db
记得第一次做数据迁移时,我把整个部门的订单表导重复了,最后不得不手动删了三个小时,现在回想起来,数据库迁移就像搬家——打包时觉得"这个还有用要带上",到新家才发现好多是冗余。
建议你在下次迁移前,不妨先回答三个问题:
(2025-08 根据生产环境案例整理)
本文由 长孙妍 于2025-08-10发表在【云服务器提供商】,文中图片由(长孙妍)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/581148.html
发表评论