在Debian系统上迁移MySQL数据库,常用方法及步骤如下:
一、逻辑备份与恢复(推荐中小型数据库)
-
备份源数据库
使用mysqldump工具导出数据(含结构和数据):mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql(
-p后直接跟密码,无需空格) -
传输备份文件
通过scp将backup.sql复制到目标服务器:scp backup.sql [目标服务器IP]:/目标路径/ -
恢复到目标数据库
- 在目标服务器创建相同数据库(需指定字符集,如
utf8mb4):mysql -u [用户名] -p[密码] -e "CREATE DATABASE [新库名] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" - 导入数据:
mysql -u [用户名] -p[密码] [新库名] < /目标路径/backup.sql
- 在目标服务器创建相同数据库(需指定字符集,如
二、物理备份与恢复(适合大型数据库)
-
停止源服务器MySQL服务
sudo systemctl stop mysql -
备份数据目录
使用rsync或tar复制/var/lib/mysql目录(需排除临时文件):sudo rsync -aAXv --exclude={"/dev/*","/proc/*"} /var/lib/mysql/ [目标服务器IP]:/var/lib/mysql/ -
调整目标服务器配置
- 修改
/etc/mysql/my.cnf,确保datadir路径正确。 - 若需跨版本迁移,需检查MySQL版本兼容性(如5.7→8.0需调整语法)。
- 修改
-
启动服务并验证
sudo systemctl start mysql mysql -u [用户名] -p[密码] -e "SHOW DATABASES;" # 检查数据库是否存在
三、工具迁移(高效处理大规模数据)
- XtraBackup(热备份,适合生产环境)
- 源服务器安装并备份:
sudo apt install percona-xtrabackup-24 sudo xtrabackup --backup --user=root --password=[密码] --target-dir=/backup/path - 目标服务器恢复:
sudo xtrabackup --copy-back --target-dir=/backup/path --datadir=/var/lib/mysql sudo chown -R mysql:mysql /var/lib/mysql sudo systemctl start mysql
- 源服务器安装并备份:
四、关键注意事项
- 版本兼容性:确保源与目标MySQL版本差异不大(如5.7→8.0需测试),避免语法或功能不兼容。
- 数据一致性:迁移前锁定表或停止写入,避免数据丢失。
- 权限与安全:确保备份文件传输加密(如
scp -i 私钥),目标服务器MySQL用户权限正确。 - 测试验证:迁移后通过
SHOW TABLES、SELECT COUNT(*)等命令验证数据完整性,执行业务功能测试。
根据数据库规模和业务需求选择合适方案,优先在测试环境验证流程后再正式迁移。