温馨提示×

怎么迁移Debian MySQL数据

小樊
38
2026-08-26 05:22:19
栏目: 云计算

迁移 Debian 上的 MySQL 数据通常有几种常见场景,下面按最常用、最安全的方式给你一个完整流程。你可以根据你的实际情况选择。


一、迁移前准备

1. 确认 MySQL 版本和路径

mysql --version

常见数据目录:

/var/lib/mysql

配置文件:

/etc/mysql/my.cnf
# 或
/etc/mysql/mysql.conf.d/mysqld.cnf

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

适合:

  • 跨服务器
  • 升级 MySQL
  • 不同 Debian 版本

1. 备份所有数据库

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

2. 拷贝备份文件到新服务器

scp all.sql user@new_server:/tmp/

3. 在新服务器导入

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

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


三、方式二:直接拷贝 /var/lib/mysql(⚠️ 需谨慎)

适合:

  • 同版本 MySQL
  • 同 Debian 系统
  • 停机迁移

1. 停止 MySQL

systemctl stop mysql

2. 打包数据目录

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

3. 拷贝到新服务器

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

4. 新服务器操作

systemctl stop mysql
mv /var/lib/mysql /var/lib/mysql.bak
tar xzvf /tmp/mysql-data.tar.gz -C /
chown -R mysql:mysql /var/lib/mysql

5. 启动 MySQL

systemctl start mysql

⚠️ 注意

  • MySQL 版本必须一致
  • 不要跨 InnoDB 大版本
  • AppArmor/SELinux 可能影响权限

四、方式三:迁移部分数据库(推荐)

mysqldump -u root -p db_name > db_name.sql
mysql -u root -p db_name < db_name.sql

五、迁移后检查

1. 数据库是否完整

SHOW DATABASES;

2. 检查表

USE db_name;
SHOW TABLES;
CHECK TABLE table_name;

3. 用户和权限

SELECT user, host FROM mysql.user;

如果权限丢失,可重新授权:

GRANT ALL PRIVILEGES ON db_name.* TO 'user'@'%';
FLUSH PRIVILEGES;

六、常见问题

❓ 启动失败

查看日志:

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

❓ 权限错误

chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql

七、推荐方案总结

场景 推荐方式
跨服务器 mysqldump
同版本 拷贝数据目录
部分库 单库导出
生产环境 mysqldump + 停机

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

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

我可以给你定制迁移方案(包括不停机方案)。

0