On this page
19.17. 开发人员选项
以下参数旨在用于 PostgreSQL 源代码,并且在某些情况下有助于恢复严重受损的数据库。应该没有理由在生产数据库上使用它们。因此,它们已从示例postgresql.conf
文件中排除。请注意,这些参数中的许多参数都需要特殊的源代码编译标志才能完全起作用。
allow_system_table_mods
(boolean
)- 允许修改系统表的结构。由
initdb
使用。该参数只能在服务器启动时设置。
- 允许修改系统表的结构。由
ignore_system_indexes
(boolean
)- 读取系统表时忽略系统索引(但在修改表时仍会更新索引)。从损坏的系统索引中恢复时,这很有用。会话启动后无法更改此参数。
-
- 如果不为零,则在执行身份验证过程之后,启动新的服务器进程时,会发生许多秒的延迟。目的是使开发人员有机会使用调试器附加到服务器进程。会话启动后无法更改此参数。
-
- 如果不为零,那么在新的服务器进程被派生之后,在执行身份验证过程之前,会发生这么多秒的延迟。目的是使开发人员有机会使用调试器附加到服务器进程,以跟踪身份验证中的不良行为。此参数只能在
postgresql.conf
文件或服务器命令行中设置。
- 如果不为零,那么在新的服务器进程被派生之后,在执行身份验证过程之前,会发生这么多秒的延迟。目的是使开发人员有机会使用调试器附加到服务器进程,以跟踪身份验证中的不良行为。此参数只能在
-
- 为
LISTEN
和NOTIFY
命令生成大量调试输出。 client_min_messages或log_min_messages必须为DEBUG1
或更低,才能将此输出分别发送到 Client 端或服务器日志。
- 为
trace_recovery_messages
(enum
)- 启用与恢复相关的调试输出的日志记录,否则将不会记录。此参数允许用户覆盖log_min_messages的常规设置,但仅适用于特定消息。这旨在用于调试热备用。有效值为
DEBUG5
,DEBUG4
,DEBUG3
,DEBUG2
,DEBUG1
和LOG
。默认值LOG
完全不影响日志记录决策。其他值导致优先级或更高的与恢复相关的调试消息被记录下来,就好像它们具有LOG
优先级;对于log_min_messages
的常规设置,这将导致无条件地将它们发送到服务器日志。此参数只能在postgresql.conf
文件或服务器命令行中设置。
- 启用与恢复相关的调试输出的日志记录,否则将不会记录。此参数允许用户覆盖log_min_messages的常规设置,但仅适用于特定消息。这旨在用于调试热备用。有效值为
-
- 如果启用,则在排序操作期间发出有关资源使用情况的信息。仅当在编译 PostgreSQL 时定义了
TRACE_SORT
宏时,此参数才可用。 (但是,默认情况下当前定义了TRACE_SORT
.)
- 如果启用,则在排序操作期间发出有关资源使用情况的信息。仅当在编译 PostgreSQL 时定义了
-
- 如果启用,则发出有关锁使用情况的信息。转储的信息包括锁定操作的类型,锁定的类型以及被锁定或解锁的对象的唯一标识符。还包括此对象已授予的锁定类型以及此对象已 await 的锁定类型的位掩码。对于每种锁类型,也会转储授予的锁和 await 的锁的数量以及总数。此处显示了日志文件输出的示例:
LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(AccessShareLock)
LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1
wait(0) type(AccessShareLock)
LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(AccessShareLock)
LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
wait(0) type(INVALID)
可以在src/include/storage/lock.h
中找到要转储的结构的详细信息。
仅当在编译 PostgreSQL 时定义了LOCK_DEBUG
宏时,此参数才可用。
仅当在编译 PostgreSQL 时定义了LOCK_DEBUG
宏时,此参数才可用。
仅当在编译 PostgreSQL 时定义了LOCK_DEBUG
宏时,此参数才可用。
仅当在编译 PostgreSQL 时定义了LOCK_DEBUG
宏时,此参数才可用。
仅当在编译 PostgreSQL 时定义了LOCK_DEBUG
宏时,此参数才可用。
仅当在编译 PostgreSQL 时定义了LOCK_DEBUG
宏时,此参数才可用。
仅当在编译 PostgreSQL 时定义了BTREE_BUILD_STATS
宏时,此参数才可用。
wal_consistency_checking
(string
)- 该参数用于检查 WAL 重做例程中的错误。启用后,将与 WAL 记录一起修改的所有缓冲区的全页图像添加到该 Logging。如果随后重放记录,则系统将首先应用每个记录,然后测试记录修改的缓冲区是否与存储的图像匹配。在某些情况下(例如提示位),较小的变化是可以接受的,并且将被忽略。任何意外的差异都将导致致命错误,从而终止恢复。
此设置的默认值为空字符串,该字符串将禁用该功能。可以将其设置为all
以检查所有记录,也可以将其设置为以逗号分隔的资源 Management 器列表以仅检查源自那些资源 Management 器的记录。当前,受支持的资源 Management 器是heap
,heap2
,btree
,hash
,gin
,gist
,sequence
,spgist
,brin
和generic
。只有超级用户可以更改此设置。
-
- 如果启用,则发出与 WAL 相关的调试输出。仅当在编译 PostgreSQL 时定义了
WAL_DEBUG
宏时,此参数才可用。
- 如果启用,则发出与 WAL 相关的调试输出。仅当在编译 PostgreSQL 时定义了
ignore_checksum_failure
(boolean
)- 仅在启用data checksums时有效。
在读取期间检测到校验和失败通常会导致 PostgreSQL 报告错误,从而中止当前事务。将ignore_checksum_failure
设置为 on 将导致系统忽略故障(但仍报告警告),并 continue 处理。此行为可能导致崩溃,传播或隐藏损坏或其他严重问题。但是,它可以使您克服错误并检索未损坏的 Tuples,如果块头仍然健全,则该 Tuples 可能仍存在于表中。如果标题损坏,即使启用此选项,也会报告错误。默认设置为off
,并且只能由超级用户更改。
zero_damaged_pages
(boolean
)- 检测到损坏的页眉通常会导致 PostgreSQL 报告错误,从而中止当前事务。将
zero_damaged_pages
设置为 on 将导致系统报告警告,将内存中损坏的页面清零,然后 continue 处理。这种行为将破坏数据,即损坏页面上的所有行。但是,它确实允许您克服错误并从表中可能存在的任何未损坏页面中检索行。如果由于硬件或软件错误而发生损坏,它对于恢复数据很有用。通常,除非您已经放弃从表的损坏页面中恢复数据的希望,否则不应该将其设置为 on。调零的页面不会强制插入磁盘,因此建议在重新关闭此参数之前重新创建表或索引。默认设置为off
,并且只能由超级用户更改。
- 检测到损坏的页眉通常会导致 PostgreSQL 报告错误,从而中止当前事务。将