Debian系统MySQL数据库迁移指南
备份源数据库:使用mysqldump工具导出所有数据库或特定数据库,确保数据安全。命令示例:
mysqldump -u [用户名] -p[密码] --all-databases > all_databases_backup.sql # 备份所有数据库
mysqldump -u [用户名] -p[密码] [数据库名] > single_db_backup.sql # 备份特定数据库
注意:-p与密码之间无空格,避免认证失败。
目标服务器环境配置:
sudo apt update && sudo apt install mysql-server
物理迁移通过直接复制数据文件实现,速度快但需停机,且要求源与目标服务器MySQL版本、配置一致。
停止源和目标MySQL服务:
sudo systemctl stop mysql # 源服务器
ssh user@target_server "sudo systemctl stop mysql" # 目标服务器(通过SSH执行)
复制数据文件:使用scp或rsync将源服务器的MySQL数据目录(默认/var/lib/mysql)复制到目标服务器相同路径。示例:
rsync -avz /var/lib/mysql/ user@target_server:/var/lib/mysql/ # 保留文件属性
设置权限:确保目标服务器的MySQL用户(默认mysql:mysql)对新数据目录有读写权限。
ssh user@target_server "sudo chown -R mysql:mysql /var/lib/mysql"
启动目标MySQL服务:
ssh user@target_server "sudo systemctl start mysql"
sudo systemctl start mysql # 源服务器(如需恢复服务)
验证数据:登录目标服务器,检查数据库是否完整。
mysql -u [用户名] -p -e "SHOW DATABASES;" # 查看所有数据库
mysql -u [用户名] -p [数据库名] -e "SHOW TABLES;" # 查看特定数据库的表
逻辑迁移通过导出SQL脚本实现,兼容性强,适合跨版本(如5.7→8.0)或部分数据库迁移。
导出源数据库:使用mysqldump导出结构和数据到SQL文件(同准备步骤)。
mysqldump -u [用户名] -p[密码] [数据库名] > db_backup.sql
传输备份文件到目标服务器:使用scp将SQL文件复制到目标服务器。
scp db_backup.sql user@target_server:/home/user/backups/
在目标服务器恢复数据:
mysql -u [用户名] -p -e "CREATE DATABASE [目标数据库名];"
mysql -u [用户名] -p [目标数据库名] < /home/user/backups/db_backup.sql
验证数据:同物理迁移的验证步骤,确保数据一致性。
版本兼容性检查:
数据类型与语法适配:
utf8mb4(支持emoji),若源数据库用latin1,需在导出前修改源数据库字符集或在导入后转换:ALTER DATABASE [数据库名] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ORDER、GROUP),若有冲突需用反引号(`)包裹。逐步升级(大版本跨度时):
数据完整性检查:
COUNT(*)抽样检查)。应用连接测试:
清理工作:
rm all_databases_backup.sql)和目标服务器的临时文件,释放空间。