Полное руководство по миграции из PostgreSQL в ClickHouse, включая рекомендации по моделированию данных и сопоставлению аналогичных понятий, доступно здесь. Ниже описано, как настроить подключение ClickHouse к PostgreSQL.На этой странице рассматриваются следующие варианты интеграции PostgreSQL с ClickHouse:
- использование движка таблицы
PostgreSQLдля чтения данных из таблицы PostgreSQL - использование экспериментального движка базы данных
MaterializedPostgreSQLдля синхронизации базы данных в PostgreSQL с базой данных в ClickHouse
Использование движка таблицы PostgreSQL
PostgreSQL позволяет выполнять операции SELECT и INSERT с данными, хранящимися на удалённом сервере PostgreSQL, из ClickHouse.
В этой статье показаны основные способы интеграции с использованием одной таблицы.
1
Настройка PostgreSQL
- В
postgresql.confдобавьте следующую запись, чтобы PostgreSQL слушал на сетевых интерфейсах:
- Создайте пользователя, через которого ClickHouse будет подключаться. Для наглядности в этом примере ему предоставляются полные права суперпользователя.
- Создайте новую базу данных в PostgreSQL:
- Создайте новую таблицу:
- Давайте добавим несколько строк для тестирования:
- Чтобы настроить PostgreSQL так, чтобы новый пользователь мог подключаться к новой базе данных для репликации, добавьте следующую запись в файл
pg_hba.conf. В строке адреса укажите подсеть или IP-адрес вашего сервера PostgreSQL:
- Перезагрузите конфигурацию
pg_hba.conf(скорректируйте эту команду в зависимости от используемой версии):
- Убедитесь, что новый
clickhouse_userможет войти:
Если вы используете эту возможность в ClickHouse Cloud, вам может понадобиться разрешить доступ к вашему экземпляру PostgreSQL с IP-адресов ClickHouse Cloud.
Подробности об исходящем трафике см. в ClickHouse Cloud Endpoints API.
2
Создайте таблицу в ClickHouse
- Войдите в клиент ClickHouse:
- Давайте создадим новую базу данных:
- Создайте таблицу с движком
PostgreSQL:
Полный список параметров см. на странице документации PostgreSQL table engine.
3
Проверьте интеграцию
- В ClickHouse просмотрите первые строки:
- Вернувшись в PostgreSQL, добавьте в таблицу пару строк:
- В вашей таблице ClickHouse должны появиться эти две новые строки:
- Посмотрим, что произойдёт при добавлении строк в таблицу ClickHouse:
- Строки, добавленные в ClickHouse, должны появиться в таблице PostgreSQL:
PostrgeSQL.
Ознакомьтесь с документацией по движку таблицы PostgreSQL, чтобы узнать о дополнительных возможностях, таких как указание схем, выбор только части столбцов и подключение к нескольким репликам. Также рекомендуем статью в блоге ClickHouse and PostgreSQL - a match made in data heaven - part 1.
Использование движка базы данных MaterializedPostgreSQL
psql) и ClickHouse CLI (clickhouse-client). Сервер PostgreSQL установлен на Linux. Ниже приведены минимальные настройки для новой тестовой установки базы данных PostgreSQL.
1
В PostgreSQL
- В
postgresql.confзадайте минимальные параметры прослушивания, уровень WAL для репликации и слоты репликации:
logical и не менее 2 слотов репликации- Используя учетную запись администратора, создайте пользователя для подключения из ClickHouse:
- создайте новую базу данных:
- подключитесь к новой базе данных через
psql:
- создайте новую таблицу:
- добавьте исходные строки:
- Настройте PostgreSQL так, чтобы разрешить подключения к новой базе данных с новым пользователем для репликации. Ниже приведена минимальная запись, которую нужно добавить в файл
pg_hba.conf:
- перезагрузите конфигурацию
pg_hba.conf, например так (с поправкой на вашу версию):
- Проверьте вход в систему с новым
clickhouse_user:
2
В ClickHouse
- войдите в ClickHouse CLI
- Включите экспериментальную возможность PostgreSQL для движка базы данных:
- Создайте новую базу данных для репликации и определите исходную таблицу:
Полное руководство по движку баз данных PostgreSQL см. по адресу https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- Убедитесь, что исходная таблица содержит данные:
3
Проверка базовой репликации
- В PostgreSQL добавьте новые строки:
- В ClickHouse убедитесь, что новые строки отображаются:
4
Итоги
В этом руководстве по интеграции рассмотрен простой пример репликации базы данных с одной таблицей. Однако доступны и более расширенные варианты: репликация всей базы данных или добавление новых таблиц и схем к существующим репликациям. Хотя DDL-команды для этой репликации не поддерживаются, движок можно настроить на обнаружение изменений и перезагрузку таблиц при изменении их структуры.
Подробнее о дополнительных возможностях расширенных вариантов см. в справочной документации.