在 Debian 系统上迁移 MySQL 数据库,常见场景有:同机迁移(换目录)、跨服务器迁移(最常用)、升级 Debian / MySQL 版本迁移。下面按最常见、最稳妥的方式给你讲。
从 旧 Debian 服务器 迁移到 新 Debian 服务器
mysqldump -u root -p --all-databases > all_db.sql
只导单个库:
mysqldump -u root -p dbname > dbname.sql
scp all_db.sql user@new_server:/root/
sudo apt update
sudo apt install mysql-server
启动并初始化:
sudo systemctl start mysql
sudo mysql_secure_installation
mysql -u root -p < all_db.sql
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
chown -R mysql:mysql /var/lib/mysql
mysql 系统库也要一起导
你可以告诉我:
mysql -V)我可以给你精确到命令的迁移方案 ✅