表被删除,如何查客户端的相关信息

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.10

tidb-2024-10-11T11-30-46.759.log:[2024/10/11 08:43:04.541 +08:00] [INFO] [session.go:3817] [“CRUCIAL OPERATION”] [conn=8045381667135873489] [schemaVersion=8047511] [cur_db=dw] [sql=“drop table if EXISTS DWA_TI_USER_UM_SUBSCRIBER_PLUS_D”] [user=fjbi@%]
tidb-2024-10-11T11-30-46.759.log:[2024/10/11 08:43:04.555 +08:00] [INFO] [ddl.go:1030] [“[ddl] start DDL job”] [job=“ID:23248960, Type:drop table, State:queueing, SchemaState:public, SchemaID:52, TableID:14574788, RowCount:0, ArgLen:2, start time: 2024-10-11 08:43:04.547 +0800 CST, Err:, ErrCount:0, SnapshotVersion:0”] [query=“drop table if EXISTS DWA_TI_USER_UM_SUBSCRIBER_PLUS_D”]

昨天有个表被删除了,想知道是谁操作的,请问如何查历史的客户端和会话信息?

SELECT * FROM information_schema.DDL_jobs WHERE job_type = ‘drop table’ ORDER BY start_time DESC;

https://docs.pingcap.com/zh/tidb/stable/sql-statement-admin-show-ddl#admin-show-ddl-jobsjob-queries 使用 ADMIN SHOW DDL JOBS 命令可以查看 DDL 操作的历史记录,包括 ‘drop table’ 操作的相关信息。

show ddl jobs

SELECT * FROM information_schema.DDL_jobs
你看下这个表数据,可以看到所有操作过的DDL的一些信息,但是想看到对应客户端或者登陆的用户名,我之前也想找过历史记录,但是tidb和mysql貌似都没有历史会话记录。oracle上面是有的

1 个赞

是的,DDL_jobs这些里看到的和tidb日志里的基本一样,我想知道是从哪一个客户端IP地址之类的连接过来操作的,就是不知道谁干的。

这个需要审计日志,不过企业版才有

1 个赞

tidb.log里面会记录操作用户,搜下关键字CRUCIAL OPERATION,但是ip是不会记录的

1 个赞

EXISTS DWA_TI_USER_UM_SUBSCRIBER_PLUS_D ”] [user=fjbi@%]
user=fjbi@%. 这个用户,审计也不好查,建议收回drop权限

还有一个办法,如果这个表比较大,可能drop会超过300ms,这个时候去看看慢日志,这里既会记录操作用户,又会记录客户端IP

ip是服务器ip吗,如果办公ip问下管理网络的有没有做网络认证。

1 个赞

不好查,估计只有审计日志里才有。像我们这边都是一个用户一个负载ip,根本查不出来是谁执行的

执行的时间和用户可以查询到,执行的客户端ip需要用企业版的审计功能

谢谢大家,看来确实只有企业版的审计日志才有。

通常DDL都会超过300ms,所以慢日志基本都能找到对应的信息,并不是只有审计日志才有

tidb_slow_log_threshold被设置为1秒了,没有相关的记录。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。