exit_on_error
(boolean
)
#如果为开(on),任何错误将中止当前会话。默认情况下,这个值被设置为关(off),这样只有 FATAL 错误(致命)将中止会话。
restart_after_crash
(boolean
)
#当被设置为开(on),PostgreSQL将在一次后端崩溃后自动重新初始化。 让这个值设置为开(on)通常是将数据库可用性最大化的最佳方法。但是在某些环境中,例如PostgreSQL被集群软件调用时,禁用重启可能很有用,这样集群软件可以得到控制并且采取它认为适当的行动。
这个参数只能在postgresql.conf
文件中或通过服务器命令行进行设置。
data_sync_retry
(boolean
)
#如果设置为关(off),PostgreSQL在将修改的数据文件刷新到文件系统失败时,将引发PANIC级错误。 这样会导致数据库服务器崩溃。这个参数只能在服务器启动时被设置。
在某些操作系统上,回写失败后,内核页面缓存中的数据状态未知。 在某些情况下,它可能已被完全遗忘,因此重试不安全;第二次尝试可能报告为成功,而事实上数据已丢失。在此类情形下,避免数据丢失的唯一方法是在报告任何故障后从WAL中恢复,最好是在调查了故障的根本原因并更换了任何有故障的硬件之后。
如果设置为开(on),PostgreSQL将报告错误,但会继续运行,以便可以在以后的检查点中重试数据刷新操作。 仅在调查操作系统假如回写失败时对缓冲数据的处理方式的情况下,才将其设置为开(on)。
recovery_init_sync_method
(enum
)
#
当设置为fsync
,也就是默认值,PostgreSQL将在崩溃恢复开始之前递归地打开并同步数据目录中的所有文件。
对文件的搜索将遵循WAL目录和每个配置表空间的符号链接(而不是任何其它符号链接)。
这是为了确保在重现更改之前,所有WAL和数据文件都持久地存储在硬盘上。
这适用于在启动没有完全关闭的数据库集群时,包括由pg_basebackup创建的副本。
在 Linux 上,可以改用 syncfs
,请求操作系统同步包含数据目录、
WAL 文件和每个表空间的文件系统(但不包括通过符号链接可访问的其他文件系统)。
这可能比 fsync
设置快得多,因为它不需要逐个打开每个文件。
另一方面,如果文件系统被其他修改大量文件的应用程序共享,可能会更慢,
因为这些文件也会被写入磁盘。此外,在 Linux 5.8 之前的版本中,写入磁盘时遇到的
I/O 错误可能不会报告给 PostgreSQL,相关错误信息
可能只会出现在内核日志中。
这个参数只能在postgresql.conf
文件中或者服务器命令行中设置。