MySQL大表迁移需分批迁移、在线变更和数据校验:按主键分片导出导入,用pt-online-schema-change实现无锁迁移,或应用层双写+灰度切换;迁移后须校验一致性、重建索引、重置自增ID并核对权限与字符集。

MySQL大表迁移不能直接用CREATE TABLE ... AS SELECT或mysqldump全量导出导入,否则锁表时间长、业务中断久、磁盘和内存压力大。核心思路是:分批迁移 + 在线变更 + 数据校验。
对上亿行的表,按主键或自增ID切片导出,每次处理10万~50万行,用mysqldump --where或SELECT ... INTO OUTFILE配合LOAD DATA INFILE。
mysqldump -u user -p db table --where="id BETWEEN 1 AND 100000" > part1.sql
SET unique_checks=0; SET foreign_key_checks=0;提速,完后恢复Percona Toolkit中的pt-online-schema-change适合不停服场景,它通过触发器实时同步增量数据,迁移完成后自动切换表。
pt-online-schema-change --alter "ENGINE=InnoDB" D=db,t=big_table --execute
适用于无法停服、对一致性要求极高、或跨版本/跨引擎(如MyISAM→InnoDB)的场景。
SELECT ... FOR UPDATE或时间戳/版本号机制避免覆盖写冲突pt-table-checksum校验数据一致性,确认无误再切读流量别只盯着“导入完成”,这些细节决定是否真正成功:
INSERT ... SELECT方式,记得手动ANALYZE TABLE更新统计信息ALTER TABLE t AUTO_INCREMENT = N设为正确起始值
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号