↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1
预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。

19.14. 错误处理 #

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 设置快得多,因为它不需要逐个打开每个文件。另一方面,如果一个文件系统是被其他需要修改大量文件的应用程序共享的,它可能会慢一些,因为这些文件也将写入磁盘。此外,在 5.8 之前的 Linux 版本中,向磁盘写入数据时遇到的 I/O 错误可能不会报告给 PostgreSQL,相关的错误消息可能只出现在内核日志中。

这个参数只能在 postgresql.conf 文件中或者服务器命令行中设置。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.