PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

49.2. 归档模块回调接口 #

49.2.1. 启动回调(Startup Callback)
49.2.2. 健康与就绪检查回调(Check Callback)
49.2.3. 文件归档回调(Archive Callback)
49.2.4. 注销与销毁回调(Shutdown Callback)

归档回调函数定义了模块具体的物理归档执行逻辑:

49.2.1. 启动回调(Startup Callback) #

在模块刚被载入后立即被系统调用,用于执行连接远端存储池等前置初始化操作:

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

49.2.2. 健康与就绪检查回调(Check Callback) #

由归档进程定期调用,用于判定当前模块的配置参数是否完整且已就绪接纳新 WAL 文件:

typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);

若返回 true,服务继续调用 archive_file_cb;若返回 false,归档暂停并在日志中打印告警,待后续检测返回成功后自动恢复。

49.2.3. 文件归档回调(Archive Callback) #

负责处理单个 WAL 段文件的核心业务归档逻辑:

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

参数 file 是待归档文件的短文件名,而 path 是其在磁盘上的完整物理路径。函数返回 true 表明该文件已成功落盘至归档存储;若返回 false 或抛出异常,服务端会保留原始 WAL 段文件并在稍后自动重试。

49.2.4. 注销与销毁回调(Shutdown Callback) #

当归档进程退出或动态切换配置库时被调用,用于优雅释放网络连接与缓存资源:

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