debian

Debian MySQL数据库迁移方法

小樊
38
2025-11-11 06:02:20
栏目: 云计算

Debian系统MySQL数据库迁移指南

一、迁移前准备

  1. 备份源数据库:使用mysqldump工具导出所有数据库或特定数据库,确保数据安全。命令示例:

    mysqldump -u [用户名] -p[密码] --all-databases > all_databases_backup.sql  # 备份所有数据库
    mysqldump -u [用户名] -p[密码] [数据库名] > single_db_backup.sql         # 备份特定数据库
    

    注意:-p与密码之间无空格,避免认证失败。

  2. 目标服务器环境配置

    • 确保目标Debian服务器已安装与源服务器版本兼容的MySQL(推荐同主版本,如5.7→5.7或8.0→8.0)。可通过以下命令安装:
      sudo apt update && sudo apt install mysql-server
      
    • 检查目标服务器磁盘空间是否充足(需容纳源数据库所有数据)。

二、物理迁移(适用于大数据量、同版本场景)

物理迁移通过直接复制数据文件实现,速度快但需停机,且要求源与目标服务器MySQL版本、配置一致。

  1. 停止源和目标MySQL服务

    sudo systemctl stop mysql  # 源服务器
    ssh user@target_server "sudo systemctl stop mysql"  # 目标服务器(通过SSH执行)
    
  2. 复制数据文件:使用scprsync将源服务器的MySQL数据目录(默认/var/lib/mysql)复制到目标服务器相同路径。示例:

    rsync -avz /var/lib/mysql/ user@target_server:/var/lib/mysql/  # 保留文件属性
    
  3. 设置权限:确保目标服务器的MySQL用户(默认mysql:mysql)对新数据目录有读写权限。

    ssh user@target_server "sudo chown -R mysql:mysql /var/lib/mysql"
    
  4. 启动目标MySQL服务

    ssh user@target_server "sudo systemctl start mysql"
    sudo systemctl start mysql  # 源服务器(如需恢复服务)
    
  5. 验证数据:登录目标服务器,检查数据库是否完整。

    mysql -u [用户名] -p -e "SHOW DATABASES;"  # 查看所有数据库
    mysql -u [用户名] -p [数据库名] -e "SHOW TABLES;"  # 查看特定数据库的表
    

三、逻辑迁移(适用于跨版本、部分迁移场景)

逻辑迁移通过导出SQL脚本实现,兼容性强,适合跨版本(如5.7→8.0)或部分数据库迁移。

  1. 导出源数据库:使用mysqldump导出结构和数据到SQL文件(同准备步骤)。

    mysqldump -u [用户名] -p[密码] [数据库名] > db_backup.sql
    
  2. 传输备份文件到目标服务器:使用scp将SQL文件复制到目标服务器。

    scp db_backup.sql user@target_server:/home/user/backups/
    
  3. 在目标服务器恢复数据

    • 登录目标服务器,创建目标数据库(若未存在):
      mysql -u [用户名] -p -e "CREATE DATABASE [目标数据库名];"
      
    • 导入SQL文件:
      mysql -u [用户名] -p [目标数据库名] < /home/user/backups/db_backup.sql
      
  4. 验证数据:同物理迁移的验证步骤,确保数据一致性。

四、跨版本迁移注意事项

  1. 版本兼容性检查

    • 确保目标版本不低于源版本(如5.7→8.0可行,但8.0→5.7不可行)。
    • 查阅MySQL官方发行说明,确认新版本是否支持源数据库的特性(如JSON函数、存储引擎等)。
  2. 数据类型与语法适配

    • MySQL 8.0默认字符集为utf8mb4(支持emoji),若源数据库用latin1,需在导出前修改源数据库字符集或在导入后转换:
      ALTER DATABASE [数据库名] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      
    • 检查SQL脚本中的保留字(如ORDERGROUP),若有冲突需用反引号(`)包裹。
  3. 逐步升级(大版本跨度时)

    • 若跨多个主版本(如5.7→8.0),建议分步升级(5.7→8.0),每步升级前测试数据兼容性,避免直接升级导致错误。

五、迁移后验证

  1. 数据完整性检查

    • 对比源与目标数据库的表数量、行数(对大表可使用COUNT(*)抽样检查)。
    • 抽查关键表的关键字段(如ID、金额),确保数据一致。
  2. 应用连接测试

    • 将应用程序的数据库连接配置(如JDBC URL、PHP配置)指向目标服务器,测试应用功能是否正常(如登录、查询、写入)。
  3. 清理工作

    • 确认迁移无误后,删除源服务器的备份文件(rm all_databases_backup.sql)和目标服务器的临时文件,释放空间。

0
看了该问题的人还看了