温馨提示×

debian如何迁移mysql数据

小樊
43
2026-09-17 00:46:25
栏目: 云计算

在 Debian 上迁移 MySQL 数据,常见有几种方式,取决于你是:

  • 同机换目录
  • 换服务器(异机迁移)
  • 使用相同版本还是不同版本

下面按最常用场景说明。


一、同机迁移 MySQL 数据目录(换磁盘/分区)

1. 停止 MySQL

systemctl stop mysql

2. 复制原数据目录

默认数据目录通常是:

/var/lib/mysql

假设新目录是 /data/mysql

mkdir -p /data/mysql
cp -a /var/lib/mysql/. /data/mysql/
chown -R mysql:mysql /data/mysql

3. 修改配置文件

编辑:

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

修改:

datadir = /data/mysql

4. 启动 MySQL

systemctl start mysql

二、异机迁移(最推荐:逻辑导出)

✅ ** safest、兼容性最好**

1. 原服务器导出

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

2. 拷贝到新服务器

scp all.sql user@new-server:/root/

3. 新服务器导入

mysql -u root -p < all.sql

适合:

  • 跨版本
  • 数据量不大(几十 GB 以内)

三、大数据库(物理迁移 / xtrabackup)

使用 Percona XtraBackup(推荐)

原服务器

xtrabackup --backup --target-dir=/backup
xtrabackup --prepare --target-dir=/backup

新服务器

systemctl stop mysql
rm -rf /var/lib/mysql/*
xtrabackup --copy-back --target-dir=/backup
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql

四、直接拷贝数据目录(仅同版本)

⚠️ 不推荐,容易出权限/版本问题

systemctl stop mysql
scp -r /var/lib/mysql new-server:/var/lib/

五、迁移后必须检查

SELECT VERSION();
SHOW DATABASES;
systemctl status mysql

六、常见坑

  • ❌ 只拷贝 mysql 目录忘了权限
  • ❌ AppArmor 限制新目录
    /etc/apparmor.d/usr.sbin.mysqld
    
  • ❌ 忘记迁移用户权限(用 --all-databases

如果你能告诉我:

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

我可以给你最合适的迁移方案

0