在 Ubuntu 上恢复 误删的 MySQL 数据,要看你是“删了什么”以及“有没有备份/二进制日志”。下面按常见情况说明:
如果你之前用 mysqldump 或物理备份过:
# 恢复整个库
mysql -u root -p 数据库名 < backup.sql
如果是所有库:
mysql -u root -p < all_backup.sql
MySQL 默认在 Ubuntu 上可能已开启:
SHOW VARIABLES LIKE 'log_bin';
如果是 ON,可以恢复。
ls -lh /var/lib/mysql/
# 如 mysql-bin.000001
mysqlbinlog --base64-output=DECODE-ROWS -v \
/var/lib/mysql/mysql-bin.000001 > binlog.sql
编辑 binlog.sql,删除 DROP 语句
恢复
mysql -u root -p 数据库名 < binlog.sql
⚠️ 只能恢复到“未删除前”的状态
SHOW VARIABLES LIKE 'binlog_format';
如果是 ROW,可以恢复。
使用:
mysqlbinlog --base64-output=DECODE-ROWS -v \
/var/lib/mysql/mysql-bin.000001 > binlog.sql
在文件中找到 DELETE 对应的旧数据,手动转成 INSERT 执行。
但可以尝试:
sudo systemctl stop mysql
extundeletetestdiskundrop-for-innodb⚠️ 成功率低,且不要往磁盘写新数据
| 项目 | 路径 |
|---|---|
| 数据目录 | /var/lib/mysql |
| 配置文件 | /etc/mysql/mysql.conf.d/mysqld.cnf |
| binlog | /var/lib/mysql/mysql-bin.* |
[mysqld]
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
mysqldump -u root -p --all-databases > backup.sql
你可以告诉我:
我可以直接帮你写恢复命令。