Postgresql 中文操作指南

51.2. Archive Module Callbacks #

归档回调定义了模块的实际归档行为。服务器将根据需要调用它们来处理每个单独的 WAL 文件。

51.2.1. Startup Callback #

模块加载后不久便会调用 startup_cb 回调。此回调用于执行所需的任何其他初始化。如果存档模块具有任何状态,它可以使用 state→private_data 来存储它。

typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);

51.2.2. Check Callback #

调用 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 时存档才会继续。

51.2.3. Archive Callback #

调用 archive_file_cb 回调来存档单个 WAL 文件。

typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);

如果返回 true ,服务器将继续操作,就好像该文件已成功存档一样,其中可能包括回收或删除原始 WAL 文件。如果返回 false ,服务器将保留原始 WAL 文件并稍后再尝试存档。file 将仅包含要存档的 WAL 文件的文件名,而 path 将包含 WAL 文件的完整路径(包括文件名)。

51.2.4. Shutdown Callback #

在存档进程退出时(例如,在错误出现后)或 archive_library 的值发生改变时,会调用 shutdown_cb 回调。如果没有定义 shutdown_cb ,则在这些情况下不会执行任何特殊操作。如果存档模块有任何状态,则此回调应释放它以避免泄漏。

typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);