tidb版本:4.0.5
问题描述:想要查询并导出tidb集群某一段时间内的querylog,该用哪张表,有没有类似的sql?
set @@tidb_general_log=on,表示对当前这个tidb-server 实例开启, genreal log 开启之后可以在 tidb.log 中根据 GENERAL_LOG 关键字查看 general log
1 个赞
数据库里边对应的是哪张表呢,我在 cluster_statements_summary
、 cluster_statements_summary_history
、cluster_statements_summary_evicted
表里边都没有找到库名相关的字段(希望通过库名来筛选)。
参考:https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_general_log
tidb_general_log
- 作用域:INSTANCE
- 默认值:
OFF
- 这个变量用来设置是否在日志里记录所有的 SQL 语句。该功能默认关闭。如果系统运维人员在定位问题过程中需要追踪所有 SQL 记录,可考虑开启该功能。
- 通过查询
"GENERAL_LOG"
字符串可以定位到该功能在日志中的所有记录。日志会记录以下内容:-
conn
:当前会话对应的 ID -
user
:当前会话用户 -
schemaVersion
:当前 schema 版本 -
txnStartTS
:当前事务的开始时间戳 -
forUpdateTS
:事务模式为悲观事务时,SQL 语句的当前时间戳。悲观事务内发生写冲突时,会重试当前执行语句,该时间戳会被更新。重试次数由max-retry-count
配置。事务模式为乐观事务时,该条目与txnStartTS
等价。 -
isReadConsistency
:当前事务隔离级别是否是读已提交 (RC) -
current_db
:当前数据库名 -
txn_mode
:事务模式。可选值:OPTIMISTIC
(乐观事务模式),或PESSIMISTIC
(悲观事务模式) -
sql
:当前查询对应的 SQL 语句
-
1 个赞
cluster_statements_summary表中SCHEMA_NAME是库名
提供一个新的思路,
之前在MySQL都是这么玩的,因为general log会输出很多没有用的信息,比如set状态值,
所以可以把slow log 的时间阈值调到0,这样的话所有的sql都会进入到满查询日志,而且只是sql内容。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。