如何在新服务器恢复数据_mysql迁移恢复流程

9次阅读

恢复 MySQL 数据需确保完整性、可用性与权限一致:先确认逻辑或物理备份类型,逻辑备份用 mysql 命令导入并执行 FLUSH PRIVILEGES;再通过连接测试、行数比对、错误日志检查及关键字段验证确保恢复成功。

如何在新服务器恢复数据_mysql 迁移恢复流程

在新服务器上恢复 MySQL 数据,核心是确保数据完整性、服务可用性与权限一致性。迁移不是简单拷贝文件,需结合备份方式(逻辑导出或物理拷贝)选择对应恢复路径。

确认备份类型再选恢复方法

MySQL 常见备份分两类,恢复操作差异大:

  • 逻辑备份(如 mysqldump 或 mydumper):生成 SQL 文本,兼容性强,适合跨版本 / 跨平台恢复。恢复时用 mysql 命令导入:
    mysql -u root -p database_name
  • 物理备份(如 XtraBackup 或直接拷贝 data 目录):要求源目标 MySQL 版本相近、架构一致(如都是 InnoDB)、且目标实例已初始化。恢复需停库,替换 datadir 后修正权限并重放事务日志。

恢复前必须检查的 4 项

跳过这些检查易导致启动失败或数据异常:

  • 目标 MySQL 已安装并能正常启动(systemctl status mysql
  • datadir 路径与配置中 my.cnfdatadir 一致,目录权限属主为 mysql:mysql
  • 若用物理恢复,确认 innodb_log_file_sizeinnodb_page_size 等关键参数与原环境一致
  • 用户权限表(mysql.user 等)是否随备份一并导出;逻辑备份默认不含系统库,需单独处理

权限与用户需手动重建

mysqldump 默认不导出 mysql 库(含用户、权限),恢复后应用无访问权限。安全做法是:

  • mysqldump --all-databases --skip-lock-tables --single-transaction --routines --triggers 备份时加 --include-databases=mysql(5.7+)或显式导出:
    mysqldump -u root -p --databases mysql > mysql_system.sql
  • 导入后执行 FLUSH PRIVILEGES; 生效
  • 若仅需部分用户,建议用 SHOW CREATE USER 'xxx'@'%';SHOW GRANTS FOR 'xxx'@'%'; 手动生成授权语句

验证恢复是否成功

不能只看导入命令没报错,要实测:

  • 连接数据库:mysql -u testuser -ptestpass testdb -e "SELECT COUNT(*) FROM t1;"
  • 检查表结构和行数是否与原库一致(可对比 SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES
  • 查错误日志:tail -20 /var/log/mysql/error.log,确认无 InnoDB 恢复警告或崩溃记录
  • 对业务关键表做 SELECT + LIMIT 10,确认字符集、时间字段、JSON 字段等无乱码或截断
text=ZqhQzanResources