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

Руководство по настройке источника данных RDS Postgres

Поддерживаемые версии Postgres

ClickPipes поддерживает Postgres начиная с версии 12.

Включить логическую репликацию

Вы можете пропустить этот раздел, если в вашем экземпляре RDS уже заданы следующие параметры:

  • rds.logical_replication = 1
  • wal_sender_timeout = 0

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

postgres=> SHOW rds.logical_replication ;
 rds.logical_replication
-------------------------
 on
(1 row)

postgres=> SHOW wal_sender_timeout ;
 wal_sender_timeout
--------------------
 0
(1 row)

Если это ещё не настроено, выполните следующие шаги:

  1. Создайте новую группу параметров для вашей версии Postgres с необходимыми настройками:
    • Установите значение rds.logical_replication равным 1
    • Установите значение wal_sender_timeout равным 0
Где находятся группы параметров в RDS?
Настройка rds.logical_replication
Настройка wal_sender_timeout
  1. Примените новую группу параметров к вашей базе данных RDS Postgres
Изменение конфигурации RDS Postgres с новой группой параметров
  1. Перезапустите экземпляр RDS, чтобы применить изменения
Перезапуск RDS Postgres

Настройка пользователя базы данных

Подключитесь к вашему экземпляру RDS Postgres под учётной записью администратора и выполните следующие команды:

  1. Создайте отдельного пользователя для ClickPipes:

    CREATE USER clickpipes_user PASSWORD 'some-password';
    
  2. Предоставьте этому пользователю права только на чтение на уровне схемы. В следующем примере показаны права для схемы public. Повторите эти команды для каждой схемы, содержащей таблицы, которые вы хотите реплицировать:

    GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
    
  3. Предоставьте пользователю привилегии репликации:

    GRANT rds_replication TO clickpipes_user;
    
  4. Создайте publication с таблицами, которые вы хотите реплицировать. Настоятельно рекомендуется включать в publication только те таблицы, которые вам действительно нужны, чтобы избежать излишней нагрузки на производительность.

    Примечание

    Любая таблица, включённая в publication, должна либо иметь определённый primary key, либо её replica identity должна быть настроена на FULL. См. раздел Postgres FAQs для рекомендаций по выбору области действия.

    • Чтобы создать publication для конкретных таблиц:

      CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
      
    • Чтобы создать publication для всех таблиц в конкретной схеме:

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
      

    Publication clickpipes будет содержать набор событий изменений, сгенерированных из указанных таблиц, и позднее будет использоваться для приёма потока репликации.

Настройка сетевого доступа

Управление доступом на основе IP-адресов

Если вы хотите ограничить трафик к своему экземпляру RDS, добавьте задокументированные статические NAT IP-адреса в раздел Inbound rules группы безопасности RDS.

Где найти группу безопасности в RDS Postgres?
Редактирование inbound rules для указанной выше группы безопасности

Чтобы подключиться к вашему экземпляру RDS по частной сети, вы можете использовать AWS PrivateLink. Воспользуйтесь нашим руководством по настройке AWS PrivateLink для ClickPipes, чтобы настроить подключение.

Обходные решения для RDS Proxy

RDS Proxy не поддерживает подключения логической репликации. Если у вас динамические IP‑адреса в RDS и вы не можете использовать DNS‑имя или AWS Lambda, вот несколько альтернатив:

  1. С помощью cron‑задания периодически разрешайте IP‑адрес конечной точки RDS и обновляйте NLB, если он изменился.
  2. Использование RDS Event Notifications с EventBridge/SNS: автоматически инициируйте обновления с помощью уведомлений о событиях AWS RDS.
  3. Постоянный экземпляр EC2: разверните экземпляр EC2, который будет выступать в роли сервиса опроса или IP‑прокси.
  4. Автоматизируйте управление IP‑адресами с помощью таких инструментов, как Terraform или CloudFormation.

Что дальше?

Теперь вы можете создать свой ClickPipe и начать приём данных из экземпляра Postgres в ClickHouse Cloud. Обязательно запишите параметры подключения, которые вы использовали при настройке экземпляра Postgres, так как они понадобятся вам при создании ClickPipe.