19.14. 错误处理

  • exit_on_error ( boolean )

    • 如果为 true,则任何错误将终止当前会话。默认情况下,将其设置为 false,以便只有 FATAL 错误将终止会话。
  • restart_after_crash ( boolean )

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

    • 如果设置为 false(默认值),则 PostgreSQL 在将修改后的数据文件刷新到文件系统失败时将引发 PANIC 级别的错误。这将导致数据库服务器崩溃。该参数只能在服务器启动时设置。

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

如果设置为 true,PostgreSQL 将改为报告错误,但会 continue 运行,以便可以在以后的检查点中重试数据刷新操作。仅在调查 os 对缓冲数据的处理以防回写失败的情况下,才将其设置为 true。