Полное руководство по миграции из 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-client:
- Давайте создадим новую базу данных:
- Создайте таблицу, использующую движок
PostgreSQL:
| parameter | Description | example |
|---|---|---|
| host:port | имя хоста или IP-адрес и порт | postgres-host.domain.com:5432 |
| database | имя базы данных PostgreSQL | db_in_psg |
| user | имя пользователя для подключения к Postgres | clickhouse_user |
| password | пароль для подключения к Postgres | ClickHouse_123 |
Полный список параметров см. на странице документации движок таблицы PostgreSQL.
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 для движка базы данных:
- Создайте новую базу данных для репликации и задайте исходную таблицу:
| параметр | Описание | пример |
|---|---|---|
| host:port | имя хоста или IP-адрес и порт | postgres-host.domain.com:5432 |
| database | имя базы данных PostgreSQL | db1 |
| user | имя пользователя для подключения к Postgres | clickhouse_user |
| password | пароль для подключения к Postgres | ClickHouse_123 |
| settings | дополнительные настройки движка | materialized_postgresql_tables_list = ‘table1’ |
Полное руководство по движку базы данных PostgreSQL см. здесь: https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- Убедитесь, что в исходной таблице есть данные:
3. Проверьте простую репликацию
- В PostgreSQL добавьте новые строки:
- В ClickHouse убедитесь, что новые строки отображаются:
4. Итоги
Дополнительные возможности, доступные в расширенных сценариях, см. в справочной документации.