01)mysql数据误删恢复相关-mysql5.7 开启 binlog、设置binlog 保留时间
binlog恢复范围介绍:
binlog(二进制日志)可以用于恢复 DELETE 和 UPDATE 的数据,但对 DROP TABLE 和 TRUNCATE TABLE 删除的数据无法恢复(DROP、TRUNCATE 删除的数据只能看是否有备份了)。
DELETE 和 UPDATE —— 可恢复(推荐使用 binlog)
原理:在 binlog_format=ROW 模式下,MySQL 会记录每一行数据的变更:
DELETE:记录“删除了哪一行”
UPDATE:记录“旧值是什么,新值是什么”
恢复方式:
使用 mysqlbinlog 解析 binlog
或使用 binlog2sql 工具生成“回滚 SQL”(把 DELETE 变成 INSERT,UPDATE 变回旧值)
操作 | 是否可通过 binlog 恢复数据 | 说明 |
---|---|---|
DELETE FROM table | ✅可以 | binlog 记录每行的删除,可反向生成 INSERT |
UPDATE table SET … | ✅可以 | ROW 模式下记录旧值和新值,可反向恢复 |
TRUNCATE TABLE | ❌ 不能 | 记录为“删除并重建表”,不记录逐行删除,无法恢复数据 |
DROP TABLE | ❌不能直接恢复数据 | 表结构和数据都删除,即使 binlog 有记录,也无法找回数据 |
DROP DATABASE | ❌ 完全无法恢复 | 所有表和数据丢失 |