2024年9月26日:PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15
开发版本:开发版

49.2. 归档模块回调 #

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

49.2.1. 启动回调 #

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

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

49.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时,归档才会继续。

注意

在返回false时,将一些其他信息附加到通用警告消息可能很有用。为此,在返回false之前,向arch_module_check_errdetail宏提供一条消息。与errdetail()类似,此宏接受一个格式字符串,后跟一个可选的参数列表。生成的字符串将作为警告消息的DETAIL行发出。

49.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文件的完整路径(包括文件名)。

注意

在短暂存在的内存上下文中调用archive_file_cb回调,该上下文将在调用之间重置。如果您需要更持久的存储,请在模块的startup_cb回调中创建一个内存上下文。

49.2.4. 关闭回调 #

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

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

提交更正

如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符的内容或需要进一步澄清的内容,请使用此表单报告文档问题。