MySQL-数据迁移
数据迁移核心概念
MySQL 数据迁移是指将数据库从一个环境转移到另一个环境的过程,包括但不限于:
- 服务器间迁移
- 版本升级迁移
- 云服务迁移
- 数据库架构变更
主要迁移方法对比
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| mysqldump | 中小型数据库/全库迁移 | 简单可靠,兼容性好 | 停机时间长,大库性能差 |
| .ibd文件迁移 | 单表迁移/快速恢复 | 速度极快 | 要求版本/配置严格一致 |
| XtraBackup | 大型生产环境 | 热备份,增量备份 | 配置复杂 |
| 主从复制 | 最小停机迁移 | 几乎零停机 | 需要网络稳定 |
MySQL .ibd 文件迁移指南
迁移场景说明
.ibd 文件是 InnoDB 引擎的表空间文件,包含表数据和索引。迁移这些文件通常用于以下场景:
- 单表迁移到新服务器
- 表空间快速备份恢复
- 跨版本数据库迁移
标准迁移流程
准备工作
确认表结构一致
sql
-- 查看表结构
SHOW CREATE TABLE table_name;
-- 在终端执行命令将源库导出表结构
-- mysqldump -d -u root -p database_name table_name > table_structure.sql目标库创建相同表结构
sql
-- 复制查看到的表结构就是完整的建表语句
-- 复制同一个MySQL服务的表结构
CREATE TABLE target_table LIKE source_table;迁移步骤
源库执行表空间卸载
sql
ALTER TABLE source_table DISCARD TABLESPACE;传输文件
bash
# 复制.ibd文件到目标服务器
scp -p /var/lib/mysql/database_name/source_table.ibd user@target:/var/lib/mysql/database_name/目标库导入表空间
sql
ALTER TABLE target_table IMPORT TABLESPACE;注意事项
版本兼容性
- MySQL 5.6+ 支持此方法
- 源和目标服务器必须使用相同页大小(innodb_page_size)
- 建议相同MySQL版本间迁移
文件权限
bash
chown mysql:mysql /var/lib/mysql/database_name/*.ibd数据一致性验证
sql
CHECK TABLE target_table;常见问题解决
错误1: Schema mismatch
- 原因:表结构不匹配
- 解决:确保CREATE TABLE语句完全一致
错误2: Tablespace is missing
- 原因:文件权限或路径错误
- 解决:检查文件路径和mysql用户权限
错误3: Row format mismatch
- 原因:源表使用COMPRESSED行格式
- 解决:目标表需设置相同ROW_FORMAT
