
问题所在Postgres 备份在 ClickHouse Cloud 中至关重要WAL 归档是保持数据持久性和可恢复性的关键。WAL - G 一直是可靠工具但将 Postgres 部署到资源更紧张环境时遇到内存使用可预测性问题。WAL - G 用 Go 语言编写其垃圾回收运行时使内存使用难以预测包括常驻内存和虚拟内存。Go 的运行时管理内存池可能预留比实际使用量多得多的虚拟内存内存占用随工作负载变化波动呈“锯齿”模式这让运维人员难以预测峰值内存消耗和有效分配资源通常需预留更多内存影响 Postgres 本身资源分配。解决方案引入 WAL - RUS开发 WAL - RUS 并非寻求新功能而是为在保持核心功能和兼容性的同时提供更可预测的资源使用情况。WAL - RUS 是用 Rust 实现的 Postgres 备份和 WAL 归档工具具有可预测的资源使用使用有界工作线程池和精心控制的并发使内存消耗更易理解专为连续 WAL 归档设计采用 WAL - G 的守护进程架构维护持久对象存储连接针对流式工作负载优化减少不必要的缓冲和数据复制与 WAL - G 兼容使用相同的 WALG_ 配置变量可互相读取归档便于现有部署迁移。基准测试为评估 WAL - RUS构建了可重现的基准测试在持续的、WAL 密集型 PostgreSQL 工作负载下比较 WAL - RUS、WAL - G 和 pgBackRest。内存使用方面WAL - G 峰值虚拟内存接近 2.8 GBWAL - RUS 始终低于 1 GB减少超 70%且 WAL - RUS 内存使用稳定pgBackRest 对内存分配控制严格。WAL 归档吞吐量上WAL - RUS 和 WAL - G 能跟上工作负载生成速度pgBackRest 在 WAL 活动高峰期积压较大。CPU 利用率方面三者相当主要用于计算 LZ4 压缩。总结与结论WAL - RUS 开发旨在以更小、更可预测的资源占用提供可靠的 PostgreSQL 备份和 WAL 归档。结合 Rust 的显式内存管理与守护进程流式架构在实现与 WAL - G 相当的归档吞吐量时显著降低内存消耗。WAL - RUS 与现有 WAL - G 归档和配置完全兼容还支持使用 Postgres 17 的 WAL 摘要进行增量备份正在努力将此功能上游集成到 WAL - G。未来计划将 WAL - RUS 作为 ClickHouse Cloud 中托管 Postgres 服务的默认备份和 WAL 归档机制该项目开源欢迎反馈、测试和贡献。此外ClickHouse Postgres 成为可扩展应用程序的统一数据栈托管 Postgres 服务在 ClickHouse Cloud 可用可立即注册试用。