Avant d'utiliser le connecteur CDC (Change Data Capture) pour PostgreSQL, assurez-vous que le stockage PostgreSQL en amont répond aux exigences de configuration. Cette rubrique décrit les exigences de configuration et les opérations associées pour ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL et les bases de données PostgreSQL auto-gérées.
Contexte
Avant d'utiliser le connecteur CDC PostgreSQL, vous devez vous assurer que le stockage PostgreSQL en amont respecte les exigences de configuration. Cette rubrique explique comment configurer ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL et les bases de données PostgreSQL auto-gérées. Le connecteur CDC PostgreSQL synchronise les données sur la base du mécanisme d'abonnement logique de PostgreSQL. Pour plus d'informations, consultez les pages Concepts du décodage logique et Principes et bonnes pratiques de l'abonnement logique.
Base de données ApsaraDB RDS for PostgreSQL
-
Connexion réseau entre ApsaraDB RDS for PostgreSQL et Ververica Platform (VVP)
Si ApsaraDB RDS for PostgreSQL et VVP se trouvent dans le même VPC de la même région, la connexion est établie automatiquement.
Si ApsaraDB RDS for PostgreSQL et VVP sont déployés sur des réseaux différents, vous devez établir une connexion réseau entre eux à l'aide de méthodes telles que VPN Gateway. Pour plus d'informations, consultez les rubriques Comment Realtime Compute for Apache Flink accède-t-il à Internet ? et Comment Realtime Compute for Apache Flink accède-t-il à un service via plusieurs VPC ?
Configurez une liste blanche d'adresses IP pour ApsaraDB RDS for PostgreSQL afin de garantir que VVP puisse y accéder. Pour plus d'informations, consultez la rubrique Configuration d'une liste blanche d'adresses IP pour une instance ApsaraDB RDS for PostgreSQL.
-
Configurations du serveur ApsaraDB RDS for PostgreSQL
-
Versions prises en charge
Seules les données des versions PostgreSQL 10, 11, 12, 13, 14, 15 et 16 peuvent être synchronisées. Exécutez la commande
select version()pour interroger la version de PostgreSQL. -
Décodage logique
Définissez le paramètre wal_level = logical pour activer le décodage logique. Pour plus d'informations, consultez la rubrique Modification des paramètres d'une instance ApsaraDB RDS for PostgreSQL. Si la configuration est réussie, vous pouvez tester et utiliser cette fonctionnalité en suivant l'exemple décrit dans la documentation Logical decoding.
-
Assurez-vous que le paramètre REPLICA IDENTITY de la table dont les données doivent être synchronisées est défini sur FULL.
Vous pouvez exécuter les instructions SQL suivantes pour afficher et modifier le paramètre 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 synchronisation des données
Les plug-ins de décodage logique wal2json ne sont pris en charge que lorsque la version majeure du moteur de l'instance ApsaraDB RDS for PostgreSQL est PostgreSQL 11, 12 ou 13. Le plug-in pgoutput est pris en charge uniquement lorsque la version majeure du moteur de l'instance ApsaraDB RDS for PostgreSQL est PostgreSQL 10 ou ultérieure. Nous recommandons d'utiliser pgoutput et decodebuf. Pour plus d'informations, recherchez l'option
decoding.plugin.namedans la rubrique PostgreSQL CDC.RemarqueSi vous utilisez le plug-in pgoutput pour synchroniser les données, assurez-vous que le compte utilisé est un compte privilégié. Pour plus d'informations, consultez la rubrique Création d'un compte.
Amazon RDS for PostgreSQL
-
Connexion réseau entre Amazon RDS for PostgreSQL et VVP
Pour établir une connexion réseau entre Amazon RDS for PostgreSQL et VVP, vous devez autoriser VVP à accéder à Amazon RDS for PostgreSQL via Internet. Pour plus d'informations, consultez les rubriques Comment Realtime Compute for Apache Flink accède-t-il à Internet ? et Contrôle de l'accès avec les groupes de sécurité.
-
Configurations du serveur Amazon RDS for PostgreSQL
-
Versions prises en charge
Seules les données des versions PostgreSQL 10, 11, 12, 13, 14, 15 et 16 peuvent être synchronisées. Exécutez la commande
select version()pour interroger la version de PostgreSQL. -
Décodage logique
Définissez le paramètre rds.logical_replication sur 1.
Assurez-vous que la valeur du paramètre wal_level est définie sur logical. Par défaut, si le paramètre rds.logical_replication est défini sur 1, le paramètre wal_level est automatiquement défini sur logical.
-
Assurez-vous que le paramètre REPLICA IDENTITY de la table dont les données doivent être synchronisées est défini sur FULL.
Vous pouvez exécuter les instructions SQL suivantes pour afficher et modifier le paramètre 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; -
Exigences relatives aux rôles de compte
Par défaut, seul un compte de gestion AWS se voit attribuer le rôle rds_replication sur Amazon RDS for PostgreSQL. Un utilisateur auquel ce rôle est attribué peut gérer les slots logiques et lire les données en continu à l'aide de ces slots. Si vous souhaitez activer la réplication logique à l'aide d'un compte autre qu'un compte de gestion, vous devez attribuer le rôle rds_replication à ce compte. Par exemple, vous pouvez attribuer le rôle rds_replication à l'utilisateur spécifié par <my_user>. Vous ne pouvez attribuer le rôle rds_replication aux utilisateurs que si vous disposez des permissions superuser. Si vous souhaitez créer un instantané initial à l'aide d'un compte autre qu'un compte de gestion, vous devez accorder à ce compte l'autorisation SELECT sur la table que vous souhaitez capturer.
-
Plug-in de synchronisation des données
Utilisez le plug-in pgoutput pour la synchronisation des données.
-
Base de données PostgreSQL auto-gérée
-
Connexion réseau entre votre base de données PostgreSQL auto-gérée et VVP
Si votre base de données PostgreSQL auto-gérée est déployée sur Alibaba Cloud et réside dans le même VPC que VVP, la connexion réseau est établie automatiquement.
Si votre base de données PostgreSQL auto-gérée n'est pas déployée sur Alibaba Cloud, vous devez autoriser VVP à accéder à l'adresse IP publique de votre base de données. Dans ce cas, vous devez connecter votre base de données PostgreSQL auto-gérée et VVP à l'aide de VPN Gateway. Pour plus d'informations, consultez la rubrique Comment Realtime Compute for Apache Flink accède-t-il à Internet ? Vous devez également modifier le fichier pg_hba.conf pour autoriser VVP à accéder à votre base de données PostgreSQL auto-gérée. Pour plus d'informations, consultez la rubrique Mise à jour du fichier pg_hba.conf.
-
Configurations du serveur PostgreSQL auto-géré
-
Versions prises en charge
Seules les données des versions PostgreSQL 9.6, 10, 11, 12, 13, 14, 15 et 16 peuvent être synchronisées. Exécutez la commande
select version()pour interroger la version de PostgreSQL. -
Décodage logique
Assurez-vous que la valeur du paramètre wal_level est définie sur logical. Modifiez le fichier postgresql.conf et redémarrez la base de données.
-
Assurez-vous que le paramètre REPLICA IDENTITY de la table dont les données doivent être synchronisées est défini sur FULL.
Vous pouvez exécuter les instructions SQL suivantes pour afficher et modifier le paramètre 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; -
Création d'un compte et attribution des permissions de synchronisation des données.
Le compte de synchronisation des données doit disposer des permissions REPLICATION et LOGIN, ainsi que de l'autorisation SELECT pour synchroniser les données de la table.
CREATE ROLE <replication_user> REPLICATION LOGIN; GRANT SELECT ON <table_name> TO <name>;
-
Plug-in de synchronisation des données
Par défaut, le plug-in pgoutput est installé dans PostgreSQL 10 et versions ultérieures. Si vous utilisez d'autres versions de PostgreSQL ou installez d'autres plug-ins pour la synchronisation des données, suivez les instructions décrites dans la documentation Installation du plug-in de sortie de décodage logique pour PostgreSQL.
Si vous utilisez le plug-in pgoutput comme outil de synchronisation, assurez-vous que le compte de synchronisation des données est le propriétaire de la table dont les données doivent être synchronisées. Pour garantir que le compte de synchronisation des données est le propriétaire de la table concernée, effectuez les étapes suivantes :
-- 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;RemarqueDans ce cas, le compte de synchronisation des données n'est propriétaire que d'une seule table. Par conséquent, définissez le paramètre debezium.publication.autocreate.mode dans la clause WITH sur filtered. Si l'opération de configuration des permissions pertinentes pour chaque table est complexe, vous pouvez directement accorder la permission pg_monitor au compte de synchronisation des données.
GRANT pg_monitor TO <replication_user>;
-
-