首页主机资讯MySQL在Ubuntu中如何恢复数据

MySQL在Ubuntu中如何恢复数据

时间2025-11-14 23:07:03发布访客分类主机资讯浏览741
导读:在 Ubuntu 上恢复 MySQL 数据的常用方法与步骤 一、准备与环境检查 确认 MySQL 服务状态:sudo systemctl status mysql,必要时先停止:sudo systemctl stop mysql。 检查二...

在 Ubuntu 上恢复 MySQL 数据的常用方法与步骤

一、准备与环境检查

  • 确认 MySQL 服务状态:sudo systemctl status mysql,必要时先停止:sudo systemctl stop mysql
  • 检查二进制日志是否开启(用于时间点恢复):登录 MySQL 执行 SHOW VARIABLES LIKE ‘log_bin’;
  • 预估恢复窗口并准备备份文件(如 .sql.sql.gz),确保文件完整且可读。
  • 恢复前先做一次现有数据的快照或导出,避免不可逆覆盖。
  • 恢复完成后重启服务:sudo systemctl start mysql,并登录验证:mysql -u root -p -e “SHOW DATABASES; ”

二、方法一 逻辑备份恢复 mysqldump

  • 适用:全库/单库/单表的 .sql.sql.gz 备份。
  • 步骤:
    1. 如有 .gz 先解压:gunzip backup.sql.gz
    2. 如需恢复到新库,先建库:mysql -u root -p -e “CREATE DATABASE dbname; ”
    3. 导入备份:
      • 全库备份:mysql -u root -p < backup.sql
      • 指定库备份:mysql -u root -p dbname < backup.sql
    4. 验证:mysql -u root -p -e “USE dbname; SHOW TABLES; ”

三、方法二 时间点恢复 二进制日志 Binary Log

  • 适用:在最近一次备份之后、故障发生之前的精确时间点恢复。
  • 步骤:
    1. 确认开启 binlog:SHOW VARIABLES LIKE ‘log_bin’; ,查看当前文件:SHOW MASTER STATUS;
    2. 定位时间窗口,从备份点开始导出增量:
      • 按时间:mysqlbinlog --start-datetime=“YYYY-MM-DD HH:MM:SS” --stop-datetime=“YYYY-MM-DD HH:MM:SS” /var/lib/mysql/mysql-bin.00000X | mysql -u root -p
      • 按位置:mysqlbinlog --start-position=POS --stop-position=POS /var/lib/mysql/mysql-bin.00000X | mysql -u root -p
    3. 如为压缩包先解压再解析;必要时将输出重定向为 .sql 文件复核后再导入。
    4. 验证数据一致性。

四、方法三 物理备份恢复 Percona XtraBackup

  • 适用:使用 Percona XtraBackup 做的物理热备,支持 InnoDB 快速恢复。
  • 步骤:
    1. 安装工具:sudo apt-get install percona-xtrabackup-24
    2. 准备备份(回滚未提交事务、重做已提交事务):sudo xtrabackup --prepare --target-dir=/path/to/backup
    3. 停止 MySQL 并清空数据目录(谨慎:确保有可用备份):sudo systemctl stop mysql & & sudo rm -rf /var/lib/mysql/
    4. 拷贝回数据文件:sudo xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
    5. 修正权限并启动:sudo chown -R mysql:mysql /var/lib/mysql & & sudo systemctl start mysql
    6. 验证恢复结果。

五、方法四 只剩 IBD 表文件时的恢复思路

  • 适用:误删表结构/数据,但磁盘上仍有对应表的 .ibd 文件。
  • 思路:使用 ibd2sql 等工具解析 .ibd,提取 DDL 与数据 SQL,在目标库中重建表并导入。
  • 要点:需有该表的表结构定义(或能重建),并严格按表空间导入流程操作,避免主键/索引冲突。

六、常见问题与排错要点

  • 权限与路径:确保备份文件对 mysql 用户可读,导入时使用正确的 –datadir 与 socket 路径。
  • 版本兼容:跨大版本恢复可能失败,尽量在相同主版本间恢复;必要时调整 sql_mode
  • 一致性校验:恢复后用业务关键查询、计数、校验和(如 CHECKSUM TABLE)核对数据。
  • 错误日志:查看 /var/log/mysql/error.log 定位导入语法、权限、InnoDB 恢复失败等问题。
  • 风险提示:恢复会写入数据,操作前务必做好现有环境备份,并在非生产环境演练关键步骤。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MySQL在Ubuntu中如何恢复数据
本文地址: https://pptw.com/jishu/748548.html
debian系统中flutter的常见问题有哪些 flutter能用于debian的应用开发吗

游客 回复需填写必要信息