Maintenance Openflow Connector for PostgreSQL

Note

Ce connecteur est soumis aux conditions d’utilisation de Snowflake Connector.

Ce chapitre décrit les considérations importantes relatives à la maintenance et les meilleures pratiques pour maintenir le Openflow Connector for PostgreSQL lors de la modification de la base de données PostgreSQL source. En outre, cette rubrique décrit comment redémarrer la réplication de table et réinstaller le connecteur.

Redémarrer la réplication de table

Une table à l’état FAILED, par exemple, en raison d’une clé primaire manquante ou d’un changement de schéma non pris en charge, ne redémarre pas automatiquement. Si une table passe à l’état FAILED ou si vous devez redémarrer la réplication à partir de zéro, utilisez la procédure suivante pour supprimer et ajouter à nouveau la table à la réplication.

Note

Si l’échec a été causé par un problème dans la table source, tel qu’une clé primaire manquante, résolvez ce problème dans la base de données source avant de continuer.

  1. Supprimez la table de la réplication à l’aide de l’une des méthodes suivantes :

    • Ajouter la table au paramètre Re-snapshot Table Exclusions pour l’exclure temporairement de la réplication. Ceci est pratique lorsque la table correspond à un Included Table Regex que vous ne voulez pas modifier.

    • Dans le contexte Paramètres d’ingestion, supprimez la table dans Included Table Names ou modifiez le Included Table Regex de sorte que la table n’a plus aucune correspondance.

  2. Vérifiez que la table a été supprimée :

    1. Dans le canevas de l’environnement d’exécution Openflow, cliquez avec le bouton droit de la souris sur un groupe de processeurs et choisissez Controller Services.

    2. Dans la table répertoriant les services du contrôleur, recherchez la ligne Table State Store, cliquez sur les trois points verticaux sur le côté droit de la ligne, puis choisissez View State.

    Important

    Vous devez attendre que l’état de la table soit entièrement supprimé de cette liste avant de poursuivre. Ne continuez pas tant que cette modification de la configuration n’est pas terminée.

  3. Nettoyez la destination. Une fois que l’état de la table indique qu’elle est entièrement supprimés, DROP manuellement la table de destination dans Snowflake. Notez que le connecteur ne remplacera pas une table de destination existante pendant la phase de l’instantané. Si la table existe toujours, la réplication échouera à nouveau. En option, la table et le flux de journal peuvent également être supprimés s’ils ne sont plus nécessaires.

  4. Ajoutez à nouveau la table en annulant la modification que vous avez apportée à la première étape : soit supprimez la table de Re-snapshot Table Exclusions, ou rajoutez-la à Included Table Names ou Included Table Regex. Le connecteur effectue ensuite un nouvel instantané de la table.

  5. Vérifiez le redémarrage. Vérifiez le Table State Store en utilisant les instructions données précédemment. L’état de la table doit apparaître avec le statut NEW, puis SNAPSHOT_REPLICATION et pour finir INCREMENTAL_REPLICATION.

Mise à à niveau de PostgreSQL

La mise à niveau du connecteur nécessite une approche différente selon que PostgreSQL est en train de passer à la version mineure ou majeure suivante.

Mises à niveau de la version mineure

  • Sont des données sûres.

  • Aucun traitement particulier n’est requis.

  • Demandez d’arrêter le connecteur pendant la durée de la mise à niveau afin d’éviter de signaler des problèmes de connexion.

  • Continuez la réplication, après la mise à niveau, sans perte de données.

Mises à niveau de la version majeure

  • Demandez au serveur PostgreSQL de supprimer les emplacements de réplication, y compris ceux utilisés par le connecteur.

  • Impossible de conserver ou de migrer les emplacements de réplication vers la nouvelle version. Voir aussi Mises à niveau des versions PostgresSQL 17 et ultérieures.

  • Redémarrez la réplication de toutes les tables de la phase instantané précédente.

Pour effectuer une mise à niveau de version mineure, procédez comme suit :

  1. Arrêtez le connecteur, y compris tous les processeurs et les services de contrôleur.

  2. Mettez PostgreSQL à niveau.

  3. Redémarrez le connecteur.

Pour effectuer une mise à niveau de version majeure, procédez comme suit :

  1. Supprimez toutes les tables de la réplication dans le connecteur.

  2. Attendez que toutes les files d’attente du connecteur soient vides.

  3. Arrêtez le connecteur, y compris tous les processeurs et les services de contrôleur.

  4. Ouvrez le groupe Incremental Load dans le connecteur.

  5. Faites un clic droit sur le processeur supérieur du groupe, Read PostgreSQL CDC Stream, et sélectionnez View state.

  6. Cliquez sur Clear state.

  7. Cliquez sur Close.

  8. Mettez PostgreSQL à niveau.

  9. Redémarrez le connecteur. Un nouvel emplacement de réplication sera créé.

  10. Ajoutez de nouveau toutes les tables pour commencer la réplication.

Mises à niveau des versions PostgresSQL 17 et ultérieures

Amélioration de la mise à niveau PostgreSQL 17, de sorte qu’il n’est plus nécessaire de supprimer les emplacements de réplication lors du passage aux versions ultérieures telles que 17.1 » 18.0. Le passage à PostgreSQL 17.0 ou une version ultérieure (depuis la version 16 et les versions antérieures) permet de supprimer les emplacements de réplication et doit être considéré comme une mise à niveau majeure. Les futures versions de PostgreSQL peuvent également améliorer davantage le processus de mise à niveau.

Réinstaller le connecteur

Cette section explique comment réinstaller le connecteur. Elle couvre les situations dans lesquelles le nouveau connecteur est installé dans le même environnement d’exécution ou lorsqu’il est déplacé vers un nouvel environnement d’exécution. La réinstallation est souvent utilisée en conjonction avec Réplication incrémentielle avec instantanés.

Avertissement

Pour que le connecteur puisse continuer la réplication à partir de la même position du flux CDC où il s’est arrêté avant la réinstallation, la base de données source doit conserver le WAL suffisamment longtemps pour couvrir la période écoulée entre l’arrêt de l’ancien connecteur et le démarrage du nouveau connecteur. Assurez-vous que le paramètre max_wal_size du serveur PostgreSQL est suffisamment élevé, en fonction de votre trafic, et maintenez le temps de réinstallation au minimum.

Conditions préalables

Examinez et notez les valeurs contextuelles des paramètres du connecteur. Si vous réinstallez le connecteur dans le même environnement d’exécution, vous pouvez réutiliser le contexte existant. Si la nouvelle instance sera située dans un environnement d’exécution différent, vous devrez saisir à nouveau tous les paramètres.

Pour réinstaller le connecteur :

  1. Terminez le traitement de tous les FlowFiles en cours dans le connecteur existant, puis arrêtez le connecteur.

    1. Connectez-vous à Snowsight.

    2. Dans le menu de navigation, sélectionnez Ingestion » Openflow.

    3. Sélectionnez Launch Openflow.

    4. Dans le volet Openflow, sélectionnez l’onglet Runtimes.

    5. Sélectionnez l’environnement d’exécution contenant le connecteur.

    6. Sélectionnez le connecteur.

    7. Arrêtez le processeur le plus élevé Set Tables for Replication dans le groupe Snapshot Load.

    8. Arrêtez le processeur le plus élevé Read PostgreSQL CDC Stream dans le groupe Incremental Load.

    9. Si vous avez modifié la valeur du paramètre Merge Task Schedule CRON, rétablissez-le sur * * * * * ?. Sinon, les files d’attente ne seront pas vidées avant la prochaine exécution planifiée.

      Attendez que tous les FlowFiles du connecteur aient été traités et que toutes les files d’attente soient vides. Lorsque tous les FlowFiles ont été traités, la valeur Queued sur le groupe de processeurs du connecteur devient nulle. S’il reste des éléments dans les files d’attente du connecteur d’origine, il se peut qu’il y ait des écarts de données au démarrage du nouveau connecteur.

    10. Arrêtez tous les processeurs et tous les services de contrôleur dans le connecteur.

  2. Recherchez et copiez le nom de l’emplacement de réplication utilisée par le connecteur d’origine en affichant l’état du processeur le plus élevé dans le groupe Incremental Load avec le nom Read PostgreSQL CDC Stream. Le nom de l’emplacement de réplication est stocké sous la clé replication.slot.name. Copiez la valeur de la clé dans un éditeur de texte.

  3. Créez une nouvelle instance du connecteur. Si vous utilisez le même environnement d’exécution que le connecteur d’origine, vous pouvez choisir de conserver les contextes de paramètres existants et de réutiliser les paramètres.

    Prudence

    Le connecteur existant peut rester dans l’environnement d’exécution et n’interfère pas avec la nouvelle instance, tant qu’il reste à l’arrêt.

  4. Si vous procédez à une installation dans un environnement d’exécution différent, ou si vous avez supprimé les contextes de paramètres précédents, entrez tous les paramètres de configuration dans les nouveaux contextes de paramètres, y compris les noms et les modèles de tables, comme décrit dans Paramétrez Openflow Connector for PostgreSQL.

  5. Ouvrez le contexte PostgreSQL Ingestion Parameters et définissez le paramètre Ingestion Type sur incremental. Pour obtenir plus d’informations sur les considérations à prendre en compte, consultez Activer la réplication incrémentielle sans instantanés.

  6. Ouvrez le contexte PostgreSQL Source Parameters et définissez le paramètre Replication Slot Name sur la valeur que vous avez copiée précédemment.

  7. Démarrez le nouveau connecteur.

Notes sur l’utilisation

Le nouveau connecteur utilisera les mêmes tables de destination existantes que celles créées par le connecteur d’origine, mais créera de nouvelles tables de journal.