请问如果某张表部分数据被人为删除了,有没有办法查询到操作记录?

请问在tidb数据库中,如果某张表的数据被人为删除了几条,有没有办法查询到操作记录?

你是什么版本,开binlog了嘛,如果没开的话,没有审计日志够呛了

有binlog的话可以去挖binlog日志

可以加日志表记录修改人

1. 企业版(推荐,无性能损耗)

  • 自 v7.1 起用原生审计SET GLOBAL tidb_audit_enabled=ON;,记录用户、IP、时间、SQL、表名。
  • 日志路径:tidb.log(可配 JSON 格式),直接搜索 DELETE FROM 表名

2. 社区版

  • 查看是否开启:SHOW VARIABLES LIKE 'tidb_general_log';
  • Dashboard:“SQL 分析”→“最近 SQL”,过滤 DELETE 语句(仅保留近期)

企业版(v7.1+,推荐)

开启审计:

SET GLOBAL tidb_audit_enabled = ON;
SET GLOBAL tidb_audit_format = 'json'; -- 格式清晰

日志默认在 tidb_log_dir/audit/,记录执行用户、时间、IP、SQL,直接搜 DELETE FROM 表名 即可。

  • 审计日志:需提前开启,事后无法补;企业版更稳定。
  • MVCC 历史:默认保留 1 天,超时被 GC 清理则无法找回;误删后先调长 GC 时间

开审计日志了没,这个好像详细的审计日志可以看到那个用户在哪个ip地址上操作了那些指定命令

看看审计日志咯

:joy:都已经删完了,再开启也没用了

企业版开审计比较准确
社区版,只能通过日志查

企业版的话,要提前开审计

人为删大概率是where条件写错了,删的数据比较多,单次执行时间比较长。
先用select * from 表名 as of timestamp ‘2026-05-14 14:27:50’,确定哪个时间段发生的。然后dashboard上,尝试翻下对应时段慢日志。

如果慢日志没有的话,确定时间之后,翻下堡垒机记录,按理来说同时人工访问特点数据库的堡垒机记录很少。

没可能查到了

还能有多少人可以连数据库,诈一下

说的跟真的似的,tidb有binlog吗?我怎么不知道?谁来给我科普下,或者辟个谣。

亡羊补牢啊

这个没什么用,删除完都黄花菜都凉了,as of默认只能保留10几分钟的闪回记录。

生产库,可以考虑把这个时间调大一点,只要io本身没有特别大的瓶颈。