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