如何利用MySQL可传输表空间功能高效迁移海量单表数据?
- 内容介绍
- 文章标签
- 相关推荐
本文共计980个文字,预计阅读时间需要4分钟。
确保满足以下条件,可以将`.ibd`文件直接复制:
核心前提是:源库和目标库的 MySQL 版本要一致(至少主版本相同),页大小、字符集、校对规则、行格式(ROW_FORMAT)也得一致,否则挂载会报 Tablespace mismatch 或直接崩溃。
常见踩坑点:
- 忘记在源库执行
FLUSH TABLES table_name FOR EXPORT—— 这步生成的.cfg文件含元数据校验信息,缺了就IMPORT失败 - 拷贝后没用
chown mysql:mysql修复文件属主,导致挂载时报Operation not permitted - 目标库表结构必须和源库一模一样(包括
ENGINE=InnoDB、COLLATE、STATS_PERSISTENT等隐式属性),建议用SHOW CREATE TABLE对比
迁移前必须做的三件事:锁表、生成元数据、清理脏页
不是简单停写就能操作。大表迁移最怕的是拷贝期间有 DML 写入,导致 .ibd 和 .cfg 不一致。
本文共计980个文字,预计阅读时间需要4分钟。
确保满足以下条件,可以将`.ibd`文件直接复制:
核心前提是:源库和目标库的 MySQL 版本要一致(至少主版本相同),页大小、字符集、校对规则、行格式(ROW_FORMAT)也得一致,否则挂载会报 Tablespace mismatch 或直接崩溃。
常见踩坑点:
- 忘记在源库执行
FLUSH TABLES table_name FOR EXPORT—— 这步生成的.cfg文件含元数据校验信息,缺了就IMPORT失败 - 拷贝后没用
chown mysql:mysql修复文件属主,导致挂载时报Operation not permitted - 目标库表结构必须和源库一模一样(包括
ENGINE=InnoDB、COLLATE、STATS_PERSISTENT等隐式属性),建议用SHOW CREATE TABLE对比
迁移前必须做的三件事:锁表、生成元数据、清理脏页
不是简单停写就能操作。大表迁移最怕的是拷贝期间有 DML 写入,导致 .ibd 和 .cfg 不一致。

