【赵渝强老师】金仓数据库的运行日志文件

金仓数据库实例初始化的时候会创建一个目录,通常都会在系统配置相关的环境变量$KINGBASEDATA来表示。当数据库初始化完成后,会在这个目录生成相关的子目录以及一些文件。下图展示了金仓数据库的物理结构。

金仓数据库的物理存储结构主要是指硬盘上存储的文件,包括:数据文件、日志文件、参数文件、控制文件、WAL预写日志文件等等。其中日志文件又分为运行日志、WAL预写日志、事务日志和服务器日志。下面重点介绍一下金仓数据库的运行日志文件。

在默认的情况下,运行日志没有开启。通过查看主kingbase.conf文件的配置可以看到相关的参数设置,开启后会自动生成该日志文件。

视频讲解如下
【赵渝强老师】金仓数据库的运行日志文件

运行时日志一般是记录数据库服务器与数据库的状态,比如各种错误信息、定位慢查询SQL、数据库的启动关闭信息、发生检查点过于频繁等的告警信息等等。该日志有.csv格式和.log格式,建议使用.csv格式。因为.csv格式一般会按大小和时间自动切割。sys_log是可以被清理删除、压缩打包或者转移,同时不影响数据库的正常运行。当有遇到数据库无法启动或者更改参数没有生效时,第一步就可以查看运行时日志。下面展示了主参数文件kingbase.conf中关于运行日志的配置参数。

powershell 复制代码
log_destination
日志文件的格式,例如:log_destination = 'csvlog'
这将使用CSV格式记录审计日志,并在每行日志信息前添加时间戳、用户ID、数据库名称和进程ID。

log_directory
日志文件存储的路径。

log_filenam
日志文件的名称。在指定文件名称时可以使用日期的通配符,例如:
log_filename = kingbase-%Y-%m-%d.log'
该格式将日志文件命名为 kingbase-年-月-日.log,如:kingbase-2026-04-13.log。

log_truncate_on_rotation
默认值为off。如果设置为on,将以覆盖方式写入日志信息到日志文件。

log_rotation_age
保留单个让你走文件的最大时长,默认是1d,也可以是1h、1min或者1s。

log_rotation_size
保留单个文件的最大尺寸,默认是10MB。

log_min_messages
日志信息的级别,该参数主要支持以下的级别设置:
(*)debug5:最详细的日志级别,记录所有调试信息。
(*)debug4:记录详细的调试信息。
(*)debug3:记录更加详细的调试信息。
(*)debug2:记录非常详细的调试信息。
(*)debug1:记录较为详细的调试信息。
(*)info:记录普通信息。
(*)notice:记录警告信息。
(*)warning:记录警告信息。
(*)error:记录错误信息。
(*)log:记录所有日志信息。


log_min_duration_statement
该参数的取值包含以下三种情况:
(*)-1:禁用该参数。
(*)0:将记录所有SQL语句和它们的耗时,
(*)大于0:只记录那些耗时超过(或等于)这个值(ms)的SQL语句。

log_checkpoints: 记录检查点信息。
log_connections: 记录每个连接到数据库的客户端的信息。
log_disconnections: 记录每个断开与数据库连接的客户端信息。
log_duration: 记录每个SQL语句的执行时间。
log_error_verbosity: 设置错误信息的详细程度。
log_hostname: 记录每个连接到数据库的客户端主机名。
log_line_prefix: 设置每行日志信息的前缀,可以包括时间戳、用户名、数据库名等信息。
log_lock_waits: 记录等待锁的信息。

log_statement
记录每个执行的SQL语句,下面列举了该参数的取值:
(*)none:不记录任何操作。
(*)ddl:记录所有DDL语句,如:create,alter,和drop语句。
(*)mod:记录所有DDL语句,再加上数据修改语句insert,update等。
(*)all:记录所有执行的语句,该参数值可以跟踪整个数据库执行的SQL语句,
         但会对数据库性能产生较大影响,生产环境不建议配置此值。

log_temp_files: 记录使用临时文件的信息。
log_timezone: 设置日志记录的时区信息。

一个推荐的KingBase运行日志的参数配置如下:

powershell 复制代码
logging_collector = on
log_destination = 'csvlog'
log_directory = 'logs'
log_filename = 'kingbase-%Y-%m-%d_%H%M%S.csv'
log_truncate_on_rotation = on
log_connections = on
log_disconnections = on
log_statement = ddl
log_min_duration_statement = 60s
log_checkpoints = on
log_lock_waits = on
deadlock_timeout = 1s

这里的参数设置还将死锁的超时时间设置为了1秒钟。这里的log_directory默认值是$KINGBASE_DATA/sys_log/。需要将其注释掉。当重启KingBase完成后,尝试创建一张简单的表,例如:

powershell 复制代码
[kingbase@kingbase ~]$ ksql -U system -d kingbase
用户 system 的口令:
授权类型: 企业版.
输入 "help" 来获取帮助信息.

kingbase=# \c scott
您现在以用户名"system"连接到数据库"scott"。

scott=# create table mytestaudit as select * from emp;

查看logs目录下生成的日志文件,如下:

powershell 复制代码
[kingbase@kingbase logs]$ pwd
/home/kingbase/kdb/kes_oracle_instance/logs

[kingbase@kingbase logs]$ ll
总用量 8
-rw------- 1 kingbase kingbase  187  4月 23 18:29 kingbase-2026-04-23_182958.csv
-rw------- 1 kingbase kingbase 2006  4月 23 18:30 kingbase-2026-04-23_182958.csv.csv

查看日志文件kingbase-2026-04-23_182958.csv.csv的内容,将得到如下的审计日志信息:

powershell 复制代码
...
2026-04-23 18:30:34.089 CST,"system","scott",16020,"[local]",68d276bd.3e94,3,
"CREATE TABLE AS",2026-04-23 18:30:21 CST,6/0,0,LOG,00000,"
声明:create table mytestaudit as select * from emp;",,,,,,,,,"ksql"                                                                                                                    
...
相关推荐
D3bugRealm1 小时前
pgvector:PostgreSQL 原生向量搜索扩展
数据库·其他·postgresql
Java面试题总结2 小时前
PostgreSQL 性能调优:内存、I/O 与连接管理
数据库·postgresql
北秋,2 小时前
Oracle 数据库基础用法
数据库·oracle
CLX05052 小时前
C#怎么实现全局异常过滤器_C#如何捕获控制器报错【核心】
jvm·数据库·python
多加点辣也没关系2 小时前
设计模式-享元模式
数据库·设计模式·享元模式
牢七2 小时前
Mailvelope
数据库
阿里云瑶池数据库2 小时前
如何破解多租户隔离与性能难题?PolarDB PostgreSQL实战指南
数据库·postgresql
倔强的石头_3 小时前
异构操作系统架构下的数据库表空间高级管理:路径兼容与自动化运维实战
数据库
倒霉熊dd3 小时前
Python 学习(第二部分:函数、模块与面向对象编程)
前端·数据库·python