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

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

    Примечание

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

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

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

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
      

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

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

Контроль доступа на основе IP-адресов

Если вы хотите ограничить трафик к вашему экземпляру RDS, добавьте задокументированные статические IP-адреса NAT в 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.