Postgresql 中文操作指南

20.14. Error Handling #

  • exit_on_error (boolean) #

    • 如果为“开”,则任何错误都将终止当前会话。默认情况下,此项设置为“关”,因此仅致命错误将终止会话。

  • restart_after_crash (boolean) #

    • 在设置为开时(这是默认设置),PostgreSQL 在后台崩溃后将自动重新初始化。保持此值设置为开通常是最大化数据库可用性的最佳方式。但是,在某些情况下(例如当 PostgreSQL 由群集软件调用时),可能需要禁用重启,以便群集软件可以获得控制权,并采取它认为适当的任何操作。

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

  • data_sync_retry (boolean) #

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

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

    • 如果设置为开,PostgreSQL 将改而报告错误,但继续运行,以便以后检查点中可以重试数据刷新操作。仅在调查操作系统在回写失败时处理缓冲数据的情况后将其设置为开。

  • recovery_init_sync_method (enum) #

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

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

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