MaterializedPostgreSQL
Пользователям ClickHouse Cloud рекомендуется использовать ClickPipes для репликации PostgreSQL в ClickHouse. Это нативно поддерживает высокопроизводительное захватывание изменений данных (CDC) для PostgreSQL.
Создает таблицу ClickHouse с первоначальной выгрузкой данных из таблицы PostgreSQL и запускает процесс репликации, т.е. выполняет фоновые задания для применения новых изменений по мере их появления в таблице PostgreSQL в удаленной базе данных PostgreSQL.
Этот движок таблиц является экспериментальным. Чтобы использовать его, установите allow_experimental_materialized_postgresql_table
в 1 в ваших файлах конфигурации или с помощью команды SET
:
Если требуется больше одной таблицы, настоятельно рекомендуется использовать движок базы данных MaterializedPostgreSQL вместо движка таблиц и использовать настройку materialized_postgresql_tables_list
, которая указывает, какие таблицы будут реплицироваться (также будет возможным добавить schema
базы данных). Это будет намного лучше с точки зрения CPU, меньше соединений и меньше слотов репликации в удаленной базе данных 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 не поддерживается. Будет использовано значение по умолчанию для типа данных.