归档回调定义了模块的实际归档行为。服务器将根据需要调用它们来处理每个单独的 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);
如果您发现文档中的任何内容不正确,与您使用特定功能的经验不符,或需要进一步澄清,请使用此表单报告文档问题。