Article

WAL-RUS: ClickHouse schreibt Postgres-Backups in Rust neu

PostgreSQL Rust Backup WAL-G ClickHouse Infrastructure

ClickHouse Cloud hat WAL-RUS vorgestellt, eine Open-Source-Rust-Implementierung für PostgreSQL-Backups und WAL-Archivierung. Das Tool wurde entwickelt, um ein spezifisches Problem zu lösen: Speichervorhersagbarkeit in ressourcenbeschränkten Umgebungen.

Das Problem mit WAL-G

WAL-G ist in Go geschrieben – einer Sprache mit Garbage Collection. Während Go zuverlässige Infrastruktur-Software erleichtert, macht der Garbage Collector die Speichernutzung schwer vorhersehbar, besonders für langlaufende Services wie WAL-Archivierung.

Das Problem ist nicht nur der resident memory, sondern auch virtual memory. Go’s Runtime reserviert oft deutlich mehr virtuellen Speicher als aktiv genutzt wird. Der “Sägezahn”-Effekt führt zu schwankenden Speicherprofilen, die Kapazitätsplanung erschweren.

WAL-RUS: Die Lösung

WAL-RUS bietet vier entscheidende Vorteile:

  1. Vorhersagbare Ressourcennutzung: Rust ermöglicht direkte Kontrolle über Speicherallokation und Nebenläufigkeit mit begrenzten Worker-Pools
  2. Daemon-Architektur: Persistente Object-Storage-Verbindungen statt Prozesse pro WAL-Datei
  3. Streaming-Optimierung: Minimale Pufferung und Datenkopien im Pipeline
  4. WAL-G-Kompatibilität: Gleiche Konfigurationsvariablen, wechselseitige Lesbarkeit von Archiven

Benchmarks

In Tests erreichte WAL-G fast 2,8 GB virtuellen Speicher, während WAL-RUS unter 1 GB blieb – eine Reduktion von über 70%. WAL-RUS zeigte zudem ein stabiles Speicherprofil während des gesamten Testlaufs.

Der Durchsatz war vergleichbar mit WAL-G, und die CPU-Auslastung lag bei allen drei getesteten Tools (WAL-RUS, WAL-G, pgBackRest) auf ähnlichem Niveau, primär für LZ4-Kompression.

Fazit

WAL-RUS adressiert ein praktisches Problem: zuverlässige PostgreSQL-Backups mit kleinerem, vorhersagbarem Ressourcen-Footprint. Die WAL-G-Kompatibilität macht die Migration für bestehende Deployments unkompliziert. ClickHouse plant, WAL-RUS als Standard-Backup-Mechanismus für ihr Managed-Postgres-Angebot einzusetzen.


Quelle: ClickHouse Blog