2026年Linux MySQL数据迁移完全指南(2026)

一、数据迁移概述

MySQL数据迁移是将数据从源服务器转移到目标服务器的过程。

二、迁移前准备

2.1 检查数据量

SELECT table_name, table_rows, data_length
FROM information_schema.tables
WHERE table_schema = 'mydb';

2.2 确认版本兼容

mysql -V

三、mysqldump方式

3.1 导出全部数据库

mysqldump -u root -p --all-databases > all_backup.sql

3.2 导出指定数据库

mysqldump -u root -p --databases mydb > mydb_backup.sql

3.3 导入数据

mysql -u root -p < all_backup.sql

四、主从复制迁移

4.1 配置主服务器

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 1
log_bin = mysql-bin

4.2 创建复制用户

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

4.3 配置从服务器

CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1234;
START SLAVE;

五、热迁移(零停机)

5.1 使用pt-online-schema-change

pt-online-schema-change --alter "ENGINE=InnoDB" D=mydb,t=users

5.2 双写方案

先配置主从同步,确认数据一致后切换流量。

六、表空间迁移

FLUSH TABLES mydb.users FOR EXPORT;
-- 拷贝.ibd文件到目标服务器
ALTER TABLE mydb.users IMPORT TABLESPACE;

七、云平台迁移工具

7.1 AWS DMS

配置源端和目标端连接,选择迁移任务类型。

7.2 云厂商导入导出

使用云控制台的数据导入功能上传备份文件。

八、迁移验证

SELECT COUNT(*) FROM users;
CHECKSUM TABLE users;

九、回滚方案

保留源数据库备份至少7天,确认无问题后再清理。

十、常见问题

Q1:字符集不匹配?

统一使用utf8mb4编码。

Q2:大表迁移慢?

分批次导出,使用WHERE条件分段。

Q3:外键约束报错?

临时禁用外键检查。

十一、总结

选择合适迁移方案,做好备份和验证。

注:本文基于2026年Ubuntu 22.04 / MySQL 8.0编写

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注