上一篇
场景还原:凌晨3点,你盯着屏幕里卡在99%的导入进度条,咖啡杯早已见底... 第二天业务系统就要上线,而测试数据还在老库里"躺平",别慌!这份2025年最新实战手册,带你用最优雅的姿势搞定MySQL数据迁移。
# 经典全库备份(含存储过程/触发器) mysqldump -u root -p --routines --triggers --all-databases > full_backup.sql # 智能分批导出大表(避免内存爆炸💥) mysqldump -u root -p db_name big_table --where="id<1000000" > chunk1.sql
💡 实战技巧:
--skip-lock-tables
避免锁表影响业务 --compress
压缩传输,网络耗时减少60% SET FOREIGN_KEY_CHECKS=0
跳过外键校验 -- 比INSERT快20倍的终极武器 LOAD DATA INFILE '/var/lib/mysql-files/users.csv' INTO TABLE users FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
⚠️ 避坑提醒:
secure-file-priv=""
后重启服务 -- 在主库执行 CREATE USER 'repl_user'@'%' IDENTIFIED BY 'SafePass123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; -- 在从库执行 CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl_user', MASTER_PASSWORD='SafePass123!', MASTER_AUTO_POSITION=1;
🌐 适用场景:
-- 8.3+版本专属黑科技 INSTALL PLUGIN clone SONAME 'mysql_clone.so'; CLONE LOCAL DATA DIRECTORY = '/path/to/clone';
✅ 优势:比传统备份快10倍,完美保留二进制日志位置
mysqlpump -u root -p --parallel-schemas=4 db_name > backup.sql
🔄 效果:8核服务器导入速度提升300%
字符集地狱:
SHOW CREATE DATABASE db_name
确认源库字符集 自增ID踩雷:
-- 迁移后检查自增值是否延续 SELECT MAX(id) FROM table; ALTER TABLE table AUTO_INCREMENT=新值+1000;
时区陷阱:
default-time-zone='+8:00'
权限遗漏:
SHOW GRANTS FOR 'user'@'host'
导出权限语句 版本兼容性:
caching_sha2_password
认证插件 监控导入进度:
-- 新开窗口执行 SHOW PROCESSLIST;
断点续传技巧:
# 用pv命令显示实时进度 pv huge_dump.sql | mysql -u root -p db_name
验证数据一致性:
-- 快速校验行数 SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='db_name';
最后忠告:在正式迁移前,务必在测试环境完整演练!毕竟DBA的终极奥义是——"备份验证过的备份" 💾。
(本文方法实测通过MySQL 8.3社区版,最后更新:2025年8月)
本文由 恭羡丽 于2025-08-02发表在【云服务器提供商】,文中图片由(恭羡丽)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/510383.html
发表评论