本文档介绍了系统配置参数中 错误报告和日志类别的相关参数。
注意!
为确保系统稳定与安全,请务必谨慎手动修改相关参数。
当启用了向事件日志记录时,这个参数决定用来标识日志中 YMatrix 消息的程序名。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | PostgreSQL | segments;system;restart |
这个参数启用日志收集器,它是一个捕捉被发送到 stderr
的日志消息的后台进程,并且它会将这些消息重定向到日志文件中。
syslog
通常更有用,因为某些类型的消息不会在 syslog
输出中出现(如动态链接器错误消息、由 archive_command
等脚本产生的错误消息等)。stderr
,日志消息将只会去到服务器的 stderr
被定向到的位置。不过,那种方法只适合于低日志量,因为它没有提供方法来轮转日志文件。还有,在某些不使用日志收集器的平台上可能会导致丢失或者混淆日志输出,因为多个进程并发写入同一个日志文件时会覆盖彼此的输出。syslog
倾向于在无法写入消息时丢掉消息,这意味着在这样的情况下它可能会无法记录某些消息,但是它不会阻塞系统的其他部分。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | segments;system;restart |
YMatrix 支持多种方法来记录服务器消息,设置此参数为一个想要的日志目的地的列表,值之间用逗号分隔。
csvlog
被包括在 log_destination
中,日志项会以“逗号分隔值” (CSV)格式被输出,这样可以很方便地把日志载入到程序中。要产生 CSV 格式的日志输出,必须启用 logging_collector
。stderr
或 csvlog
时,会创建文件 current_logfiles
来记录当前正在被日志收集器使用的日志文件的位置以及相关的日志目的地。这提供了一种查找节点实例当前使用的日志的便利手段。这里是该文件内容的一个例子:stderr log/postgresql.log
csvlog log/postgresql.csv
当轮转效应创建出一个新的日志文件时,以及 log_destination
被重载时,current_logfiles
文件会被重建。当 log_destination
中不包括 stderr
和 csvlog
时以及当日志收集器被禁用时,这个文件会被删除。
log_destination
的 syslog
选项。YMatrix 可以在 syslog 设备 LOCAL0
到 LOCAL7
中记录(见 syslog_facility
),但是大部分平台上的默认 syslog 配置会丢弃所有这种消息。你将需要增加这样的内容:local0.* /var/log/postgresql
到 syslog 守护进程的配置文件来让它工作。log_destination
的 eventlog
选项时,你应该在操作系统中注册一个事件源极其库,这样 Windows 事件查看器能够清楚地显示事件日志消息。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
string | stderr | stderr / csvlog / syslog / eventlog(on Windows) | segments;system;reload |
当 logging_collector
被启用时,这个参数决定日志文件将被在哪个目录下创建。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | log | segments;system;reload |
设置日志文件的创建模式。
logging_collector
被启用时,这个参数设置日志文件的权限(在微软 Windows 上这个参数将被忽略)。0600
,表示只有服务器拥有者才能读取或写入日志文件。0640
,它允许拥有者的组成员读取文件。注意:你需要修改 log_directory
为集群数据目录之外的某个位置,此设置才生效。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0600 | 0000 ~ 0777 | segments;system;reload |
当 logging_collector
被启用时,这个参数设置被创建的日志文件的文件名。
%
转义可以被用来指定根据时间变化的文件名(注意如果有任何时区独立的 %
转义,计算将在由 log_timezone
(见下文)指定的时区中完成)。被支持的 %
转义和开放组织的 strftime 说明中列举的类似。注意系统的 strftime 不会被直接使用,因此平台相关(非标准)的扩展无法工作。log_destination
中启用了 CSV 格式输出,.csv
将会被追加到时间戳日志文件名中来创建 CSV 格式输出(如果 log_filename
以 .log
结尾,该后缀会被替换)。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | gpdb-%Y-%m-%d_%H%M%S.csv | segments;system;reload |
确定 YMatrix 数据库将消息写入活动日志文件的时间(分钟)。
0
以禁用基于时间的新日志文件创建。1440分钟
,即 1天。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 1440 | 0 ~ (INT_MAX/60) | master;system;restart |
确定触发旋转的单个日志文件的大小(KB)。
INT_MAX
。如果指定了无效值,则使用默认值。1048576KB
,即 1GB。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 1048576 | 0 ~ (INT_MAX/1024) | master;system;restart |
截断(覆盖)而不是追加任何已有的同名日志文件。
gpseg-%H.log 的 log_filename
将导致产生 24 小时日志文件,并且循环地覆盖它们。server_log.Mon
、server_log.Tue
等等,并且自动用本周的日志覆盖上一周的日志。那么你可以:将 log_filename
设置为 server_log.%a
、将 log_truncate_on_rotation
设置为 on
并且将 log_rotation_age
设置为 7d
。log_filename
设置为 server_log.%H%M
、 将 log_truncate_on_rotation
设置为 on
、 将 log_rotation_age
设置为 1h
并且 将 log_rotation_size
设置为 10MB
。 在 log_filename
中包含 %M
字符允许可能发生的任何大小驱动的旋转,以选择一个与每小时的初始文件名不同的新文件名。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;system;restart |
当启用了向 syslog 记录时,这个参数决定要使用的 syslog 设备。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | LOCAL0 | LOCAL0 / LOCAL1 / LOCAL2 / LOCAL3 / LOCAL4 / LOCAL5 / LOCAL6 / LOCAL7 | segments;system;reload |
当启用了向 syslog 记录时,这个参数决定用来标识 syslog 中的 YMatrix 消息的程序名。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | postgres | segments;system;reload |
当日志被记录到 syslog 并且这个设置为 on
(默认)时,每一个消息会被加上一个增长的序号作为前缀。
$RepeatedMsgReduction
),因此这个参数可能不是必需的。off
。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | segments;system;reload |
当启用把日志记录到 syslog 时,这个参数决定消息如何送达 syslog。
on
(默认)时,消息会被分成行,并且长的行也会被划分以便能够放到 1024 字节中,这是传统 syslog 实现一种典型的尺寸限制。off
时,YMatrix 服务器日志消息会被原样送达 syslog 服务,而处理大体量消息的任务由 syslog 服务负责。on
。因为大部分 syslog 实现要么不能处理大型消息,要么需要做特殊的配置以处理大型消息。但是如果 syslog 最终写入到某种其他媒介,有必要让消息保持逻辑上的整体性(也更加有用)。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | segments;system;reload |
指定在服务器配置参数 gp_log_interconnect
设置为 debug
时记录 YMatrix 数据库互连调试消息的时间间隔(秒)。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 10 | 1 ~ 4096 | master;session;reload |
如果语句的持续时间大于或等于指定的时间(毫秒),则将语句及其持续时间记录在单个日志行上。
0
将打印所有语句及其持续时间。-1
禁用该功能。250
,则将记录运行 250
毫秒或更长时间的所有 SQL 语句。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | -1 | -1 ~ INT_MAX | master;session;reload;superuser |
控制是否还将在服务器日志中记录导致错误情况的 SQL 语句。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | error | debug5 / debug4 / debug3 / debug2 / debug1 / info / notice / warning / error / fatal / panic 每个级别都包括以后的所有级别 级别越靠后,被发送的消息越少 |
master;session;reload;superuser |
控制哪些消息级别被写入到服务器日志。
log
在此参数中有与 client_min_messages
中不同的排名。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | warning | debug5 / debug4 / debug3 / debug2 / debug1 / info / notice / warning / error / log / fatal / panic 每个级别都包括以后的所有级别 级别越靠后,被发送的消息越少 |
master;session;reload;superuser |
设置将要记录的持续时间超过 log_min_duration_statement
语句的比例。
0.5
意味着统计上有二分之一的机会记录任何给定的语句。1.0
,表示记录所有采样语句。0.0
则会禁用采样语句持续时间日志记录,与将 log_min_duration_sample
设置为 -1
相同。SET
权限的用户才能更改此设置。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
floating point | 1.0 | 0.0 ~ 1.0 | segments;session;reload;superuser |
设置所有语句都被记录的事务的部分,以及由于其他原因而记录的语句。
0
表示不记录任何额外事务的语句。1
表示记录所有事务的所有语句。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
real | 0.001 | 0.0 ~ 1.0 | segments;session;reload;superuser |
下表解释了 YMatrix 所使用的消息严重级别。如果日志输出被发送到 syslog 或 Windows 的 eventlog,严重级别会按照表中所示进行转换。
严重性 | 用法 | syslog | eventlog |
---|---|---|---|
DEBUG1..DEBUG5 | 为开发者提供连续的更详细的信息 | DEBUG | INFORMATION |
INFO | 提供用户隐式要求的信息,例如来自 VACUUM VERBOSE 的输出 |
INFO | INFORMATION |
NOTICE | 提供可能对用户有用的信息,例如长标识符截断提示 | NOTICE | INFORMATION |
WARNING | 提供可能出现的问题的警告,例如在一个事务块外 COMMIT |
NOTICE | WARNING |
ERROR | 报告一个导致当前命令中断的错误 | WARNING | ERROR |
LOG | 报告管理员可能感兴趣的信息,例如检查点活动 | INFO | INFORMATION |
FATAL | 报告一个导致当前会话中断的错误 | ERR | ERROR |
PANIC | 报告一个导致所有数据库会话中断的错误 | CRIT | ERROR |
Greenplum 的 GPORCA 优化器生成 minidump
文件以描述给定查询的优化上下文。
minidump
文件位于主数据目录下,并使用以下命名格式:Minidump_date_time.mdp
。minidump
文件包含此查询相关信息:always
会为所有查询生成一个 minidump
;将此参数设置为 onerror
以最小化总优化时间。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | onerror | onerror / always | master;session;reload |
设置客户端会话的应用程序名称。
psql
。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | master;session;reload |
缩进调试输出产生更可读但是更长的输出格式。
debug_pretty_print
会缩进由 debug_print_parse
、debug_print_rewritten
或 debug_print_plan
产生的输出。client_min_messages
或者 log_min_messages
必须是 DEBUG1
或者更低。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | master;session;reload |
对于每一个执行的查询,打印出结果分析树。
client_min_messages
或 log_min_messages
必须是 DEBUG1
或者更低。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload |
对于每个执行的查询,打印出 YMatrix 并行查询执行计划。
client_min_messages
或 log_min_messages
必须是 DEBUG1
或者更低。log
信息级别发出,因此默认的,它们会出现在服务器日志中,但不会发送给客户端。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload |
对于每个执行的查询,打印出初步查询计划。
client_min_messages
或 log_min_messages
必须是 DEBUG1
或者更低。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload |
对于每个执行的查询,打印出查询重写输出。
client_min_messages
或 log_min_messages
必须是 DEBUG1
或者更低。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload |
对于每个执行的查询,打印查询分片计划。
client_min_messages
或 log_min_messages
必须是 DEBUG1
或者更低。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload |
在出现 fatal
错误之后,YMatrix 进程保留的时间(秒)。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ 3600 | master;session;reload |
指定服务器日志文件的格式。
gp_toolkit
管理模式,则日志文件必须为 CSV
格式。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | csv | csv / text | segments;system;restart |
控制写入日志文件的有关 YMatrix 数据库 Segment 实例工作进程之间通信的信息量。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | terse | terse / off / verbose / debug | master;session;reload |
如果启用,将在发生致命服务器错误时尝试生成 core 文件。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload |
导致检查点和重启点被记录在服务器日志中。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | segments;system;reload |
这将向服务器日志输出一行,详细说明每个成功的连接。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | segments;system;restart;superuser |
这在客户端会话终止时在服务器日志中输出一行,并包括会话的持续时间。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | segments;system;restart;superuser |
设置为 on
时,此参数将添加一条日志消息,其中包含有关语句分派的详细信息。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | segments;system;restart |
导致记录满足 log_statement
的每个已完成语句的持续时间。
log_duration
和设置 log_min_duration_statement
为 0
之间的区别是:超过 log_min_duration_statement
强制查询的文本被记录,但这个选项不会。因此,如果 log_duration
为 on
并且 log_min_duration_statement
为正值,所有持续时间都将被记录,但是只有超过阈值的语句才会被记录查询文本。这种行为有助于在高负载安装中收集统计信息。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;session;reload;superuser |
控制记录的每条消息在服务器日志中写入的详细信息量。
terse
排除记录 DETAIL、HINT、QUERY 和 CONTEXT 错误信息。verbose messages
输出包括 SQLSTATE 错误码(见附录 A)以及产生错误的源代码文件名、函数名和行号。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | default | terse / default / verbose messages | master;session;reload;superuser |
默认情况下,连接日志消息只显示连接主机的 IP 地址。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | master;system;restart |
这是一个 printf 风格的字符串,它在每个日志行的开头输出。
%
字符开始“转义序列”,它将被按照下文描述的替换成状态信息。未识别的转义被忽略。%
和该选项之间指定一个数字,可以让状态信息左对齐或右对齐。%m [%p]
,即记录时间戳和进程 ID。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | %m [%p] | segments;system;reload |
转义 | 效果 | 只限会话 |
---|---|---|
%a | 应用名 | 是 |
%u | 用户名 | 是 |
%d | 数据库名 | 是 |
%r | 远程主机名或 IP 地址,以及远程端口 | 是 |
%h | 远程主机名或 IP 地址 | 是 |
%p | 进程 ID | 否 |
%t | 无毫秒的时间戳 | 否 |
%m | 带毫秒的时间戳 | 否 |
%n | 带毫秒的时间戳(作为 Unix 时间戳) | 否 |
%i | 命令标签:会话当前命令的类型 | 是 |
%e | SQLSTATE 错误代码 | 否 |
%c | 会话 ID:见下文 | 否 |
%l | 对每个会话或进程的日志行号,从 1 开始 | 否 |
%s | 进程开始的时间戳 | 否 |
%v | 虚拟事务 ID (backendID/localXID) | 否 |
%x | 事务 ID (如果未分配则为 0) | 否 |
%q | 不产生输出,但是告诉非会话进程在字符串的这一点停止;会话进程忽略 | 否 |
%% | 纯文字 % | 否 |
%c
转义打印一个准唯一的会话标识符,它由两个 4 字节的十六进制数(不带先导零)组成,以点号分隔。这些数字是进程启动时间和进程 ID,因此 %c
也可以被用作保存打印这些项的方式的空间。例如,要从pg_stat_activity
生成会话标识符,使用这个查询:
SELECT to_hex(trunc(EXTRACT(EPOCH FROM backend_start))::integer) || '.' ||
to_hex(pid)
FROM pg_stat_activity;
log_line_prefix
设置了非空值,你通常应该让它的最后一个字符为空格,这样用以提供和日志行的剩余部分的视觉区别。也可以使用标点符号。%q
转义很有用。例如:
log_line_prefix = '%m [%p] %q%u@%d/%a '
。控制当一个会话为获得一个锁,等到超过 deadlock_timeout
时,是否要产生一个日志消息。
log lock waits
值需大于等于 deadlock_timeout
。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | segments;session;reload;superuser |
导致每一个复制命令都被记录在服务器日志中。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | segments;session;reload;superuser |
控制记录哪些 SQL 语句。
ddl
记录所有数据定义命令,如 CREATE
,ALTER
和 DROP
命令; mod
记录所有 DDL 语句,以及数据修改语句如 INSERT
,UPDATE
,DELETE
,TRUNCATE
和 COPY FROM
。如果包含的命令属于适当的类型,也会记录 PREPARE
和 EXPLAIN ANALYZE
语句;all
即所有语句。log_statement = all
设置,包含简单语法错误的语句也不会被记录。这是因为只有在完成基本语法解析并确定了语句类型之后才会发出日志消息。在扩展查询协议的情况下,在执行阶段之前(即在解析分析或规划期间)出错的语句也不会被记录。需要将 log_min_error_statement
设置为 ERROR
(或更低)来记录这种语句。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
enum | none | none / ddl / mod / all | master;session;reload;superuser |
控制对临时文件名和大小的记录。
0
,则表示记录所有临时文件信息,而正值只记录大小大于或等于指定数据量的文件。-1
,即禁用日志记录。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | -1 | -1 ~ INT_MAX | segments;system;restart;superuser |
设置用于写入日志的时间戳的时区。
TimeZone
不同,此值是系统范围的,因此所有会话都将一致地报告时间戳。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | Asia/Shanghai | segments;system;restart |
此部分参数控制服务器进程的进程标题如何被修改。进程标题通常可以用 ps
或者 Windows 上的进程浏览器等程序来查看。
为不同目的设置标识这个数据库集群(实例)的名称。此集群名称出现在该集群中所有服务器进程的进程标题中。
数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;restart |
启用进程标题更新,每次服务器接收到一个新的 SQL 命令时都更新进程标题。
on
,但是由于 Windows 上更新进程标题的开销更大,所以在 Windows 这个设置默认为 off
。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | segments;session;reload |