【赵渝强老师】高斯数据库(openGauss)的运行日志

0 阅读1分钟

b474.png 在openGauss数据库集群初始化的时候会创建一个目录,通常都会使用系统配置相关的环境变量$PGDATA来表示。当数据库初始化完成后,会在这个目录生成相关的子目录以及一些文件。下图就是openGauss数据库的物理结构:

image.png

openGauss的日志文分为运行日志、WAL预写日志和服务器日志。下面重点讨论一下openGauss的运行日志,视频讲解如下:

aaa11.png
点击这里查看视频讲解:【赵渝强老师】高斯数据库(openGauss)的运行日志

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

#---------------------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#---------------------------------------------------------------------------------------------

# - Where to Log -

#log_destination = 'stderr'                           # Valid values are combinations of
                                                      # stderr, csvlog, syslog, and eventlog,
                                                      # depending on platform.  csvlog
                                                      # requires logging_collector to be on.
                                                      
# This is used when logging to stderr:                
logging_collector = on                                # Enable capturing of stderr and csvlog
                                                      # into log files. Required to be on for
                                                      # csvlogs.
                                                      # (change requires restart)

# These are only used if logging_collector is on:
#log_directory = 'pg_log'                             # directory where log files are written,
                                                      # can be absolute or relative to PGDATA
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'       # log file name pattern,

openGauss自带的运行日志文件可以实现审计的功能,一个推荐的openGauss审计日志的参数配置如下:

logging_collector = on
log_destination = 'csvlog'
log_directory = 'gs_log'
log_filename = 'openGauss-%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秒钟。当重启openGauss完成后,尝试创建一张简单的表,例如:

openGauss=# \c scott 
scott=# create table testaudittable as select * from emp;

# 查看logs目录下生成的日志文件,如下:
$ pwd
/home/postgres/training/gaussdb/data/single_node/gs_log

$ ll
total 8
... openGauss-2026-09-15_000502.csv
... openGauss-2026-09-15_000502.csv.csv

# 查看日志文件openGauss-2026-09-15_000502.csv.csv的内容,将得到如下的审计日志信息:
...
2026-09-15 00:05:29.516,"sgnode","postgres","scott",140485827294784,"
                         [local]",6967bec2.258,1,"",
                         2026-01-15 00:05:22 CST,13/8,0,0,"BACKEND",LOG,00000,
                         "statement: create table testaudittable as select * from emp;"
                         ,,,,,,,,,"gsql"
...