外观
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 日志参数
- 增强了日志功能,支持更多日志格式和输出目标
- 改进了审计功能,支持更细粒度的审计
- 增加了更多日志管理选项
- 优化了日志性能,减少了日志对系统性能的影响
- 增加了日志采样功能,便于控制日志量
日志管理最佳实践
- 合理设置日志级别:根据需求设置合适的日志级别,避免日志过多或过少
- 定期清理日志:设置合理的日志轮换策略,定期清理过期日志
- 分离日志存储:将日志存储在独立的磁盘分区,避免影响数据库性能
- 使用日志分析工具:使用专业的日志分析工具,如 ELK Stack、Splunk 等
- 监控日志大小:定期监控日志目录大小,避免磁盘空间不足
- 备份重要日志:备份重要的审计日志和错误日志,便于后续分析
- 安全管理日志:限制日志文件的访问权限,防止日志泄露
- 定期分析日志:定期分析日志,发现潜在问题和性能瓶颈
常见问题(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)
- 加密存储敏感日志
- 定期审计日志访问情况
- 备份日志到安全的位置
- 避免在日志中记录敏感信息
