1. 登录 KingbaseES 终端

切换到 KingbaseES 数据库用户:

使用 ksql 登录:

如果需要指定端口:

2. 查看日志目录

进入 ksql 后执行:

例如:

实际日志目录 = data_directory + log_directory。

也可以直接查询:

然后在 Linux 中进入对应目录查看:

查看实时日志:

3. 查看当前日志配置

重点关注:

参数 作用
logging_collector 是否写入日志文件
log_destination 日志输出到哪里
log_filename 日志文件命名规则
log_statement 记录哪些 SQL
log_duration 是否记录 SQL 执行耗时
log_min_duration_statement 记录超过指定时间的 SQL

log_statement 返回值说明

返回值 含义 记录内容 简单记忆
none 不记录 SQL 不记录普通 SQL 什么都不记录
ddl 记录数据库结构操作 CREATE、ALTER、DROP 等 只记录结构变化
mod 记录数据修改操作 INSERT、UPDATE、DELETE,以及 DDL 记录增删改 + 结构变化
all 记录所有 SQL 包括 SELECT、INSERT、UPDATE、DELETE、DDL 等 所有 SQL

 

4. 开启 INSERT / UPDATE / DELETE 操作日志

推荐:

验证:

应该显示:

注意

以上操作不会重启 KingbaseES 服务,只是重新加载数据库配置。

正常情况下:

返回:

即可。

5. 验证操作日志是否正常

执行一条测试修改,例如:

然后在 Linux 终端查看:

应该能够看到类似:

或者:

关于 SELECT

log_statement = ‘mod’ 不会记录普通 SELECT。

如果需要记录 SELECT:

但生产环境一般不建议长期使用 all,因为日志量会非常大。

6. 修改日志文件命名规则

查看当前:

例如当前:

如果需要修改:

验证:

然后观察日志目录:

7. 设置日志保留 99 天

如果希望保留 99 天,建议不要单纯依赖:

而是采用:

KingbaseES 负责生成日志 + Linux 定时任务负责清理超过 99 天的日志。

例如每天凌晨清理:

添加定时任务

编辑:

每天凌晨 03:00 执行:

这样:

  • KingbaseES 正常持续生成日志
  • 日志文件按照日期保存
  • 超过 99 天的日志自动删除
  • 不需要重启数据库

8. 常用日志查询

查看 INSERT:

查看 UPDATE:

查看 DELETE:

排除数据库备份产生的 sys_dump:

实时查看:

9. 最终建议配置

生产环境建议至少确认:

推荐:

再通过 Linux cron:

实现操作日志记录 + 99天保留。