walshadow README

The project's README from github.com/ClickHouse/walshadow. As one markdown file: README.md.

walshadow

[!WARNING] Experimental

Project status: Development Preview

walshadow is under active development and being hardened through real-world testing and feedback. We recommend validating it thoroughly with your workloads. Interfaces and behavior may evolve

walshadow replicates PostgreSQL rows into ClickHouse from physical WAL, including initial load, continuous changes, schema evolution, restarts, and planned source switchover

Get Started

PostgreSQL 16 or newer is required. Source and walshadow shadow must use same PostgreSQL major version

Documentation

System design and diagrams live in architecture, unfinished work in plans, and build and test guidance in development. Read source for implementation details

Build from source

Clone repository with recursive submodules, then build Rust workspace and PostgreSQL module

# Clone source plus required pg-clickhouse-c and clickhouse-c submodules
git clone --recurse-submodules https://github.com/ClickHouse/walshadow.git
cd walshadow

# Build release binaries
cargo build --release

# Build and install PostgreSQL module with PGXS
make -C pgext install

Default features include LZ4. Use --no-default-features for uncompressed builds or enable zstd for Zstandard support

Built binaries:

walshadow PostgreSQL module is not an SQL extension. Managed shadow loads it through shared_preload_libraries

Test

# Build PostgreSQL module before integration tests
make -C pgext

# Run test suite and lints
cargo nextest run --workspace --all-targets
cargo clippy --all-targets -- -D warnings

Integration tests require initdb and pg_ctl on PATH

walshadow (ClickHouse/walshadow)

Searching Database…

Что это такое?walshadow реплицирует строки из PostgreSQL в ClickHouse, читая физический WAL — в процесс входят первичная загрузка, непрерывная передача изменений, эволюция схемы, перезапуски и плановое переключение на новый источник.
Что именно я устанавливаю — сервис, утилиту командной строки или библиотеку?В основном это демон репликации walshadow-stream, а также вспомогательные инструменты для фильтрации и классификации WAL. На стороне Postgres он устанавливает модуль, который загружается через shared_preload_libraries — это не обычное SQL-расширение.
Как запустить первую рабочую конфигурацию?Следуйте Quickstart, чтобы поднять PostgreSQL, ClickHouse и walshadow вместе через Docker Compose; если нужно подключиться к базам данных, которые у вас уже работают, воспользуйтесь вместо этого руководством Getting started.
Нужна ли определённая версия PostgreSQL, чтобы всё работало?Да — PostgreSQL 16 или новее, причём walshadow должен работать с той же мажорной версией PostgreSQL, что и база-источник.
Можно ли использовать это в продакшене?Пока нет — это экспериментальный Development Preview, который активно разрабатывается и укрепляется; интерфейсы и поведение могут меняться, поэтому тщательно проверяйте его на своих рабочих нагрузках.
Для чего нужны вспомогательные утилиты walshadow-filter и walshadow-classify?walshadow-filter фильтрует офлайн-файлы WAL на уровне сегментов, а walshadow-classify классифицирует отдельные записи — это диагностические помощники, которые поставляются вместе с основным демоном walshadow-stream.
Сжимает ли он реплицируемые данные?Да — сборки по умолчанию используют сжатие LZ4, можно включить zstd (Zstandard) или собрать с --no-default-features для работы без сжатия.
Как он справляется с изменениями схемы и перезапусками?Эволюция схемы, перезапуски и плановое переключение на новый источник — явные части процесса репликации, и для каждой из них есть отдельная страница документации, а не надежда на смекалку пользователя.
Можно ли реплицировать только некоторые таблицы или несколько баз данных?Да — документация описывает выбор таблиц, несколько баз-источников и настройку таблиц на принимающей стороне, так что выборочная репликация и репликация нескольких баз — поддерживаемые сценарии.
Creator
ClickHouse
Size
6.5 MB
Stars
242
Age
4mo
Commits · 90 Days