支援的版本:目前 (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) #

如果啟用,任何錯誤都會終止目前的連線。 預設情況下,此設定為關閉,因此只有 FATAL 錯誤才會終止連線。

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

提交更正

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