支援的版本:目前版本 (17) / 16 / 15 / 14 / 13
開發版本:devel
不再支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1

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 檔案或伺服器命令列上設定。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。