Skip to content

KingBaseES 日志参数

日志参数概述

KingBaseES 的日志参数用于配置数据库的日志行为,包括日志级别、日志格式、日志文件管理等。合理的日志参数配置可以帮助 DBA 监控数据库运行状态、排查故障和进行性能优化。

错误日志参数

log_destination

  • 描述:指定日志输出目标
  • 默认值:'stderr,csvlog'
  • 取值范围:stderr、csvlog、syslog、eventlog
  • 配置建议
    • 生产环境建议同时输出到 stderr 和 csvlog
    • csvlog 格式便于日志分析工具处理
    • 如需将日志发送到 syslog,确保 syslog 服务配置正确

logging_collector

  • 描述:是否启用日志收集器
  • 默认值:on
  • 取值范围:on、off
  • 配置建议
    • 建议启用日志收集器,便于日志管理
    • 禁用时日志仅输出到 stderr

log_directory

  • 描述:指定日志目录
  • 默认值:'log'
  • 取值范围:字符串
  • 配置建议
    • 确保目录存在且权限正确(700)
    • 建议将日志存储在独立的磁盘分区
    • 定期清理日志,避免磁盘空间不足

log_filename

  • 描述:指定日志文件名模板
  • 默认值:'kingbase-%Y-%m-%d_%H%M%S.log'
  • 取值范围:字符串,支持 strftime 格式
  • 配置建议
    • 建议包含时间戳,便于日志管理
    • 定期归档日志文件

log_rotation_age

  • 描述:指定日志文件时间限制
  • 默认值:1d
  • 取值范围:1min ~ 1y
  • 配置建议
    • 建议设置为 1d ~ 7d
    • 结合 log_rotation_size 使用

log_rotation_size

  • 描述:指定日志文件大小限制
  • 默认值:10MB
  • 取值范围:1 ~ 2147483647
  • 配置建议
    • 建议根据日志量调整
    • 过大的文件可能影响日志查询性能
    • 过小的文件会导致日志文件过多

log_truncate_on_rotation

  • 描述:日志轮换时是否截断文件
  • 默认值:off
  • 取值范围:on、off
  • 配置建议
    • 建议设置为 off,避免覆盖历史日志
    • 如使用固定文件名,可设置为 on

log_min_messages

  • 描述:指定错误日志的最低级别
  • 默认值:warning
  • 取值范围:debug5、debug4、debug3、debug2、debug1、info、notice、warning、error、log、fatal、panic
  • 配置建议
    • 生产环境建议设置为 warning 或 error
    • 调试时可设置为 debug1 ~ debug5
    • 过低的级别会产生大量日志,影响性能

log_error_verbosity

  • 描述:指定错误日志的详细程度
  • 默认值:default
  • 取值范围:terse、default、verbose
  • 配置建议
    • 生产环境建议设置为 default
    • 调试时可设置为 verbose
    • terse 格式过于简洁,不建议使用

log_checkpoints

  • 描述:是否记录检查点信息
  • 默认值:on
  • 取值范围:on、off
  • 配置建议
    • 建议启用,便于监控检查点频率和性能
    • 检查点信息有助于性能分析

log_connections

  • 描述:是否记录连接信息
  • 默认值:off
  • 取值范围:on、off
  • 配置建议
    • 建议启用,便于监控连接情况
    • 有助于识别异常连接和连接风暴

log_disconnections

  • 描述:是否记录断开连接信息
  • 默认值:off
  • 取值范围:on、off
  • 配置建议
    • 建议启用,便于监控连接生命周期
    • 结合 log_connections 使用,完整记录连接情况

log_duration

  • 描述:是否记录每个语句的执行时间
  • 默认值:off
  • 取值范围:on、off
  • 配置建议
    • 不建议在生产环境启用,会产生大量日志
    • 调试时可临时启用
    • 建议使用 log_min_duration_statement 代替

log_min_duration_statement

  • 描述:记录执行时间超过该值的语句
  • 默认值:-1(不记录)
  • 取值范围:-1 ~ 2147483647
  • 配置建议
    • 建议设置为 100 ~ 500ms,用于捕获慢查询
    • 生产环境中避免设置过小,以免产生大量日志
    • 结合 log_statement_sample_rate 使用,控制日志量

log_statement

  • 描述:控制记录哪些类型的语句
  • 默认值:'none'
  • 取值范围:'none'、'ddl'、'mod'、'all'
  • 配置建议
    • 生产环境建议设置为 'ddl' 或 'mod'
    • 开发环境可以设置为 'all' 用于调试
    • 'all' 会产生大量日志,影响性能

log_statement_sample_rate

  • 描述:控制记录语句的采样率
  • 默认值:1.0
  • 取值范围:0.0 ~ 1.0
  • 配置建议
    • 对于高并发系统,建议设置为 0.1 ~ 0.5
    • 降低采样率可以减少日志量,提高性能
    • 结合 log_min_duration_statement 使用

慢查询日志参数

log_slow_statement

  • 描述:是否记录慢查询
  • 默认值:on
  • 取值范围:on、off
  • 配置建议
    • 建议启用,便于性能分析
    • 慢查询日志是性能优化的重要依据

log_slow_slave_statement

  • 描述:是否在备库记录慢查询
  • 默认值:off
  • 取值范围:on、off
  • 配置建议
    • 如需监控备库性能,建议启用
    • 备库慢查询可能影响主备同步

log_slow_verbose

  • 描述:是否记录慢查询的详细信息
  • 默认值:on
  • 取值范围:on、off
  • 配置建议
    • 建议启用,便于慢查询分析
    • 详细信息包括执行计划、锁等待等

log_slow_duration

  • 描述:指定慢查询的时间阈值
  • 默认值:1000ms
  • 取值范围:0 ~ 2147483647
  • 配置建议
    • 建议设置为 500 ~ 2000ms
    • 根据业务需求调整阈值
    • 结合 log_min_duration_statement 使用

审计日志参数

audit_enabled

  • 描述:是否启用审计功能
  • 默认值:off
  • 取值范围:on、off
  • 配置建议
    • 生产环境建议启用审计功能
    • 审计可以记录数据库的重要操作,便于安全审计和故障排查

audit_directory

  • 描述:指定审计日志目录
  • 默认值:'pg_audit'
  • 取值范围:字符串
  • 配置建议
    • 确保目录存在且权限正确(700)
    • 建议将审计日志存储在独立的磁盘分区
    • 定期清理审计日志,避免磁盘空间不足

audit_filename

  • 描述:指定审计日志文件名模板
  • 默认值:'audit_%Y%m%d_%H%M%S.log'
  • 取值范围:字符串,支持 strftime 格式
  • 配置建议
    • 建议包含时间戳,便于日志管理
    • 定期归档审计日志

audit_rotation_size

  • 描述:指定审计日志文件大小限制
  • 默认值:10MB
  • 取值范围:1 ~ 2147483647
  • 配置建议
    • 建议根据审计日志量调整
    • 过大的文件可能影响日志查询性能
    • 过小的文件会导致日志文件过多

audit_rotation_age

  • 描述:指定审计日志文件时间限制
  • 默认值:1d
  • 取值范围:1min ~ 1y
  • 配置建议
    • 建议根据审计需求调整
    • 结合 audit_rotation_size 使用

audit_statement_classes

  • 描述:指定需要审计的语句类型
  • 默认值:'READ,WRITE'
  • 取值范围:以逗号分隔的语句类型列表
  • 配置建议
    • 生产环境建议审计所有重要操作,如 'READ,WRITE,DDL,DML,DCL'
    • 根据实际需求调整审计范围,避免审计日志过大

日志格式参数

log_line_prefix

  • 描述:指定日志行前缀格式
  • 默认值:'%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
  • 取值范围:字符串,支持特殊转义序列
  • 配置建议
    • 建议包含时间戳、进程 ID、用户、数据库、应用和客户端 IP
    • 便于日志分析和故障排查
    • 常用转义序列:%t(时间戳)、%p(进程 ID)、%u(用户)、%d(数据库)、%a(应用)、%h(客户端 IP)

log_timezone

  • 描述:指定日志时间戳时区
  • 默认值:'PRC'
  • 取值范围:时区名称
  • 配置建议
    • 建议使用与系统一致的时区
    • 便于日志时间与系统时间对应

版本差异

V8 R6 日志参数

  • 支持基本的日志功能
  • 日志格式相对简单
  • 审计功能相对基础
  • 日志管理选项较少

V8 R7 日志参数

  • 增强了日志功能,支持更多日志格式和输出目标
  • 改进了审计功能,支持更细粒度的审计
  • 增加了更多日志管理选项
  • 优化了日志性能,减少了日志对系统性能的影响
  • 增加了日志采样功能,便于控制日志量

日志管理最佳实践

  1. 合理设置日志级别:根据需求设置合适的日志级别,避免日志过多或过少
  2. 定期清理日志:设置合理的日志轮换策略,定期清理过期日志
  3. 分离日志存储:将日志存储在独立的磁盘分区,避免影响数据库性能
  4. 使用日志分析工具:使用专业的日志分析工具,如 ELK Stack、Splunk 等
  5. 监控日志大小:定期监控日志目录大小,避免磁盘空间不足
  6. 备份重要日志:备份重要的审计日志和错误日志,便于后续分析
  7. 安全管理日志:限制日志文件的访问权限,防止日志泄露
  8. 定期分析日志:定期分析日志,发现潜在问题和性能瓶颈

常见问题(FAQ)

Q1:如何优化日志性能?

A1:可以通过以下方式优化日志性能:

  • 合理设置日志级别,避免日志过多
  • 降低日志采样率,减少日志量
  • 使用较快的存储设备存储日志
  • 分离日志存储,避免影响数据库性能
  • 定期清理日志,避免磁盘 I/O 瓶颈

Q2:如何分析慢查询日志?

A2:分析慢查询日志可以从以下几个方面入手:

  • 查看执行时间最长的查询
  • 分析查询的执行计划
  • 检查是否缺少索引
  • 查看锁等待情况
  • 结合系统资源使用情况分析

Q3:如何配置日志轮换?

A3:配置日志轮换需要设置以下参数:

  • log_rotation_age:日志文件时间限制
  • log_rotation_size:日志文件大小限制
  • log_truncate_on_rotation:日志轮换时是否截断文件
  • 建议同时设置时间和大小限制,确保日志文件不会过大

Q4:如何备份日志?

A4:备份日志可以通过以下方式:

  • 使用 rsync 或 scp 将日志复制到备份服务器
  • 使用备份工具,如 tar、zip 等压缩日志文件
  • 配置日志自动归档脚本
  • 确保备份日志的安全性和完整性

Q5:如何监控日志?

A5:监控日志可以通过以下方式:

  • 使用监控工具,如 Prometheus、Zabbix 等监控日志目录大小
  • 配置日志告警,当日志出现特定关键字时发送告警
  • 定期查看日志,发现异常情况
  • 使用日志分析工具实时监控日志

Q6:如何处理大量日志?

A6:处理大量日志可以从以下几个方面入手:

  • 调整日志级别,减少日志量
  • 降低日志采样率
  • 增加日志轮换频率
  • 使用日志分析工具进行分布式处理
  • 考虑使用日志压缩和归档

Q7:如何确保日志安全?

A7:确保日志安全可以从以下几个方面入手:

  • 限制日志文件的访问权限(700)
  • 加密存储敏感日志
  • 定期审计日志访问情况
  • 备份日志到安全的位置
  • 避免在日志中记录敏感信息