如何获取并检索CockroachDB集群的SQL查询历史记录?
检索CockroachDB集群SQL查询历史及持久化存储
可以实现,但需要先配置CockroachDB的审计日志功能,把所有执行的SQL语句输出到文件,之后就能用grep这类工具检索。
具体操作步骤
1. 开启集群级SQL审计日志
CockroachDB自带审计日志功能,能记录所有提交到集群的SQL语句,配置方式有两种:
- 集群启动时指定参数:
cockroach start --sql-audit-dir=/your/log/directory --sql-audit-sink=file:///your/log/directory/audit.log - 运行中动态配置(需管理员权限):
SET CLUSTER SETTING sql.audit.dir = '/your/log/directory'; SET CLUSTER SETTING sql.audit.sink = 'file:///your/log/directory/audit.log';
配置完成后,所有SQL操作(包括查询、增删改、DDL等)都会被写入指定日志文件,每条日志还会附带执行时间、客户端IP、执行用户等辅助信息。
2. 用grep检索日志
日志生成后,直接通过grep工具检索目标SQL,示例如下:
- 查找所有SELECT查询:
grep "SELECT" /your/log/directory/audit.log - 查找涉及
users表的所有操作:grep "users" /your/log/directory/audit.log
3. 额外注意点
- 审计日志会持续占用磁盘空间,建议用
logrotate这类工具配置日志轮转,定期归档或清理旧日志。 - 日志文件需设置严格的权限控制,防止敏感SQL(如含密码的语句)泄露。
- 可通过过滤规则缩小日志范围,比如只记录特定用户的操作:
SET CLUSTER SETTING sql.audit.filter = 'user=your_target_user';
内容的提问来源于stack exchange,提问作者Xiang Gu
相关产品推荐
相关产品推荐

