↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15
开发中的版本: 19 / 20devel

第 51 章 归档模块

PostgreSQL 提供了用于为持续归档创建自定义模块的基础设施(见第 26.3 节)。虽然通过 shell 命令进行归档(也就是 archive_command)要简单得多,但自定义归档模块通常会显著更加健壮,性能也更好。

配置了自定义 archive_library 之后,PostgreSQL 会把已完成的 WAL 文件提交给该模块,而在模块表明这些文件已经成功归档之前,服务器会避免回收或移除这些 WAL 文件。至于如何处理每个 WAL 文件,最终由模块自行决定,不过第 26.3.1 节中列出了许多建议。

归档模块至少必须包含一个初始化函数(见第 51.1 节)以及所需的回调函数(见第 51.2 节)。不过,归档模块也可以做更多事情,例如声明 GUC 或注册后台工作进程。

contrib/basic_archive 模块包含一个可运行的示例,展示了一些有用的技巧。

51.1. 初始化函数 #

归档库是通过动态加载共享库的方式载入的,该共享库以 archive_library 指定的名称作为库基名。定位该库时使用常规的库搜索路径。为了提供所需的归档模块回调,并表明该库确实是一个归档模块,它需要提供一个名为_PG_archive_module_init 的函数。该函数接收一个需要用各个操作的回调函数指针来填充的结构体。

typedef struct ArchiveModuleCallbacks
{
    ArchiveCheckConfiguredCB check_configured_cb;
    ArchiveFileCB archive_file_cb;
    ArchiveShutdownCB shutdown_cb;
} ArchiveModuleCallbacks;
typedef void (*ArchiveModuleInit) (struct ArchiveModuleCallbacks *cb);

只有 archive_file_cb 回调是必需的,其余回调都是可选的。

报告文档问题

阅读 上游文档. 通过 PostgreSQL 文档反馈表单.