归档回调函数定义了模块具体的物理归档执行逻辑:
在模块刚被载入后立即被系统调用,用于执行连接远端存储池等前置初始化操作:
typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);
由归档进程定期调用,用于判定当前模块的配置参数是否完整且已就绪接纳新 WAL 文件:
typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);
若返回 true,服务继续调用 archive_file_cb;若返回 false,归档暂停并在日志中打印告警,待后续检测返回成功后自动恢复。
负责处理单个 WAL 段文件的核心业务归档逻辑:
typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);
参数 file 是待归档文件的短文件名,而 path 是其在磁盘上的完整物理路径。函数返回 true 表明该文件已成功落盘至归档存储;若返回 false 或抛出异常,服务端会保留原始 WAL 段文件并在稍后自动重试。
当归档进程退出或动态切换配置库时被调用,用于优雅释放网络连接与缓存资源:
typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);