温馨提示×

怎样迁移debian mysql数据库

小樊
51
2026-09-04 23:16:48
栏目: 云计算

在 Debian 系统上迁移 MySQL 数据库,常见场景有:同机迁移(换目录)跨服务器迁移(最常用)升级 Debian / MySQL 版本迁移。下面按最常见、最稳妥的方式给你讲。


一、跨服务器迁移(最推荐)

场景

旧 Debian 服务器 迁移到 新 Debian 服务器


1️⃣ 旧服务器:导出数据库

方法一:mysqldump(最通用)

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

只导单个库:

mysqldump -u root -p dbname > dbname.sql

2️⃣ 传输文件到新服务器

scp all_db.sql user@new_server:/root/

3️⃣ 新服务器:安装 MySQL

sudo apt update
sudo apt install mysql-server

启动并初始化:

sudo systemctl start mysql
sudo mysql_secure_installation

4️⃣ 新服务器:导入数据库

mysql -u root -p < all_db.sql

5️⃣ 验证

mysql -u root -p
show databases;

✅ 迁移完成


二、直接拷贝数据目录(大库、停机迁移)

⚠️ 必须停止 MySQL

旧服务器

systemctl stop mysql

查看数据目录:

mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"

一般是:

/var/lib/mysql

打包:

tar czf mysql_data.tar.gz /var/lib/mysql

新服务器

systemctl stop mysql

替换数据目录:

rm -rf /var/lib/mysql
tar xzf mysql_data.tar.gz -C /

修复权限:

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

启动:

systemctl start mysql

✅ 适合 TB 级数据库


三、迁移数据目录(同机)

例如从 /var/lib/mysql/data/mysql

systemctl stop mysql
cp -a /var/lib/mysql /data/mysql

编辑:

nano /etc/mysql/mysql.conf.d/mysqld.cnf

修改:

datadir = /data/mysql

AppArmor:

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

添加:

/data/mysql/ r,
/data/mysql/** rwk,
systemctl restart apparmor
systemctl start mysql

四、常见坑(非常重要)

❌ 版本不一致

  • MySQL 5.7 → 8.0:必须 dump 导入
  • 不要直接拷数据目录

❌ 权限问题

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

❌ 忘记用户和权限

mysql 系统库也要一起导


五、我可以进一步帮你

你可以告诉我:

  1. Debian 版本(10 / 11 / 12)
  2. MySQL 版本(mysql -V
  3. 是否跨服务器
  4. 数据量大小

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

0