Partager via


Configurer PostgreSQL pour l’ingestion dans Azure Databricks

Important

Le connecteur PostgreSQL pour Lakeflow Connect est disponible en préversion publique. Contactez votre équipe de votre compte Databricks pour vous inscrire à la Préversion publique.

Cette page décrit les tâches de configuration source pour l’ingestion à partir de PostgreSQL dans Azure Databricks à l’aide de Lakeflow Connect.

Réplication logique pour la capture de données modifiées

Le connecteur PostgreSQL utilise la réplication logique pour suivre les modifications dans les tables sources. La réplication logique permet au connecteur de capturer des modifications de données (insertions, mises à jour et suppressions) sans nécessiter de déclencheurs ou de surcharge significative sur la base de données source.

La réplication logique PostgreSQL Lakeflow nécessite les éléments suivants :

  1. Lakeflow Connect prend en charge la réplication des données à partir de PostgreSQL version 13 et ultérieure.

  2. Configurez la base de données pour la réplication logique :

    Le paramètre wal_level PostgreSQL doit être défini sur logical.

  3. Créez des publications qui incluent toutes les tables que vous souhaitez répliquer.

  4. Créez des emplacements de réplication pour chaque catalogue qui sera répliqué.

Note

Les publications doivent être créées avant de créer des emplacements de réplication.

Pour plus d’informations sur la réplication logique, consultez la documentation sur la réplication logique sur le site web PostgreSQL.

Vue d’ensemble des tâches de configuration sources

Effectuez les tâches suivantes dans PostgreSQL avant d’ingérer des données dans Azure Databricks :

  1. Vérifier PostgreSQL 13 ou version ultérieure

  2. Configurer l’accès réseau (groupes de sécurité, règles de pare-feu ou VPN)

  3. Configurer la réplication logique :

    • Activer la réplication logique (wal_level = logical)
  4. Facultatif : Configurez le suivi DDL inline pour la détection automatique des modifications de schéma. Si vous souhaitez opter pour le suivi DDL inline, contactez le support Databricks.

Important

Si vous envisagez de répliquer à partir de plusieurs bases de données PostgreSQL, vous devez créer une publication et un emplacement de réplication distincts pour chaque base de données. Le script de suivi DDL inline (s’il est utilisé) doit également être exécuté dans chaque base de données.

Configurer la réplication logique

Pour activer la réplication logique dans PostgreSQL, configurez les paramètres de la base de données et configurez les objets nécessaires.

Définir le niveau WAL à logique

Le journal Write-Ahead (WAL) doit être configuré pour la réplication logique. Ce paramètre nécessite généralement un redémarrage de base de données.

  1. Vérifiez le paramètre actuel wal_level :

    SHOW wal_level;
    
  2. Si la valeur n’est pas logical, définie wal_level = logical dans la configuration du serveur et redémarrez le service PostgreSQL.

Créer un utilisateur de réplication

Créez un utilisateur dédié pour l’ingestion Databricks avec des privilèges de réplication :

CREATE USER databricks_replication WITH PASSWORD 'your_secure_password';
GRANT CONNECT ON DATABASE your_database TO databricks_replication;
ALTER USER databricks_replication WITH REPLICATION;

Pour connaître les exigences détaillées relatives aux privilèges, consultez les exigences de l’utilisateur de base de données PostgreSQL.

Définir l’identité de réplica pour les tables

Pour chaque table que vous souhaitez répliquer, configurez l’identité du réplica. Le paramètre approprié dépend de la structure de table :

Structure de table Identité de réplique requise Command
La table a une clé primaire et ne contient pas de colonnes TOASTables (par exemple, TEXT, BYTEA, VARCHAR(n) avec de grandes valeurs). DEFAULT ALTER TABLE schema_name.table_name REPLICA IDENTITY DEFAULT;
La table possède une clé primaire, mais inclut de grandes colonnes de longueur variable (TOASTable) FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;
La table n’a pas de clé primaire FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;

Pour plus d’informations sur les paramètres d’identité de réplica, consultez la documentation sur l’identité de réplica dans la documentation PostgreSQL.

Créer une publication

Créez une publication dans chaque base de données qui inclut les tables que vous souhaitez répliquer :

-- Create a publication for specific tables
CREATE PUBLICATION databricks_publication FOR TABLE schema_name.table1, schema_name.table2;

-- Or create a publication for all tables in a database
CREATE PUBLICATION databricks_publication FOR ALL TABLES;

Note

Vous devez créer une publication distincte dans chaque base de données PostgreSQL que vous souhaitez répliquer.

Configurer les paramètres d’emplacement de réplication

Avant de créer des emplacements de réplication, configurez les paramètres de serveur suivants :

Limiter la rétention WAL pour les emplacements de réplication

Paramètre : max_slot_wal_keep_size

Il est recommandé de ne pas définirmax_slot_wal_keep_size à -1 (valeur par défaut), car cela permet un ballonnement WAL illimité en raison de la rétention par des slots de réplication retardés ou inactifs. Selon votre charge de travail, définissez ce paramètre sur une valeur finie.

En savoir plus sur le paramètre max_slot_wal_keep_size dans la documentation officielle de PostgreSQL.

Note

Certains fournisseurs de cloud managés n’autorisent pas la modification de ce paramètre et s’appuient plutôt sur la surveillance intégrée des emplacements et le nettoyage automatique. Passez en revue le comportement de la plateforme avant de définir des alertes opérationnelles.

Pour plus d’informations, consultez :

Configurer la capacité d’emplacement de réplication

Paramètre : max_replication_slots

Chaque base de données PostgreSQL répliquée nécessite un emplacement de réplication logique. Définissez ce paramètre sur au moins le nombre de bases de données répliquées, ainsi que les besoins de réplication existants.

Configurer des expéditeurs WAL

Paramètre : max_wal_senders

Ce paramètre définit le nombre maximal de processus d’expéditeur WAL simultanés qui diffusent les données WAL vers les abonnés. Dans la plupart des cas, vous devez disposer d’un processus d’expéditeur WAL pour chaque emplacement de réplication afin de garantir une réplication de données efficace et cohérente.

Configurez max_wal_senders pour être au moins égal au nombre d’emplacements de réplication en cours d’utilisation, en tenant compte de toute autre utilisation existante. Il est recommandé de le définir légèrement plus haut pour offrir une flexibilité opérationnelle.

Créer un emplacement de réplication

Créez un emplacement de réplication dans chaque base de données que la passerelle d’ingestion Databricks utilisera pour suivre les modifications :

-- Create a replication slot with the pgoutput plugin
SELECT pg_create_logical_replication_slot('databricks_slot', 'pgoutput');

Important

  • Les emplacements de réplication contiennent les données WAL jusqu’à ce qu’elles soient consommées par le connecteur. Configurez le paramètre max_slot_wal_keep_size pour limiter la rétention WAL et empêcher la croissance WAL non limitée. Pour plus d’informations, consultez Configurer les paramètres d’emplacement de réplication .
  • Lorsque vous supprimez un pipeline d’ingestion, vous devez supprimer manuellement l’emplacement de réplication associé. Consultez Nettoyer les emplacements de réplication.

Facultatif : Configurer le suivi DDL inline

Le suivi DDL inline est une fonctionnalité facultative qui permet au connecteur de détecter et d’appliquer automatiquement les modifications de schéma à partir de la base de données source. Cette fonctionnalité est désactivée par défaut.

Avertissement

Le suivi DDL intégré est actuellement en préversion et nécessite de contacter le support Databricks pour l’activer pour votre espace de travail.

Pour plus d’informations sur les modifications de schéma gérées automatiquement et qui nécessitent une actualisation complète, consultez Comment les connecteurs managés gèrent-ils l’évolution du schéma ? et l’évolution du schéma.

Configurer le suivi DDL en ligne

Si le suivi DDL inline a été activé pour votre espace de travail, procédez comme suit dans chaque base de données PostgreSQL :

  1. Téléchargez et exécutez le script lakeflow_pg_ddl_change_tracking.sql :

    \i lakeflow_pg_ddl_change_tracking.sql
    
  2. Vérifiez que les déclencheurs et la table d’audit ont été créés correctement :

    -- Check for the DDL audit table
    SELECT * FROM pg_tables WHERE tablename = 'lakeflow_ddl_audit';
    
    -- Check for the event triggers
    SELECT * FROM pg_event_trigger WHERE evtname LIKE 'lakeflow%';
    
  3. Ajoutez la table d’audit DDL à votre publication :

    ALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
    

Notes de configuration spécifiques au cloud

AWS RDS et Aurora

  • Vérifiez que le paramètre rds.logical_replication est défini sur 1 dans le groupe de paramètres.

  • Configurez des groupes de sécurité pour autoriser les connexions à partir de l’espace de travail Databricks.

  • L’utilisateur de réplication nécessite le rôle rds_replication.

    GRANT rds_replication TO databricks_replication;
    

Base de données Azure pour PostgreSQL

  • Activez la réplication logique dans les paramètres du serveur via le portail Azure ou l’interface CLI.
  • Configurez des règles de pare-feu pour autoriser les connexions à partir de l’espace de travail Databricks.
  • Pour le serveur flexible, la réplication logique est prise en charge. Pour serveur unique, vérifiez que vous utilisez un niveau pris en charge.

GCP Cloud SQL pour PostgreSQL

  • Activez le drapeau cloudsql.logical_decoding dans les paramètres d’instance.
  • Configurez les réseaux autorisés pour autoriser les connexions à partir de l’espace de travail Databricks.
  • Vérifiez que l’indicateur cloudsql.enable_pglogical est défini on si vous utilisez des extensions pglogical.

Vérifier la configuration

Une fois les tâches d’installation terminées, vérifiez que la réplication logique est correctement configurée :

  1. Vérifiez que la valeur wal_level est définie sur logical:

    SHOW wal_level;
    
  2. Vérifiez que l’utilisateur de réplication dispose du replication privilège suivant :

    SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';
    
  3. Vérifiez que la publication existe :

    SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';
    
  4. Vérifiez que l’emplacement de réplication existe :

    SELECT slot_name, slot_type, active, restart_lsn
    FROM pg_replication_slots
    WHERE slot_name = 'databricks_slot';
    
  5. Vérifiez l'identité de la réplique pour vos tables :

    SELECT schemaname, tablename, relreplident
    FROM pg_tables t
    JOIN pg_class c ON t.tablename = c.relname
    WHERE schemaname = 'your_schema';
    

    La relreplident colonne doit s’afficher f pour l’identité de réplica FULL.

Étapes suivantes

Une fois la configuration source terminée, vous pouvez créer une passerelle d’ingestion et un pipeline pour ingérer des données à partir de PostgreSQL. Consultez Ingestion des données depuis PostgreSQL.