gaussdb 数据库参数说明【日志相关参数设置】【08】

1. 记录日志的位置

服务器日志的存储位置、日志文件属性的相关参数

log_destination
参数说明:GaussDB支持多种方法记录服务器日志,log_destination的取值为一个逗号分隔开的列表(如log_destination=“stderr,csvlog”)。

取值范围:字符串

  • 有效值为stderr、csvlog、syslog,Windows平台还支持eventlog。

  • 取值为stderr,表示日志打印到屏幕。

  • 取值为csvlog,表示日志的输出格式为“逗号分隔值”即CSV (Comma Separated Value)格式。使用csvlog记录日志的前提是将logging_collector设置为 on。

  • 取值为syslog,表示通过操作系统的syslog记录日志。GaussDB使用syslog的 LOCAL0 ~ LOCAL7记录日志。使用syslog记录日志需在操作系统后台服务配置文件中添加代码:

local0.*  /var/log/postgresql
  • 取值为eventlog,请在操作系统中注册事件源及库文件以便在Windows事件查看器中显示事件日志。
  • 默认值:stderr

logging_collector
参数说明:控制开启后端日志收集进程logger进行日志收集。该进程捕获发送到stderr或csvlog的日志消息并写入日志文件。

这种记录日志的方法比将日志记录到syslog更加有效,因为某些类型的消息在syslog的输出中无法显示。例如动态链接库加载失败消息和脚本(例如archive_command)产生的错误消息。

注意:

  • 将服务器日志发送到stderr时可以不使用logging_collector参数,此时日志消息会被发送到服务器的stderr指向的空间。这种方法的缺点是日志回滚困难,只适用于较小的日志容量。

取值范围:布尔型

  • on 表示开启日志收集功能。
  • off 表示关闭日志收集功能。
  • 默认值:on

log_directory
参数说明:logging_collector设置为on时,log_directory决定存放服务器日志文件的目录。 它可以是绝对路径,或者是相对路径(相对于数据目录的路径)。log_directory支持动态修改,可以通过gs_guc reload实现。

注意:

  • 当配置文件中log_directory的值为非法路径时,会导致集群无法重新启动。
  • 通过gs_guc reload动态修改log_directory时,当指定路径为合法路径时,日志输出到新的路径下。当指定路径为非法路径时,日志输出到上一次合法的日志输出路径下而不影响数据库正常运行。此时即使指定的log_directory的值非法,也会写入到配置文件中。
  • 该参数设定的路径长度不能超过1024,否则会因为截断导致路径错误。
  • 该路径不要配置在数据目录的子目录下,否则在数据库重建时,如果本机是备机则会删除该目录。

说明:

  • 合法路径:用户对此路径有读写权限
  • 非法路径:用户对此路径无读写权限

取值范围:字符串

  • 默认值:pg_log,表示在数据目录下的pg_log/目录下生成服务器日志。

log_filename
参数说明:logging_collector设置为on时,log_filename决定服务器运行日志文件的名称。通常日志文件名是按照strftime模式生成,因此可以用系统时间定义日志文件名,用%转义字符实现。

注意:

  • 建议使用%转义字符定义日志文件名称,否则难以对日志文件进行有效的管理。
  • 当log_destination设为csvlog时,系统会生成附加了时间戳的日志文件名,文件格式为csv格式,例如server_log.1093827753.csv。

取值范围:字符串

  • 默认值:postgresql-%Y-%m-%d_%H%M%S.log

log_file_mode
参数说明:logging_collector设置为on时,log_file_mode设置服务器日志文件的权限。在Windows系统下,此选项无效。通常log_file_mode的取值是能够被chmod和umask系统调用接受的数字。

注意:

  • 使用此选项前请设置log_directory,将日志存储到数据目录之外的地方。
  • 因日志文件可能含有敏感数据,故不能将其设为对外可读。

取值范围:整型,0000~0777

说明:

  • 0600表示只允许服务器管理员读写日志文件。
  • 0640表示允许管理员所在用户组成员只能读日志文件。
  • 默认值:0600

log_truncate_on_rotation
参数说明:logging_collector设置为on时,log_truncate_on_rotation设置日志消息的写入方式。

示例如下:

假设日志需要保留7天,每天生成一个日志文件,日志文件名设置为server_log.Mon、server_log.Tue等。第二周的周二生成的日志消息会覆盖写入到server_log.Tue。设置方法:将log_filename设置为server_log.%a ,log_truncate_on_rotation设置为on,log_rotation_age设置为1440,即日志有效时间为1天。

取值范围: 布尔型

  • on 表示GaussDB以覆盖写入的方式写服务器日志消息。
  • off 表示GaussDB将日志消息附加到同名的现有日志文件上。
  • 默认值:off

log_rotation_age
参数说明:logging_collector设置为on时,log_rotation_age决定创建一个新日志文件的时间间隔。当现在的时间减去上次创建一个服务器日志的时间超过了log_rotation_age的值时,将生成一个新的日志文件。

取值范围:整型

  • 单位:min,h,d
  • 0表示关闭基于时间的新日志文件的创建。
  • 默认值:1d

log_rotation_size
参数说明:logging_collector设置为on时,log_rotation_size决定服务器日志文件的最大容量。当日志消息的总量超过日志文件容量时,服务器将生成一个新的日志文件。

取值范围:整型

  • 0表示关闭基于容量的新日志文件的创建。
  • 默认值:20MB

max_pglog_size
参数说明:当进行日志清理时,此参数设置日志目录的大小限制。当超过该值时,日志管理进程将删除该日志目录下的旧日志文件,以避免日志无限增大。

取值范围:整型

  • 0表示关闭日志清理功能。
  • 默认值:80MB

说明:

  • 日志清理进程频率为30分钟,检查当前日志目录是否超过设定的最大值(max_pglog_size),一旦超过,清除旧日志文件。
  • 为避免频繁删除旧日志文件,在每次日志清理后,日志目录大小都不超过最大值(max_pglog_size)的80%。

syslog_facility
参数说明:log_destination设置为syslog时,syslog_facility配置使用syslog记录日志的“设备”。

取值范围:枚举类型

  • 有效值有 local0、local1、local2、local3、local4、local5、local6、local7。
  • 默认值:local0

syslog_ident
参数说明:log_destination设置为syslog时,syslog_ident设置在syslog日志中GaussDB日志消息的标识。

取值范围:字符串

  • 默认值:postgres

event_source
参数说明:log_destination设置为eventlog时,event_source设置在日志中GaussDB日志消息的标识。

取值范围:字符串

  • 默认值:PostgreSQL

2. 记录日志的时间

只有当日志消息达到一定的级别时,服务器才会在服务器日志中记录此日志消息。

client_min_messages
参数说明:控制发送到客户端的消息级别。每个级别都包含排在它后面的所有级别中的信息。级别越低,发送给客户端的消息就越少。

注意:

  • 当client_min_messages和log_min_messages取相同值时,其值所代表的级别不同。

取值范围:枚举类型

  • 有效值有 debug5、debug4、debug3、debug2、debug1、log、notice、warning、error、fatal、panic。
  • 默认值:notice

log_min_messages
参数说明:控制写到服务器日志文件中的消息级别。每个级别都包含排在它后面的所有级别中的信息。级别越低,服务器运行日志中记录的消息就越少。

注意:

  • 当client_min_messages和log_min_messages取相同值log时所代表的消息级别不同。

取值范围:枚举类型

  • 有效值有debug5、debug4、debug3、debug2、debug1、info、notice、warning、error、log、fatal、panic。
  • 默认值:warning

log_min_error_statement
参数说明:控制在服务器日志中记录错误的SQL语句。

取值范围:枚举类型

  • 有效值有debug5、debug4、debug3、debug2、debug1、info、notice、warning、error、log、fatal、panic。

说明:

  • 设置为error ,表示导致错误、日志消息、致命错误、panic的语句都将被记录。
  • 设置为panic,表示关闭此特性。
  • 默认值:error

log_min_duration_statement
参数说明:当某条语句的持续时间大于或者等于特定的毫秒数时,log_min_duration_statement控制记录每条完成语句的持续时间。

设置log_min_duration_statement可以很方便地跟踪需要优化的查询语句。对于使用扩展查询协议的客户端,语法分析、绑定、执行每一步所花时间被独立记录。

注意:
当此选项与log_statement同时使用时,已经被log_statement记录的语句文本不会被重复记录。在没有使用syslog情况下,推荐使用log_line_prefix记录PID或会话ID,方便将当前语句消息连接到最后的持续时间消息。

取值范围:整型,最小值为-1

  • 设置为250,所有运行时间不短于250ms的SQL语句都会被记录。
  • 设置为0,输出所有语句的持续时间。
  • 设置为-1,关闭此功能。
  • 默认值:-1

使用的消息安全级别

信息严重程度类型详细说明系统日志事件日志
debug[1-5]报告详细调试信息。DEBUGINFORMATION
info报告用户可能需求的信息, 比如在VACUUM VERBOSE过程中的信息。INFOINFORMATION
notice报告可能对用户有帮助的信息, 比如, 长标识符的截断, 作为主键一部分创建的索引等。NOTICEINFORMATION
warning报告警告信息, 比如在事务块范围之外的COMMIT。NOTICEWARNING
error报告导致当前命令退出的错误。WARNINGERROR
log报告对数据库管理员有用的信息, 比如检查点操作统计信息。INFOINFORMATION
fatal报告导致当前会话终止的原因。ERRERROR
panic报告导致整个数据库被关闭的原因。CRITERROR

log_min_duration_operation
参数说明:控制是否进行关键性能统计,单位为毫秒。-1表示禁止,0表示打印所有统计信息,大于0时表示只统计大于这个值的统计信息。使用GaussDB运行日志打印,输出到pg_log目录。会被统计的相关信息:

  • 一个事务操作过程中对象加锁的时间信息。
  • 一个事务加轻量级锁的时间信息。
  • 一个事务处理无效消息的时间信息。
  • 一个事务处理操作的时间信息。
  • 一个事务提交日志的时间信息。
  • 一个事务运行的时间信息。

取值范围:整型,-1~INT_MAX / 1000

  • 默认值:-1

3. 记录日志的内容

debug_print_parse
debug_print_rewritten
debug_print_plan

参数说明:包括debug_print_parse、debug_print_rewritten和debug_print_plan三个参数,用于控制数据库输出运行时的调试信息。在执行SQL查询时,具体含义如下:

  • debug_print_parse 打印解析树结果。
  • debug_print_rewritten 打印查询重写结果。
  • debug_print_plan 打印查询执行结果。

注意:

  • 只有当日志的级别为log及以上时,这些调试信息才会输出。当这些选项打开时,调试信息只会记录在服务器的日志中,而不会输出到客户端的日志中。通过设置client_min_messages和log_min_messages参数可以改变日志级别。

取值范围:布尔型

  • 默认值:off

debug_pretty_print
参数说明:设置此选项对debug_print_parse、debug_print_rewritten和debug_print_plan产生的日志进行缩进,会生成易读但比设置为off时更长的输出格式。

取值范围:布尔型

  • 默认值:on

log_checkpoints
参数说明:控制在服务器日志中记录检查点和重启点的信息。打开此参数时,服务器日志消息包含涉及检查点和重启点的统计量,其中包含需要写的缓存区的数量及写入所花费的时间等。

取值范围:布尔型

  • 默认值:off

log_connections
参数说明:控制记录客户端的连接请求信息。

注意:

  • 有些客户端程序(例如gsql),在判断是否需要口令的时候会尝试连接两次,因此日志消息中重复的“connection receive”(收到连接请求)并不意味着一定是问题。

取值范围:布尔型

  • 默认值:off

log_disconnections
参数说明:控制记录客户端结束连接信息。

取值范围:布尔型

  • 默认值:off

log_duration
参数说明:控制记录每个已完成SQL语句的执行时间。对使用扩展查询协议的客户端、会记录语法分析、绑定和执行每一步所花费的时间。

取值范围:布尔型

  • 设置为off ,该选项与log_min_duration_statement的不同之处在于log_min_duration_statement强制记录查询文本。
  • 设置为on并且log_min_duration_statement大于零,记录所有持续时间,但是仅记录超过阈值的语句。这可用于在高负载情况下搜集统计信息。
  • 默认值:off

log_error_verbosity
参数说明:控制服务器日志中每条记录的消息写入的详细度。

取值范围:枚举类型

  • 有效值有terse、verbose、default。

说明:

  • terse 输出不包括DETAIL、HINT、QUERY及CONTEXT错误信息的记录。
  • verbose 输出包括SQLSTATE错误代码 、源代码文件名、函数名及产生错误所在的行号。
  • 默认值:default

log_hostname
参数说明:默认状态下,连接消息日志只显示正在连接主机的IP地址。打开此选项同时可以记录主机名。由于解析主机名可能需要一定的时间,可能影响数据库的性能。

取值范围:布尔型

  • 默认值:off

log_line_prefix
参数说明:控制每条日志信息的前缀格式。日志前缀类似于printf风格的字符串,在日志的每行开头输出。用以%为开头的“转义字符”代替表1中的状态信息。可识别的字符直接拷贝到日志中,忽略不能识别的字符,有些字符仅能被会话进程识别而不能被后端进程(比如主服务器进程)识别。

转义字符效果仅用于会话
%u用户名。
%d数据库名。
%r远端主机名或者IP地址以及远端端口。
%h远端主机名或者IP地址。
%p进程ID。
%t时间戳(没有毫秒,Windows上没有时区)。
%m带毫秒的时间戳。
%i命令标签:会话当前执行的命令类型。
%c会话ID,详见说明。
%l每个会话或进程的日志编号,从1开始。
%s进程启动时间。
%x事务ID(0表示没有分配事务ID)。
%q不产生任何输出。如果当前进程是后端进程,忽略这个转义序列,继续处理后面的转义序列;如果当前进程不是后端进程,忽略这个转义序列和它后面的所有转义序列。
%%字符% 。

说明:

  • 转义字符%c打印一个独一无二的会话ID,由两个4字节的十六进制数组成,通过字符“.”分开。这两个十六进制数分别表示进程的启动时间及进程编号,所以%c也可以看作是保存打印这些名目的途径的空间。比如,从pg_stat_activity中产生会话ID,可以用下面的查询:
SELECT to_hex(EXTRACT(EPOCH FROM backend_start)::integer) || '.' ||
       to_hex(pid)
FROM pg_stat_activity;
  • 当log_line_prefix设置为空值时,请将其最后一个字符作为一个独立的段,以此来直观地与后续的日志进行区分,也可以使用一个标点符号。
    Syslog生成自己的时间戳及进程ID信息,所以当登录日志时,不需要包含这些转义字符。

  • 取值范围: 字符串

  • 默认值: %m %p,表示在日志开头附加用户名和会话开始的时间戳。

log_lock_waits
参数说明:当一个会话的等待获得一个锁的时间超过deadlock_timeout的值时,此选项控制在数据库日志中记录此消息。这对于决定锁等待是否会产生一个坏的行为是非常有用的。

取值范围:布尔型

  • 默认值:off

log_statement
参数说明:控制记录SQL语句。对于使用扩展查询协议的客户端,记录接收到执行消息的事件和绑定参数的值(内置单引号要双写)。

注意:

  • 即使log_statement设置为all,包含简单语法错误的语句也不会被记录,因为仅在完成基本的语法分析并确定了语句类型之后才记录日志。在使用扩展查询协议的情况下,在执行阶段之前(语法分析或规划阶段)同样不会记录。将log_min_error_statement设为ERROR或更低才能记录这些语句。

取值范围:枚举类型

  • none 表示不记录语句。
  • ddl 表示记录所有的数据定义语句,比如CREATE、ALTER和DROP语句。
  • mod 表示记录所有DDL语句,还包括数据修改语句INSERT、UPDATE、DELETE、TRUNCATE和COPY FROM 。
  • all 表示记录所有语句,PREPARE、EXECUTE和EXPLAIN ANALYZE语句也同样被记录。
  • 默认值:none

log_temp_files
参数说明:控制记录临时文件的删除信息。临时文件可以用来排序、哈希及临时查询结果。当一个临时文件被删除时,将会产生一条日志消息。

取值范围:整型,最小值为-1

  • 正整数表示只记录比log_temp_files设定值大的临时文件的删除信息。
  • 值0 表示记录所有的临时文件的删除信息。
  • 值-1 表示不记录任何临时文件的删除信息。
  • 默认值:-1

log_timezone
参数说明:设置服务器写日志文件时使用的时区。与TimeZone不同,这个值是数据库范围的,针对所有连接到本数据库的会话生效。

取值范围:字符串

  • 默认值:GMT,gs_initdb进行相应系统环境设置时会对此选项进行修改。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值