Antes de usar o conector PostgreSQL Change Data Capture (CDC), verifique se o armazenamento PostgreSQL upstream atende aos requisitos de configuração. Este tópico descreve os requisitos de configuração e as operações relacionadas para ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL e bancos de dados PostgreSQL autogerenciados.
Contexto
Antes de usar o conector PostgreSQL CDC, garanta que o armazenamento PostgreSQL upstream atenda aos requisitos de configuração. Este tópico explica como configurar o ApsaraDB RDS for PostgreSQL, o Amazon RDS for PostgreSQL e bancos de dados PostgreSQL autogerenciados. O conector PostgreSQL CDC sincroniza dados com base no mecanismo de assinatura lógica do PostgreSQL. Para obter mais informações, consulte Logical Decoding Concepts e Principles and Best Practices of Logical Subscription.
Banco de dados ApsaraDB RDS for PostgreSQL
-
Conexão de rede entre o ApsaraDB RDS for PostgreSQL e a Ververica Platform (VVP)
Se o ApsaraDB RDS for PostgreSQL e a VVP estiverem na mesma virtual private cloud (VPC) da mesma região, eles já estarão conectados.
Se o ApsaraDB RDS for PostgreSQL e a VVP estiverem em redes diferentes, estabeleça uma conexão de rede entre eles usando métodos como VPN Gateway. Para mais detalhes, consulte How does Realtime Compute for Apache Flink access the Internet? e How does Realtime Compute for Apache Flink access a service across VPCs?.
Configure uma lista de permissões de endereços IP para o ApsaraDB RDS for PostgreSQL para garantir que a VVP possa acessá-lo. Para mais informações, consulte Configure an IP whitelist.
-
Configurações do servidor ApsaraDB RDS for PostgreSQL
-
Versões compatíveis
A sincronização é compatível apenas com dados do PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 e PostgreSQL 16. Execute o comando
select version()para consultar a versão do PostgreSQL. -
Decodificação lógica
Defina wal_level = logical para ativar a decodificação lógica. Para obter instruções detalhadas, consulte Modify the parameters of an ApsaraDB RDS for PostgreSQL instance. Após configurar corretamente, teste e use esse recurso seguindo o exemplo descrito em Logical decoding.
-
Verifique se a configuração REPLICA IDENTITY da tabela cujos dados serão sincronizados está definida como FULL.
Execute as instruções SQL a seguir para visualizar e modifique a configuração REPLICA IDENTITY.
-- View the setting of REPLICA IDENTITY. SELECT CASE relreplident WHEN'd'THEN'default' WHEN'n'THEN'nothing' WHEN'f'THEN'full' WHEN'i'THEN'index' ENDASreplica_identity FROMpg_class WHEREoid='mytablename'::regclass; -- Modify the setting of REPLICA IDENTITY. ALTERTABLEmytablenameREPLICAIDENTITYFULL;
-
-
Plug-ins de sincronização de dados
O plug-in de decodificação lógica wal2json tem suporte apenas quando a versão principal do mecanismo da instância ApsaraDB RDS for PostgreSQL é PostgreSQL 11, PostgreSQL 12 ou PostgreSQL 13. O plug-in pgoutput funciona exclusivamente nas versões PostgreSQL 10 ou superior. Recomendamos o uso dos plug-ins pgoutput e decodebuf. Para mais informações, pesquise a opção
decoding.plugin.nameno tópico PostgreSQL CDC.NotaAo usar o plug-in pgoutput para sincronizar dados, certifique-se de usar uma conta privilegiada. Para mais detalhes, consulte Create an account.
Amazon RDS for PostgreSQL
-
Conexão de rede entre o Amazon RDS for PostgreSQL e a VVP
Para estabelecer a conexão de rede entre o Amazon RDS for PostgreSQL e a VVP, permita que a VVP acesse o Amazon RDS for PostgreSQL pela Internet. Para obter orientações adicionais, consulte How does Realtime Compute for Apache Flink access the Internet? e Controlling access with security groups.
-
Configurações do servidor Amazon RDS for PostgreSQL
-
Versões compatíveis
A sincronização é compatível apenas com dados do PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 e PostgreSQL 16. Execute o comando
select version()para verificar a versão do PostgreSQL. -
Decodificação lógica
Defina o parâmetro rds.logical_replication como 1.
Verifique se o valor do parâmetro wal_level é logical. Por padrão, ao definir rds.logical_replication como 1, o sistema ajusta automaticamente wal_level para logical.
-
Verifique se a configuração REPLICA IDENTITY da tabela a ser sincronizada está definida como FULL.
Execute as instruções SQL a seguir para consultar e modifique a configuração REPLICA IDENTITY.
-- View the setting of REPLICA IDENTITY. SELECTCASErelreplident WHEN'd'THEN'default' WHEN'n'THEN'nothing' WHEN'f'THEN'full' WHEN'i'THEN'index' ENDASreplica_identity FROMpg_class WHEREoid='mytablename'::regclass; -- Modify the setting of REPLICA IDENTITY. ALTERTABLEmytablenameREPLICAIDENTITYFULL; -
Requisitos de função da conta
Por padrão, apenas a conta de gerenciamento da Amazon Web Services (AWS) recebe a função rds_replication no Amazon RDS for PostgreSQL. Usuários com essa função podem gerenciar slots lógicos e ler dados de streaming por meio deles. Para ativar a replicação lógica com uma conta diferente da conta de gerenciamento, atribua a função rds_replication a essa conta. Por exemplo, conceda a função rds_replication ao usuário especificado em <my_user>. A atribuição dessa função exige permissões de superusuário. Além disso, para criar um snapshot inicial sem usar a conta de gerenciamento, conceda à conta a permissão SELECT na tabela que deseja capturar.
-
Plug-in de sincronização de dados
Use o plug-in pgoutput para a sincronização de dados.
-
Banco de dados PostgreSQL autogerenciado
-
Conexão de rede entre o banco de dados PostgreSQL autogerenciado e a VVP
Se o banco de dados PostgreSQL autogerenciado estiver implantado na Alibaba Cloud e residir na mesma VPC que a VVP, eles já estarão conectados.
Se o banco de dados PostgreSQL autogerenciado não estiver implantado na Alibaba Cloud, permita que a VVP acesse o endereço IP público dele. Nesse cenário, conecte o banco de dados à VVP usando o VPN Gateway. Para mais informações, consulte How does Realtime Compute for Apache Flink access the Internet?. Também é necessário modifique o arquivo pg_hba.conf para autorizar o acesso da VVP ao banco de dados. Para obter instruções detalhadas, consulte Update the pg_hba.conf file.
-
Configurações do servidor PostgreSQL autogerenciado
-
Versões compatíveis
A sincronização é compatível com dados do PostgreSQL 9.6, PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 e PostgreSQL 16. Para consultar a versão instalada, execute o comando
select version(). -
Decodificação lógica
Garanta que o parâmetro wal_level esteja definido como logical. Modifique o arquivo postgresql.conf e reinicie o banco de dados.
-
Verifique se a configuração REPLICA IDENTITY da tabela a ser sincronizada está definida como FULL.
Execute as instruções SQL a seguir para visualize e modifique a configuração REPLICA IDENTITY.
-- View the setting of REPLICA IDENTITY. SELECT CASE relreplident WHEN 'd' THEN 'default' WHEN 'n' THEN 'nothing' WHEN 'f' THEN 'full' WHEN 'i' THEN 'index' END AS replica_identity FROM pg_class WHERE oid = 'mytablename'::regclass; -- Modify the setting of REPLICA IDENTITY. ALTER TABLE mytablename REPLICA IDENTITY FULL; -
Crie uma conta e conceda as permissões necessárias para sincronizar dados.
A conta de sincronização de dados deve ter as permissões REPLICATION e LOGIN, além da permissão SELECT para sincronizar os dados da tabela.
CREATE ROLE <replication_user> REPLICATION LOGIN; GRANT SELECT ON <table_name> TO <name>;
-
Plug-in de sincronização de dados
O plug-in pgoutput vem instalado por padrão no PostgreSQL 10 e em versões posteriores. Se você usar outras versões do PostgreSQL ou precisar instale plug-ins alternativos para sincronização, siga as instruções em Logical Decoding Output Plug-in Installation for PostgreSQL.
Ao usar o plug-in pgoutput como ferramenta de sincronização, verifique se a conta de sincronização é proprietária da tabela cujos dados serão sincronizados. Para garantir essa propriedade, execute as etapas a seguir:
-- 1. Create a synchronization group. CREATE ROLE <replication_group>; -- 2. Add the original owner of the table to the synchronization group. GRANT REPLICATION_GROUP TO <original_owner>; -- 3. Add the data synchronization account to the synchronization group. GRANT REPLICATION_GROUP TO <replication_user>; -- 4. Transfer the relevant permissions to the synchronization group. ALTER TABLE <table_name> OWNER TO REPLICATION_GROUP;NotaNesse caso, a conta de sincronização atua como proprietária apenas de uma única tabela. Portanto, defina o parâmetro debezium.publication.autocreate.mode na cláusula WITH como filtered. Se configurar permissões individuais para cada tabela for complexo, conceda diretamente a permissão pg_monitor à conta de sincronização.
GRANT pg_monitor TO <replication_user>;
-