WAL-RUS: переписание WAL-G на Rust для Postgres-резервных копий

WAL-RUS: переписание WAL-G на Rust для Postgres-резервных копий

ClickHouse Cloud столкнулась с проблемой предсказуемости памяти при использовании WAL-G (Go-инструмента для архивирования Write-Ahead Log Postgres). Go-сборщик мусора вызывает непредсказуемые скачки виртуальной памяти, между циклами сборки память растёт, потом падает (паттерн «пила»). Это затрудняет выделение ресурсов в плотно упакованных средах: память, зарезервированная для WAL-архива, не может быть выделена Postgres, что снижает надёжность.

В ответ ClickHouse написала WAL-RUS на Rust с явным управлением памятью и демон-архитектурой вместо спауна нового процесса на каждый WAL-файл. Во время теста на интенсивной рабочей нагрузке WAL-RUS потребовала менее 1 ГБ виртуальной памяти (70% экономия против WAL-G: 2,8 ГБ), стабильный профиль, одинаковая пропускная способность. Инструмент полностью совместим с WAL-G: использует те же переменные конфигурации (WALG_*), может читать архивы, созданные WAL-G, и наоборот. WAL-RUS также поддерживает Postgres 17 WAL summaries для инкрементальных резервных копий, функция в процессе добавления в WAL-G.

Проект открытый, ClickHouse планирует сделать его стандартным инструментом для Managed Postgres в ClickHouse Cloud.

Ключевые факты

  • WAL-RUS снизила пиковое потребление виртуальной памяти на 70% (менее 1 ГБ вместо 2,8 ГБ WAL-G) при идентичной пропускной способности архивирования
  • Rust даёт явное управление памятью и предсказуемый профиль, в отличие от паттернов виртуальной памяти Go («пила» между сборками мусора)
  • Демон-архитектура с постоянными соединениями S3 вместо спауна процесса на файл сокращает накладные расходы
  • Полная обратная совместимость с WAL-G: одни конфигурационные переменные, архивы читаются взаимно, миграция стандартна
  • Поддержка Postgres 17 WAL summaries для инкрементальных резервных копий (в процессе добавления в WAL-G)

Почему это важно

Резервные копии и архивирование WAL, критическая инфраструктура для Postgres. В плотно упакованных облачных средах каждый МБ памяти ценен. Непредсказуемое потребление виртуальной памяти вынуждает выделять избыток, что снижает надёжность Postgres. WAL-RUS решает главный операционный вызов: как гарантировать архивирование без перепроизводства ресурсов.

Кому это важно

Операторам Postgres в облаке (особенно ClickHouse Cloud и другие managed сервисы), инженерам, работающим в resource-constrained окружениях (Kubernetes, edge, embedded), администраторам, которые настраивают capacity planning и нуждаются в предсказуемых профилях потребления.

Как это применить

Для существующих развёртываний WAL-G можно перейти на WAL-RUS без изменения конфигурации (переменные среды WALG_* работают как есть). Новые развёртывания могут выбрать WAL-RUS напрямую. Код открыт, установка через стандартные способы (GitHub releases или package managers). ClickHouse тестирует WAL-RUS на своих Postgres-сервисах в ClickHouse Cloud.

Можно ли доверять

Источник, официальный блог ClickHouse, компании, которая хостирует ClickHouse Cloud на Postgres и имеет заинтересованность в надёжности. Бенчмарки проведены в-доме на воспроизводимой рабочей нагрузке (WAL-heavy, 4 concurrent workers). Замеры понятны: виртуальная память, пропускная способность, утилизация CPU. WAL-G остаётся боевым инструментом, WAL-RUS, новый вариант с другим компромиссом (память vs разработка/экосистема).

Риски и подводные камни

WAL-RUS, относительно молодой проект (выпущен ClickHouse). Хотя он протестирован на совместимость с WAL-G и используется в ClickHouse Cloud, в боевых средах других организаций может быть меньше опыта. Go-язык WAL-G дал ему большое сообщество; Rust-вариант нужно протестировать в вашем окружении перед полной миграцией. CPU-утилизация примерно одна и та же (сжатие LZ4), поэтому экономия только по памяти, не по ЦПУ.

«Мы не искали новую функциональность. WAL-G, зрелая и надёжная система резервного копирования, которой мы рады способствовать. Наша цель была сохранить основную функциональность и совместимость, обеспечивая более предсказуемый профиль ресурсов.»

— ClickHouse блог, статья о WAL-RUS