Este guia fornece instruções passo a passo para migrar seu banco de dados PostgreSQL para o ClickHouse Managed Postgres usando a replicação lógica nativa do Postgres.
BetaPré-requisitos
- Acesso ao seu banco de dados PostgreSQL de origem.
psql,pg_dumpepg_restoreinstalados na sua máquina local. Isso é necessário para criar tabelas vazias no banco de dados de destino. Essas ferramentas normalmente são incluídas nas instalações do PostgreSQL. Caso contrário, você pode baixá-las no site oficial do PostgreSQL.- Seu banco de dados de origem deve estar acessível a partir do ClickHouse Managed Postgres. Certifique-se de que todas as regras de firewall ou configurações de Security Group necessárias permitam essa conectividade. Você pode obter o IP de saída da sua instância do ClickHouse Managed Postgres fazendo o seguinte:
dig +short <your-managed-postgres-hostname>A configuração
Para que a replicação lógica funcione, precisamos garantir que o banco de dados de origem esteja configurado corretamente. Estes são os principais requisitos:
- O banco de dados de origem deve ter
wal_leveldefinido comological. - O banco de dados de origem deve ter
max_replication_slotsdefinido para no mínimo1. - Para RDS (que este guia usa como exemplo), você precisa garantir que seu grupo de parâmetros tenha
rds.logical_replicationdefinido como1. - O usuário do banco de dados de origem deve ter o privilégio
REPLICATION. No caso do RDS, execute:GRANT rds_replication TO <your-username>; - A role usada no banco de dados de destino deve ter privilégios de gravação nos objetos do banco de dados de destino:
GRANT USAGE ON SCHEMA <schema_i> TO subscriber_user; GRANT CREATE ON DATABASE destination_db TO subscriber_user; GRANT pg_create_subscription TO subscriber_user; -- Conceder permissões nas tabelas GRANT INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA <schema_i> TO subscriber_user;
Certifique-se de que o banco de dados de origem esteja configurado desta forma:

Dump apenas do schema do banco de dados de origem
Antes de configurar a replicação lógica, precisamos criar o schema no banco de dados ClickHouse Managed Postgres de destino. Podemos fazer isso criando um dump apenas do schema do banco de dados de origem usando pg_dump:
pg_dump \
-d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
-s \
--format directory \
-f rds-dumpAqui:
- Substitua
<user>,<password>,<host>,<port>e<database>pelas credenciais do banco de dados de origem. -sespecifica que queremos um dump apenas do schema.--format directoryespecifica que queremos o dump no formato de diretório, que é adequado para opg_restore.-f rds-dumpespecifica o diretório de saída dos arquivos de dump. Observe que esse diretório será criado automaticamente e não deve existir previamente.
No nosso caso, temos duas tabelas: events e users. events tem um milhão de linhas, e users tem mil linhas.

Crie uma instância do ClickHouse Managed Postgres
Primeiro, certifique-se de ter uma instância do ClickHouse Managed Postgres configurada, de preferência na mesma região da origem. Você pode seguir o guia rápido aqui. Veja o que vamos provisionar neste guia:

Restaurar o schema no ClickHouse Managed Postgres
Agora que temos o dump do schema, podemos restaurá-lo na nossa instância do ClickHouse Managed Postgres usando pg_restore:
pg_restore \
-d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
--verbose \
rds-dumpAqui:
- Substitua
<user>,<password>,<host>,<port>e<database>pelas credenciais do seu banco de dados de destino no ClickHouse Managed Postgres. --verbosefornece uma saída detalhada durante o processo de restauração. Este comando criará todas as tabelas, índices, views e outros objetos de esquema no banco de dados de destino, sem dados.
No nosso caso, após executar esse comando, temos duas tabelas, e elas estão vazias:

Configurar a replicação lógica
Com o schema em vigor, agora podemos configurar a replicação lógica do banco de dados de origem para o banco de dados de destino ClickHouse Managed Postgres. Isso envolve criar uma publicação no banco de dados de origem e uma assinatura no banco de dados de destino.
Crie uma publication no banco de dados de origem
Conecte-se ao banco de dados PostgreSQL de origem e crie uma publication que inclua as tabelas que você deseja replicar.
CREATE PUBLICATION <pub_name> FOR TABLE table1, table2...;Crie uma assinatura no banco de dados ClickHouse Managed Postgres de destino
Em seguida, conecte-se ao seu banco de dados ClickHouse Managed Postgres de destino e crie uma assinatura que se conecte à publicação no banco de dados de origem.
CREATE SUBSCRIPTION demo_rds_subscription
CONNECTION 'postgresql://<user>:<password>@<host>:<port>/<database>'
PUBLICATION <pub_name_you_entered_above>;Isso criará automaticamente um slot de replicação no banco de dados de origem e iniciará a replicação dos dados das tabelas especificadas para o banco de dados de destino. Dependendo do volume de dados, esse processo pode levar algum tempo.
No nosso caso, após configurar a assinatura, os dados começaram a fluir:

As novas linhas inseridas no banco de dados de origem agora serão replicadas para o banco de dados de destino ClickHouse Managed Postgres quase em tempo real.
Ressalvas e considerações
- A replicação lógica replica apenas alterações nos dados (INSERT, UPDATE, DELETE). Alterações de esquema (como ALTER TABLE) precisam ser tratadas separadamente.
- Garanta que a conexão de rede entre os bancos de dados de origem e destino seja estável para evitar interrupções na replicação.
- Monitore o atraso da replicação para garantir que o banco de dados de destino esteja acompanhando o de origem. Definir um valor adequado para
max_slot_wal_keep_sizeno banco de dados de origem pode ajudar a gerenciar um slot de replicação em crescimento e evitar que ele consuma espaço em disco em excesso. - Dependendo do seu caso de uso, talvez você queira configurar monitoramento e alertas para o processo de replicação.
Próximos passos
Parabéns! Você migrou com sucesso seu banco de dados PostgreSQL para o ClickHouse Managed Postgres usando pg_dump e pg_restore. Agora, você já pode explorar os recursos do ClickHouse Managed Postgres e sua integração com o ClickHouse. Aqui está um guia de início rápido de 10 minutos para ajudar você a começar: