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

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

На этой странице рассмотрены следующие варианты интеграции PostgreSQL с ClickHouse:

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

Использование ClickPipes (на базе PeerDB)

PeerDB теперь доступен в ClickHouse Cloud - молниеносная репликация Postgres в ClickHouse с помощью нашего нового соединителя ClickPipe - сейчас в приватном предварительном просмотре. Пожалуйста, зарегистрируйтесь здесь

Использование движка таблиц 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. Проверьте информацию о исходящем трафике в Cloud Endpoints API.

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

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

Минимальные необходимые параметры:

parameterDescriptionexample
host:porthostname или 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 для создания реплики базы данных со всеми или отдельными схемами и таблицами. Эта статья иллюстрирует основные методы интеграции, используя одну базу данных, одну схему и одну таблицу.

В следующих процедурах используются клиентские интерфейсы PostgreSQL (psql) и 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. войдите в интерфейс ClickHouse
  1. Включите экспериментальную функцию PostgreSQL для движка базы данных:
  1. Создайте новую базу данных, которую нужно реплицировать, и определите начальную таблицу:

минимальные параметры:

parameterDescriptionexample
host:porthostname или 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-команды не поддерживаются для этой репликации, движок может быть настроен для обнаружения изменений и перезагрузки таблиц, когда происходят структурные изменения.

к сведению

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