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
设置快很多,因为它无需逐个打开每个文件。另一方面,如果某个文件系统被大量修改文件的其他应用程序共享,那它可能就更慢,因为这些文件也会写入到磁盘中。此外,在 Linux 5.8 之前的版本中,向磁盘中写入数据时遇到的 I/O 错误可能不会报告给 PostgreSQL,相关错误消息可能仅显示在内核日志中。
此参数只能在 postgresql.conf
文件或服务器命令行中设置。