Skip to content

51.2. 归档模块回调#

51.2.1. 启动回调
51.2.2. 检查回调
51.2.3. 归档回调
51.2.4. 关闭回调

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

51.2.1. 启动回调#

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

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

51.2.2. 检查回调#

调用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_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. 关闭回调#

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

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