Antes de utilizar el conector de captura de cambios de datos (CDC) de PostgreSQL, asegúrese de que el almacenamiento de PostgreSQL de origen cumpla con los requisitos de configuración. Este tema describe los requisitos de configuración y las operaciones relacionadas para ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL y bases de datos PostgreSQL autogestionadas.
Contexto
Antes de usar el conector CDC de PostgreSQL, debe verificar que el almacenamiento de PostgreSQL de origen cumpla con los requisitos de configuración. Este tema explica cómo configurar ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL y bases de datos PostgreSQL autogestionadas. El conector CDC de PostgreSQL sincroniza datos mediante el mecanismo de suscripción lógica de PostgreSQL. Para obtener más información, consulte Logical Decoding Concepts y Principles and Best Practices of Logical Subscription.
Base de datos ApsaraDB RDS for PostgreSQL
-
Conexión de red entre ApsaraDB RDS for PostgreSQL y Ververica Platform (VVP)
Si ApsaraDB RDS for PostgreSQL y VVP se encuentran en la misma nube privada virtual (VPC) dentro de la misma región, la conexión entre ambos servicios ya está establecida.
Si ApsaraDB RDS for PostgreSQL y VVP están desplegados en redes diferentes, debe establecer una conexión de red entre ellos mediante métodos como VPN Gateway. Para obtener más información, consulte How does Realtime Compute for Apache Flink access the Internet? y How does Realtime Compute for Apache Flink access a service across VPCs?
Configure una lista blanca de direcciones IP para ApsaraDB RDS for PostgreSQL a fin de garantizar que VVP pueda acceder al servicio. Para obtener más información, consulte Configure an IP address whitelist for an ApsaraDB RDS for PostgreSQL instance.
-
Configuraciones del servidor de ApsaraDB RDS for PostgreSQL
-
Versiones compatibles
Solo es posible sincronizar datos de PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 y PostgreSQL 16. Ejecute el comando
select version()para consultar la versión de PostgreSQL. -
Decodificación lógica
Configure wal_level = logical para habilitar la decodificación lógica. Para obtener más información, consulte Modify the parameters of an ApsaraDB RDS for PostgreSQL instance. Si la configuración se realiza correctamente, pruebe y utilice esta función siguiendo el ejemplo descrito en Logical decoding.
-
Asegúrese de que la configuración REPLICA IDENTITY de la tabla cuyos datos deben sincronizarse esté establecida en FULL.
Ejecute las siguientes sentencias SQL para consultar y modificar la configuración de 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;
-
-
Plugins de sincronización de datos
Los plugins de decodificación lógica wal2json solo son compatibles cuando la versión principal del motor de la instancia de ApsaraDB RDS for PostgreSQL es PostgreSQL 11, PostgreSQL 12 o PostgreSQL 13. El plugin pgoutput solo es compatible cuando la versión principal del motor de la instancia de ApsaraDB RDS for PostgreSQL es PostgreSQL 10 o posterior. Se recomienda utilizar pgoutput y decodebuf. Para obtener más información, busque la opción
decoding.plugin.nameen el tema PostgreSQL CDC.NotaSi utiliza el plugin pgoutput para sincronizar datos, asegúrese de que la cuenta empleada sea una cuenta con privilegios. Para obtener más información, consulte Create an account.
Amazon RDS for PostgreSQL
-
Conexión de red entre Amazon RDS for PostgreSQL y VVP
Para establecer una conexión de red entre Amazon RDS for PostgreSQL y VVP, debe permitir que VVP acceda a Amazon RDS for PostgreSQL a través de Internet. Para obtener más información, consulte How does Realtime Compute for Apache Flink access the Internet? y Controlling access with security groups.
-
Configuraciones del servidor de Amazon RDS for PostgreSQL
-
Versiones compatibles
Solo es posible sincronizar datos de PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 y PostgreSQL 16. Ejecute el comando
select version()para consultar la versión de PostgreSQL. -
Decodificación lógica
Establezca el parámetro rds.logical_replication en 1.
Verifique que el valor del parámetro wal_level sea logical. De forma predeterminada, si el parámetro rds.logical_replication se establece en 1, el parámetro wal_level se configura automáticamente como logical.
-
Asegúrese de que la configuración REPLICA IDENTITY de la tabla cuyos datos deben sincronizarse esté establecida en FULL.
Ejecute las siguientes sentencias SQL para consultar y modificar la configuración de 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 rol de cuenta
De forma predeterminada, solo una cuenta de administración de Amazon Web Services (AWS) tiene asignado el rol rds_replication en Amazon RDS for PostgreSQL. Un usuario con este rol puede gestionar slots lógicos y leer datos de streaming mediante dichos slots. Si desea habilitar la replicación lógica con una cuenta distinta a la de administración, debe asignarle el rol rds_replication. Por ejemplo, puede asignar el rol rds_replication al usuario especificado por <my_user>. Solo puede asignar el rol rds_replication a otros usuarios si cuenta con permisos de superusuario. Si desea crear una instantánea inicial con una cuenta distinta a la de administración, debe otorgar a dicha cuenta el permiso SELECT sobre la tabla que desea capturar.
-
Plugin de sincronización de datos
Utilice el plugin pgoutput para la sincronización de datos.
-
Base de datos PostgreSQL autogestionada
-
Conexión de red entre su base de datos PostgreSQL autogestionada y VVP
Si su base de datos PostgreSQL autogestionada está desplegada en Alibaba Cloud y reside en la misma VPC que VVP, la conexión de red entre ambos ya se encuentra establecida.
Si su base de datos PostgreSQL autogestionada no está desplegada en Alibaba Cloud, debe permitir que VVP acceda a la dirección IP pública de dicha base de datos. En este caso, conecte su base de datos PostgreSQL autogestionada con VVP mediante VPN Gateway. Para obtener más información, consulte How does Realtime Compute for Apache Flink access the Internet?. También debe modificar el archivo pg_hba.conf para permitir que VVP acceda a su base de datos PostgreSQL autogestionada. Para obtener más información, consulte Update the pg_hba.conf file.
-
Configuraciones del servidor PostgreSQL autogestionado
-
Versiones compatibles
Solo es posible sincronizar datos de PostgreSQL 9.6, PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 y PostgreSQL 16. Ejecute el comando
select version()para consultar la versión de PostgreSQL. -
Decodificación lógica
Verifique que el valor del parámetro wal_level sea logical. Modifique el archivo postgresql.conf y reinicie la base de datos.
-
Asegúrese de que la configuración REPLICA IDENTITY de la tabla cuyos datos deben sincronizarse esté establecida en FULL.
Ejecute las siguientes sentencias SQL para consultar y modificar la configuración de 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; -
Cree una cuenta y otórguele los permisos necesarios para sincronizar datos.
La cuenta de sincronización de datos debe contar con los permisos REPLICATION y LOGIN, así como con el permiso SELECT para sincronizar los datos de la tabla.
CREATE ROLE <replication_user> REPLICATION LOGIN; GRANT SELECT ON <table_name> TO <name>;
-
Plugin de sincronización de datos
El plugin pgoutput viene instalado de forma predeterminada en PostgreSQL 10 y versiones posteriores. Si utiliza otras versiones de PostgreSQL o instala plugins distintos para la sincronización de datos, siga las instrucciones descritas en Logical Decoding Output Plug-in Installation for PostgreSQL.
Si utiliza el plugin pgoutput como herramienta de sincronización, asegúrese de que la cuenta de sincronización de datos sea la propietaria de la tabla cuyos datos deben sincronizarse. Para garantizar que la cuenta de sincronización de datos sea la propietaria de dicha tabla, realice los siguientes pasos:
-- 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;NotaEn este caso, la cuenta de sincronización de datos es propietaria únicamente de una sola tabla. Por lo tanto, establezca el parámetro debezium.publication.autocreate.mode en la cláusula WITH como filtered. Si la operación para configurar los permisos correspondientes en cada tabla resulta compleja, puede otorgar directamente el permiso pg_monitor a la cuenta de sincronización de datos.
GRANT pg_monitor TO <replication_user>;
-