MySQL在Ubuntu中如何恢复数据
导读:在 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 备份。
- 步骤:
- 如有 .gz 先解压:gunzip backup.sql.gz。
- 如需恢复到新库,先建库:mysql -u root -p -e “CREATE DATABASE dbname; ”。
- 导入备份:
- 全库备份:mysql -u root -p < backup.sql
- 指定库备份:mysql -u root -p dbname < backup.sql
- 验证:mysql -u root -p -e “USE dbname; SHOW TABLES; ”。
三、方法二 时间点恢复 二进制日志 Binary Log
- 适用:在最近一次备份之后、故障发生之前的精确时间点恢复。
- 步骤:
- 确认开启 binlog:SHOW VARIABLES LIKE ‘log_bin’; ,查看当前文件:SHOW MASTER STATUS; 。
- 定位时间窗口,从备份点开始导出增量:
- 按时间: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
- 如为压缩包先解压再解析;必要时将输出重定向为 .sql 文件复核后再导入。
- 验证数据一致性。
四、方法三 物理备份恢复 Percona XtraBackup
- 适用:使用 Percona XtraBackup 做的物理热备,支持 InnoDB 快速恢复。
- 步骤:
- 安装工具:sudo apt-get install percona-xtrabackup-24。
- 准备备份(回滚未提交事务、重做已提交事务):sudo xtrabackup --prepare --target-dir=/path/to/backup。
- 停止 MySQL 并清空数据目录(谨慎:确保有可用备份):sudo systemctl stop mysql & & sudo rm -rf /var/lib/mysql/。
- 拷贝回数据文件:sudo xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql。
- 修正权限并启动:sudo chown -R mysql:mysql /var/lib/mysql & & sudo systemctl start mysql。
- 验证恢复结果。
五、方法四 只剩 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
