Перейти к основному содержимому
Перейти к основному содержимому

Подключение ClickHouse к PostgreSQL

Эта страница охватывает следующие варианты интеграции PostgreSQL с ClickHouse:

  • с использованием ClickPipes, управляемой службы интеграции для ClickHouse Cloud, основанной на PeerDB - сейчас в публичном бета-тестировании!
  • с использованием PeerDB, инструмента CDC с открытым исходным кодом, специально разработанного для репликации баз данных PostgreSQL как для самоуправляемого ClickHouse, так и для ClickHouse Cloud.
  • с использованием движка таблиц PostgreSQL для чтения из таблицы PostgreSQL
  • с использованием экспериментального движка базы данных MaterializedPostgreSQL для синхронизации базы данных в PostgreSQL с базой данных в ClickHouse

Использование движка таблиц PostgreSQL

Движок таблиц PostgreSQL позволяет выполнять операции SELECT и INSERT с данными, хранящимися на удалённом сервере PostgreSQL из ClickHouse. Эта статья иллюстрирует основные методы интеграции, используя одну таблицу.

1. Настройка PostgreSQL

  1. В postgresql.conf добавьте следующую запись, чтобы включить прослушивание PostgreSQL на сетевых интерфейсах:
  1. Создайте пользователя для подключения из ClickHouse. Для демонстрационных целей в этом примере предоставляются полные права суперпользователя.
  1. Создайте новую базу данных в PostgreSQL:
  1. Создайте новую таблицу:
  1. Давайте добавим несколько строк для тестирования:
  1. Чтобы настроить PostgreSQL для разрешения подключений к новой базе данных с новым пользователем для репликации, добавьте следующую запись в файл pg_hba.conf. Обновите строку адреса с помощью подсети или IP-адреса вашего сервера PostgreSQL:
  1. Перезагрузите конфигурацию pg_hba.conf (откорректируйте эту команду в зависимости от вашей версии):
  1. Убедитесь, что новый clickhouse_user может войти:
примечание

Если вы используете эту функцию в ClickHouse Cloud, вам может понадобиться разрешить IP-адресам ClickHouse Cloud доступ к вашему экземпляру PostgreSQL. Проверьте API конечных точек Cloud для получения информации о выходном трафике.

2. Определение таблицы в ClickHouse

  1. Войдите в clickhouse-client:
  1. Давайте создадим новую базу данных:
  1. Создайте таблицу, использующую PostgreSQL:

Минимальные параметры, необходимые для подключения:

parameterОписаниепример
host:portимя хоста или IP и портpostgres-host.domain.com:5432
databaseимя базы данных PostgreSQLdb_in_psg
userимя пользователя для подключения к postgresclickhouse_user
passwordпароль для подключения к postgresClickHouse_123
примечание

Просмотрите документацию по движку таблиц PostgreSQL для получения полного списка параметров.

3. Тестирование интеграции

  1. В ClickHouse просмотрите начальные строки:

Таблица ClickHouse должна автоматически заполняться двумя строками, которые уже существовали в таблице PostgreSQL:

  1. Вернитесь в PostgreSQL и добавьте несколько строк в таблицу:
  1. Эти две новые строки должны появиться в вашей таблице ClickHouse:

Ответ должен быть:

  1. Давайте посмотрим, что произойдет, когда вы добавите строки в таблицу ClickHouse:
  1. Строки, добавленные в ClickHouse, должны появиться в таблице PostgreSQL:

Этот пример продемонстрировал базовую интеграцию между PostgreSQL и ClickHouse, используя движок таблиц PostgreSQL. Ознакомьтесь с документацией по движку таблиц PostgreSQL для получения дополнительной информации о функциях, таких как указание схем, возврат только подмножества столбцов и подключение к нескольким репликам. Также проверьте ClickHouse и PostgreSQL - пара, созданная в данных - часть 1 в блоге.

Использование движка базы данных MaterializedPostgreSQL

Not supported in ClickHouse Cloud
Experimental feature. Learn more.

Движок базы данных PostgreSQL использует функции репликации PostgreSQL для создания реплики базы данных со всеми или частью схем и таблиц. Эта статья иллюстрирует основные методы интеграции, используя одну базу данных, одну схему и одну таблицу.

В следующих процедурах используются CLI PostgreSQL (psql) и CLI ClickHouse (clickhouse-client). Сервер PostgreSQL установлен на Linux. Следующие настройки минимальны, если база данных PostgreSQL является новой тестовой установкой

1. В PostgreSQL

  1. В postgresql.conf установите минимальные уровни прослушивания, уровень репликации WAL и слоты репликации:

добавьте следующие записи:

*ClickHouse требует минимум уровень WAL logical и минимум 2 слота репликации

  1. Используя учетную запись администратора, создайте пользователя для подключения из ClickHouse:

*для демонстрационных целей предоставлены полные права суперпользователя.

  1. создайте новую базу данных:
  1. подключитесь к новой базе данных в psql:
  1. создайте новую таблицу:
  1. добавьте начальные строки:
  1. Настройте PostgreSQL для разрешения подключений к новой базе данных с новым пользователем для репликации. Ниже приведена минимальная запись, которую необходимо добавить в файл pg_hba.conf:

*для демонстрационных целей используется метод аутентификации с открытым текстом пароля. обновите строку адреса в соответствии с документацией PostgreSQL

  1. перезагрузите конфигурацию pg_hba.conf с помощью команды вроде этой (откорректируйте в соответствии с вашей версией):
  1. Проверьте вход с новым clickhouse_user:

2. В ClickHouse

  1. войдите в CLI ClickHouse
  1. Включите экспериментальную функцию PostgreSQL для движка базы данных:
  1. Создайте новую базу данных, которая будет реплицироваться, и определите начальную таблицу:

минимальные опции:

parameterОписаниепример
host:portимя хоста или IP и портpostgres-host.domain.com:5432
databaseимя базы данных PostgreSQLdb1
userимя пользователя для подключения к postgresclickhouse_user
passwordпароль для подключения к postgresClickHouse_123
settingsдополнительные настройки для движкаmaterialized_postgresql_tables_list = 'table1'
к сведению

Для полного руководства по движку базы данных PostgreSQL смотрите https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings

  1. Проверьте, есть ли данные в начальной таблице:

3. Тестирование базовой репликации

  1. В PostgreSQL добавьте новые строки:
  1. В ClickHouse проверьте, видны ли новые строки:

4. Резюме

Этот руководство по интеграции сосредоточено на простом примере, как реплицировать базу данных с таблицей, однако существуют более продвинутые опции, включая репликацию целой базы данных или добавление новых таблиц и схем в существующие репликации. Хотя DDL команды не поддерживаются для этой репликации, движок может быть настроен для обнаружения изменений и перезагрузки таблиц при внесении структурных изменений.

к сведению

Для получения дополнительных функций, доступных для продвинутых опций, пожалуйста, смотрите справочную документацию.