MaterializedPostgreSQL
Пользователям ClickHouse Cloud рекомендуется использовать ClickPipes для репликации PostgreSQL в ClickHouse. Это изначально поддерживает высокопроизводительное захватывание данных о изменениях (CDC) для PostgreSQL.
Создает таблицу ClickHouse с первоначальной выгрузкой данных из таблицы PostgreSQL и запускает процесс репликации, т.е. выполняет фоновую задачу для применения новых изменений по мере их появления в таблице PostgreSQL в удаленной базе данных PostgreSQL.
Этот движок таблицы является экспериментальным. Чтобы использовать его, установите allow_experimental_materialized_postgresql_table
в 1 в ваших конфигурационных файлах или с помощью команды SET
:
Если требуется более одной таблицы, настоятельно рекомендуется использовать движок базы данных MaterializedPostgreSQL вместо движка таблицы и использовать настройку materialized_postgresql_tables_list
, которая указывает таблицы для репликации (также будет возможно добавить схему
базы данных). Это будет гораздо лучше с точки зрения ЦП, меньшего количества подключений и меньшего количества слотов репликации внутри удаленной базы данных PostgreSQL.
Создание таблицы
Параметры движка
host:port
— адрес сервера PostgreSQL.database
— имя удаленной базы данных.table
— имя удаленной таблицы.user
— пользователь PostgreSQL.password
— пароль пользователя.
Требования
-
Параметр wal_level должен иметь значение
logical
, а параметрmax_replication_slots
должен иметь значение не менее2
в конфигурационном файле PostgreSQL. -
Таблица с движком
MaterializedPostgreSQL
должна иметь первичный ключ — такой же, как индекс идентичности реплики (по умолчанию: первичный ключ) таблицы PostgreSQL (см. детали о реплике идентичности). -
Разрешена только база данных Atomic.
-
Движок таблицы
MaterializedPostgreSQL
работает только для версий PostgreSQL >= 11, поскольку реализация требует функции PostgreSQL pg_replication_slot_advance.
Виртуальные колонки
-
_version
— Счетчик транзакций. Тип: UInt64. -
_sign
— Метка удаления. Тип: Int8. Возможные значения:1
— Строка не удалена,-1
— Строка удалена.
Эти колонки не нужно добавлять при создании таблицы. Они всегда доступны в запросе SELECT
.
Колонка _version
равна позиции LSN
в WAL
, поэтому ее можно использовать для проверки актуальности репликации.
Репликация значений TOAST не поддерживается. Будет использовано значение по умолчанию для типа данных.