Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Guia de configuração da origem RDS Postgres

Versões compatíveis do Postgres

O ClickPipes oferece suporte ao Postgres versão 12 e posteriores.

Habilite a replicação lógica

Você pode pular esta seção se a sua instância do RDS já tiver a seguinte configuração definida:

  • rds.logical_replication = 1

Essa configuração geralmente já vem pré-configurada se você já usou outra ferramenta de replicação de dados.

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

Caso ainda não esteja configurado, siga estas etapas:

  1. Crie um novo grupo de parâmetros para a sua versão do Postgres com as configurações necessárias:
    • Defina rds.logical_replication como 1
Onde encontrar grupos de parâmetros no RDS?
Alterando rds.logical_replication
  1. Aplique o novo grupo de parâmetros ao seu banco de dados RDS Postgres
Modificando o RDS Postgres com o novo grupo de parâmetros
  1. Reinicie a sua instância do RDS para aplicar as alterações
Reiniciando o RDS Postgres

Configurar o usuário do banco de dados

Conecte-se à sua instância do RDS Postgres como usuário administrador e execute os seguintes comandos:

  1. Crie um usuário dedicado para o ClickPipes:

    CREATE USER clickpipes_user PASSWORD 'some-password';
  2. Conceda acesso somente leitura no nível do schema ao usuário criado na etapa anterior. O exemplo abaixo mostra as permissões para o schema public. Repita esses comandos para cada schema que contenha tabelas que você deseja replicar:

    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. Conceda privilégios de replicação ao usuário:

    GRANT rds_replication TO clickpipes_user;
  4. Crie uma publicação com as tabelas que você deseja replicar. Recomendamos fortemente incluir na publicação apenas as tabelas necessárias para evitar sobrecarga de desempenho.

  • Para criar uma publicação para tabelas específicas:

    CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
    • Para criar uma publicação para todas as tabelas em um schema específico:

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";

A publicação clickpipes define o conjunto de tabelas cujos eventos de alteração serão transmitidos ao ClickPipes. Recomendamos não usar FOR ALL TABLES, a menos que você pretenda replicar todas as tabelas, pois incluir tabelas desnecessárias aumenta o tráfego de WAL do Postgres para o ClickPipes e reduz a eficiência geral da replicação.

Usando autenticação IAM (opcional)

Instead of a password, you can authenticate the ClickPipes user with an AWS IAM role. This lets ClickPipes connect to your Amazon RDS instance without storing database credentials.

Enable IAM authentication

  1. Log in to your AWS account and go to the RDS instance you want to configure.
  2. Click Modify.
  3. Scroll to the Database authentication section.
  4. Select Password and IAM database authentication.
  5. Click Continue.
  6. Review the changes and select Apply immediately.

Create the ClickPipes user

Create the ClickPipes user with IAM authentication enabled, then grant it the same schema and replication privileges shown above:

CREATE USER clickpipes_iam_user;
GRANT rds_iam TO clickpipes_iam_user;

Obtain the ClickHouse service IAM role ARN

  1. Log in to your ClickHouse Cloud account.
  2. Select the ClickHouse service you want to connect.
  3. Select the Settings tab.
  4. Scroll to the Network security information section at the bottom of the page.
  5. Copy the service's Service role ID (IAM) value, shown below.
Service role ID (IAM) value in the Network security information section

This value is your {ClickHouse_IAM_ARN} — the role ClickPipes uses to access your RDS instance.

Obtain the resource ID

  1. Log in to your AWS account and go to the RDS instance you want to configure.
  2. Select the Configuration tab.
  3. Note the Resource ID value — it looks like db-xxxxxxxxxxxxxx. This is your {RDS_RESOURCE_ID}, which you reference in the permissions policy.

Create the IAM role

  1. Log in to your AWS account with an IAM user that has permission to create and manage IAM roles.
  2. Open the IAM console.
  3. Create a new IAM role with the following trust and permissions policies.

    Trust policy (replace {ClickHouse_IAM_ARN} with the IAM role ARN of your ClickHouse instance):

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "{ClickHouse_IAM_ARN}"
          },
          "Action": [
            "sts:AssumeRole",
            "sts:TagSession"
          ]
        }
      ]
    }

    Permissions policy (replace {RDS_RESOURCE_ID} with the resource ID of your RDS instance, {RDS_REGION} with its region, and {AWS_ACCOUNT} with your AWS account ID):

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "rds-db:connect"
          ],
          "Resource": [
            "arn:aws:rds-db:{RDS_REGION}:{AWS_ACCOUNT}:dbuser:{RDS_RESOURCE_ID}/clickpipes_iam_user"
          ]
        }
      ]
    }
  4. Once the role is created, copy its ARN. This is your {RDS_ACCESS_IAM_ROLE_ARN}.

You can now use this IAM role to authenticate with your RDS instance from ClickPipes.

Configurar o acesso à rede

Controle de acesso por IP

Se você quiser restringir o tráfego para sua instância do RDS, adicione os IPs NAT estáticos documentados às Inbound rules do grupo de segurança do RDS.

Onde encontrar o grupo de segurança no RDS Postgres?
Editar as regras de entrada do grupo de segurança acima

Para se conectar à sua instância do RDS por uma rede privada, você pode usar o AWS PrivateLink. Siga nosso guia de configuração do AWS PrivateLink para ClickPipes para configurar a conexão.

Soluções alternativas para o RDS Proxy

O RDS Proxy não oferece suporte a conexões de replicação lógica. Se você tiver endereços IP dinâmicos no RDS e não puder usar um nome DNS ou uma função Lambda, aqui estão algumas alternativas:

  1. Usando um cron job, resolva periodicamente o IP do endpoint do RDS e atualize o NLB se ele tiver mudado.
  2. Usando notificações de eventos do RDS com EventBridge/SNS: acione atualizações automaticamente com notificações de eventos do AWS RDS.
  3. EC2 estável: implante uma instância do EC2 para atuar como um serviço de polling ou proxy baseado em IP.
  4. Automatize o gerenciamento de endereços IP usando ferramentas como Terraform ou CloudFormation.

Próximos passos

Agora você pode criar seu ClickPipe e começar a fazer a ingestão de dados da sua instância do Postgres para o ClickHouse Cloud. Anote os detalhes da conexão que você usou ao configurar sua instância do Postgres, pois precisará deles durante o processo de criação do ClickPipe.

Navigation