迁移 Debian 上的 MySQL 数据通常有几种常见场景,下面按最常用、最安全的方式给你一个完整流程。你可以根据你的实际情况选择。
mysql --version
常见数据目录:
/var/lib/mysql
配置文件:
/etc/mysql/my.cnf
# 或
/etc/mysql/mysql.conf.d/mysqld.cnf
mysqldump(✅ 最推荐,安全、通用)适合:
mysqldump -u root -p --all-databases --single-transaction --routines --triggers --events > all.sql
scp all.sql user@new_server:/tmp/
mysql -u root -p < /tmp/all.sql
✅ 优点:兼容性好
❌ 缺点:数据量大时较慢
/var/lib/mysql(⚠️ 需谨慎)适合:
systemctl stop mysql
tar czvf mysql-data.tar.gz /var/lib/mysql
scp mysql-data.tar.gz user@new_server:/tmp/
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
systemctl start mysql
⚠️ 注意
mysqldump -u root -p db_name > db_name.sql
mysql -u root -p db_name < db_name.sql
SHOW DATABASES;
USE db_name;
SHOW TABLES;
CHECK TABLE table_name;
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 + 停机 |
如果你愿意,可以告诉我:
我可以给你定制迁移方案(包括不停机方案)。