歸檔回撥定義了模組實際的歸檔行為。伺服器會在需要時呼叫它們來處理每個單獨的 WAL 檔案。
當模組載入後不久,會呼叫 startup_cb
回撥。此回撥可用於執行任何額外的初始化。如果歸檔模組有任何狀態,可以使用 state->private_data
來儲存它。
typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);
呼叫 check_configured_cb
回撥來確定模組是否已完全配置並準備好接受 WAL 檔案(例如,其配置引數是否設定為有效值)。如果沒有定義 check_configured_cb
,伺服器將始終假定模組已配置。
typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);
如果返回 true
,伺服器將透過呼叫 archive_file_cb
回撥來繼續歸檔檔案。如果返回 false
,則不會進行歸檔,並且歸檔器會向伺服器日誌發出以下訊息
WARNING: archive_mode enabled, yet archiving is not configured
在後一種情況下,伺服器將定期呼叫此函式,並且只有當它返回 true
時才會進行歸檔。
當返回 false
時,將一些額外資訊附加到通用警告訊息可能會很有用。為此,在返回 false
之前,透過 arch_module_check_errdetail
宏提供一條訊息。與 errdetail()
一樣,此宏接受一個格式字串,後跟一個可選的引數列表。生成的字串將作為警告訊息的 DETAIL
行發出。
呼叫 archive_file_cb
回撥來歸檔單個 WAL 檔案。
typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);
如果返回 true
,伺服器將繼續執行,就好像檔案已成功歸檔一樣,這可能包括回收或刪除原始 WAL 檔案。如果返回 false
或丟擲錯誤,伺服器將保留原始 WAL 檔案並在稍後重試歸檔。file
只包含要歸檔的 WAL 檔案的檔名,而 path
包含 WAL 檔案的完整路徑(包括檔名)。
archive_file_cb
回撥在一個短暫的記憶體上下文中被呼叫,該上下文將在每次呼叫之間重置。如果您需要更長期的儲存,請在模組的 startup_cb
回撥中建立一個記憶體上下文。
當歸檔程序退出(例如,在發生錯誤後)或 archive_library 的值發生更改時,將呼叫 shutdown_cb
回撥。如果沒有定義 shutdown_cb
,則在這些情況下不會採取特殊操作。如果歸檔模組有任何狀態,此回撥應釋放它以避免記憶體洩漏。
typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);
如果您在文件中發現任何不正確之處,與您對特定功能的體驗不符,或者需要進一步澄清,請使用 此表單 報告文件問題。