温馨提示×

Linux MySQL数据库如何恢复

小樊
43
2025-11-16 10:19:01
栏目: 云计算

Linux 下 MySQL 数据库恢复实用指南

一、恢复前准备

  • 明确丢失类型:误删表/库、数据损坏、误更新、崩溃、硬件故障等,不同场景选择不同恢复路径。
  • 停止写入并保护现场:尽快将应用切到只读/维护模式,避免新写入覆盖可恢复的数据。
  • 先做当前状态备份:即便已有备份,也先备份当前的数据目录与关键配置文件,例如:
    sudo systemctl stop mysql
    cp -a /var/lib/mysql /var/lib/mysql_bak_$(date +%F_%T)
    cp /etc/my.cnf /etc/my.cnf.bak_$(date +%F_%T)
  • 确认可用备份与时间点:列出可用的 SQL 转储文件二进制日志 binlog、或 物理备份(如 XtraBackup)。
  • 准备恢复环境:确认目标实例版本兼容、磁盘空间充足、字符集一致(如 utf8mb4)。

二、常见恢复方法与命令

  • 从逻辑备份恢复(mysqldump 导出的 .sql 或 .sql.gz)

    1. 如有同名库先建库:mysql -u root -p -e “CREATE DATABASE IF NOT EXISTS your_db CHARACTER SET utf8mb4;”
    2. 恢复:
      mysql -u root -p your_db < backup.sql
      或解压后导入:gunzip < backup.sql.gz | mysql -u root -p your_db
    3. 跨库/全库:mysql -u root -p < all_databases.sql(导入前确保目标库不存在或已清空)。
  • 基于时间点恢复(启用 binlog 的场景)

    1. 定位时间点:误删/误改前的时间点 T,如 2025-11-16 10:00:00
    2. 找到 binlog 文件:SHOW BINARY LOGS; 或使用 mysqlbinlog --list-files。
    3. 仅重放至时间点 T:
      mysqlbinlog --start-datetime=“2025-11-16 09:00:00” --stop-datetime=“2025-11-16 10:00:00” binlog.000001 | mysql -u root -p
    4. 如仅需回滚某库/表,可加 -d your_db 或在导出时筛选语句。
    5. 多文件连续回放:mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p。
  • 物理备份恢复(如 Percona XtraBackup 等)

    1. 准备阶段:停止 MySQL,清理/备份原数据目录。
    2. 拷贝/解压备份到数据目录:例如 innobackupex --copy-back /path/to/backup
    3. 修正权限:chown -R mysql:mysql /var/lib/mysql
    4. 启动:systemctl start mysql
    5. 若是增量/差异备份,需按工具指引先准备(prepare)再回放。
  • 主从复制场景

    1. 临时停止从库复制:STOP SLAVE;
    2. 用备份恢复从库数据(逻辑或物理),确保 server-id 唯一;
    3. 启动复制:START SLAVE; 检查:SHOW SLAVE STATUS\G。

三、恢复后验证与常见问题

  • 验证要点:
    • 库表数量与结构:SHOW DATABASES; SHOW TABLES;
    • 数据量核对:SELECT COUNT(*) FROM your_table;
    • 关键业务抽样查询与校验和:CHECKSUM TABLE your_table;
    • 错误日志:tail -n 200 /var/log/mysql/error.log
  • 常见问题与处理:
    • 字符集乱码:导入时指定 --default-character-set=utf8mb4;
    • SQL 兼容性:不同版本差异导致失败,使用与备份时相同或兼容的版本;
    • 权限问题:导入用户需具备相应权限(CREATE、INSERT、DROP 等);
    • 空间不足:清理无用文件或扩容后再导入。

四、建议的恢复流程清单

  • 评估与保护现场 → 2) 选择恢复路径(逻辑/时间点/物理/复制) → 3) 准备与恢复 → 4) 启动与验证 → 5) 复盘与加固(完善备份策略、定期演练、开启 binlog、监控告警)。

0