温馨提示×

Debian MySQL怎么迁移数据

小樊
51
2026-07-30 09:39:23
栏目: 云计算

Debian 上迁移 MySQL 数据,常见有几种方式,取决于你的场景(同机迁移、跨服务器、升级版本等)。下面按 最常用、最安全 的方式给你完整说明。


一、迁移前准备(必做)

1️⃣ 确认 MySQL 版本

mysql --version

2️⃣ 停止 MySQL(迁移物理文件时必须)

sudo systemctl stop mysql

二、方式一:使用 mysqldump(✅ 推荐,最安全)

适合:

  • 不同服务器
  • 不同 MySQL 版本
  • 数据库不大(几十 GB 以内)

1️⃣ 导出所有数据库

mysqldump -u root -p --all-databases --single-transaction --routines --triggers --events > all.sql

参数说明:

  • --single-transaction:InnoDB 不锁表
  • --routines:存储过程
  • --triggers:触发器
  • --events:事件

2️⃣ 拷贝到新服务器

scp all.sql user@new_server:/tmp/

3️⃣ 在新服务器导入

mysql -u root -p < /tmp/all.sql

优点:兼容性好
缺点:数据大时慢


三、方式二:直接迁移数据目录(高性能)

适合:

  • 同版本 MySQL
  • 同架构(x86 / ARM)
  • 本地或内网迁移

1️⃣ 原服务器:复制数据目录

默认路径:

/var/lib/mysql

打包:

sudo tar czvf mysql-data.tar.gz /var/lib/mysql

2️⃣ 拷贝到新服务器

scp mysql-data.tar.gz user@new_server:/tmp/

3️⃣ 新服务器操作

停止 MySQL

sudo systemctl stop mysql

备份原数据

sudo mv /var/lib/mysql /var/lib/mysql.bak

解压

sudo tar xzvf /tmp/mysql-data.tar.gz -C /var/lib/

修复权限(非常重要)

sudo chown -R mysql:mysql /var/lib/mysql

启动

sudo systemctl start mysql

优点:速度快
缺点:版本不一致可能启动失败


四、方式三:只迁移某个数据库

导出

mysqldump -u root -p db_name > db_name.sql

导入

mysql -u root -p db_name < db_name.sql

或先建库:

CREATE DATABASE db_name;

五、迁移后检查

1️⃣ 登录 MySQL

mysql -u root -p

2️⃣ 检查数据库

SHOW DATABASES;

3️⃣ 检查表

USE db_name;
SHOW TABLES;

六、常见问题

❌ 启动失败

sudo journalctl -xe
sudo cat /var/log/mysql/error.log

❌ 权限错误

sudo chown -R mysql:mysql /var/lib/mysql

❌ AppArmor 限制(Debian 常见)

sudo nano /etc/apparmor.d/usr.sbin.mysqld

添加新数据目录权限后:

sudo systemctl reload apparmor

七、推荐方案总结

场景 推荐方式
不同服务器 mysqldump
同版本、大数据 数据目录迁移
单库迁移 mysqldump 单库
升级 MySQL mysqldump

如果你愿意,可以告诉我:

  • ✅ Debian 版本
  • ✅ MySQL 版本
  • ✅ 是否跨服务器
  • ✅ 数据量大小

我可以给你 精确到命令级别 的迁移方案。

0