2024 年 9 月 26 日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1

19.14. 错误处理 #

exit_on_error (布尔值) #

如果打开,任何错误都会终止当前会话。默认情况下,此值设置为关闭,因此只有致命错误才会终止会话。

restart_after_crash (布尔值) #

当设置为打开时(默认情况下),PostgreSQL会在后端崩溃后自动重新初始化。通常,将此值设置为打开是最大限度提高数据库可用性的最佳方法。但是,在某些情况下(例如,当PostgreSQL被集群软件调用时),禁用重启可能很有用,以便集群软件可以获得控制并采取任何它认为适当的措施。

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

data_sync_retry (布尔值) #

当设置为关闭时(默认情况下),PostgreSQL将在无法将修改后的数据文件刷新到文件系统时引发一个 PANIC 级别的错误。这会导致数据库服务器崩溃。此参数只能在服务器启动时设置。

在某些操作系统上,在写入回写失败后,内核页缓存中数据的状态未知。在某些情况下,它可能已被完全遗忘,因此重新尝试不安全;第二次尝试可能会报告为成功,而实际上数据已丢失。在这些情况下,避免数据丢失的唯一方法是在报告任何失败后从 WAL 中恢复,最好是在调查失败的根本原因并更换任何故障硬件后进行恢复。

如果设置为打开,PostgreSQL将报告错误,但会继续运行,以便稍后在检查点中重试数据刷新操作。只有在调查操作系统在写入回写失败情况下对缓冲数据的处理方式后,才将其设置为打开。

recovery_init_sync_method (枚举) #

当设置为fsync时(默认情况下),PostgreSQL会在崩溃恢复开始之前递归打开并同步数据目录中的所有文件。文件搜索将遵循 WAL 目录和每个配置的表空间的符号链接(但不遵循任何其他符号链接)。这样做的目的是确保在重放更改之前,所有 WAL 和数据文件都持久地存储在磁盘上。这适用于启动没有干净关闭的数据库集群的任何时候,包括使用pg_basebackup创建的副本。

在 Linux 上,可以改用syncfs,要求操作系统同步包含数据目录、WAL 文件和每个表空间的文件系统(但不同步可能通过符号链接访问的任何其他文件系统)。这可能比fsync设置快得多,因为它不需要逐个打开每个文件。另一方面,如果文件系统被修改大量文件的其他应用程序共享,则可能更慢,因为这些文件也将写入磁盘。此外,在 5.8 之前的 Linux 版本中,在将数据写入磁盘时遇到的 I/O 错误可能不会报告给PostgreSQL,相关的错误消息可能只出现在内核日志中。

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

提交更正

如果您在文档中发现任何不正确的内容,不符合您对特定功能的体验,或者需要进一步说明,请使用此表格报告文档问题。