Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce guide vous montre comment publier des modifications d’une base de données Lakebase vers un abonné Postgres externe en utilisant la réplication logique. Lakebase agit en tant qu’éditeur : il définit une publication, et l’abonné externe se connecte pour recevoir les modifications.
Conditions préalables
- Un projet Lakebase avec la base de données à partir de laquelle vous souhaitez publier, contenant les tables que vous souhaitez publier.
- Un rôle Lakebase Postgres qui est un membre du
databricks_superuserrôle, comme celui du propriétaire du projet, pour créer la publication. Pour attribuerdatabricks_superuserà un autre rôle, voir Créer des rôles Postgres ou Mettre à jour un rôle. C’est le rôle avec lequel vous vous connectez, pas celui utilisé par l’abonné. Vous créez le rôle de réplication de l’abonné lors de la première étape. - Connexions par mot de passe activées sur le projet. L’abonné se connecte avec un rôle avec authentification par mot de passe native de Postgres, et les connexions par mot de passe sont désactivées par défaut pour les nouveaux projets. Consultez Gérer les connexions de mot de passe.
- Une base de données Postgres externe servant d’abonné. L’abonné peut aussi être une base de données Lakebase dans une autre région. La réplication entre bases de données Lakebase dans la même région n’est pas prise en charge.
La réplication logique est prise en charge dans Lakebase, qui s’exécute par défaut avec le paramètre wal_level = logical. Il n’est donc pas nécessaire d’activer la publication pour chaque projet.
Créer un rôle de réplication
Créez un rôle dédié pour que l’abonné externe puisse se connecter avec ce rôle. L’abonné se connecte avec un nom d’utilisateur et un mot de passe Postgres, donc créez un rôle Postgres natif avec mot de passe, pas un rôle OAuth. Les rôles OAuth s’authentifient avec des tokens Azure Databricks éphémères, que la chaîne de connexion d’abonnement basée sur un mot de passe ne peut pas utiliser. Le rôle doit avoir l’attribut REPLICATION. Les rôles que vous créez dans l’application Lakebase, la CLI ou l’API possèdent cet attribut, que vous le leur databricks_superuseraccordiez ou non. Dans l’application Lakebase, dans l’onglet Ajouter un rôle>, saisissez un nom de rôle. Vous n’avez pas besoin de sélectionner databricks_superuser. Consultez Créer un rôle de mot de passe Postgres natif.
Pour définir le mot de passe vous-même, créez le rôle avec SQL à la place. Incluez l’attribut REPLICATION , car les rôles créés avec SQL ne le reçoivent pas automatiquement :
CREATE ROLE replication_user WITH LOGIN REPLICATION PASSWORD '<password>';
Si le rôle ne possède pas les tables que vous répliquez, accordez-lui un accès à la lecture :
GRANT USAGE ON SCHEMA public TO replication_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO replication_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO replication_user;
Créer une publication
Connectez-vous à la base de données Lakebase en tant que membre du rôle databricks_superuser, puis créez une publication pour les tables que vous souhaitez répliquer. Chaque table doit avoir un PRIMARY KEY ou une identité de réplica définie. Voir identité de réplica dans la documentation Postgres.
CREATE PUBLICATION my_publication FOR TABLE orders, customers;
Permettre à l’abonné de se connecter
L’abonné externe se connecte à Lakebase via le proxy edge d’Azure Databricks, qui applique la liste d’accès IP de l’espace de travail. Autorisez l’adresse IP de l’abonné dans la liste d’accès IP de l’espace de travail afin qu’elle puisse accéder à votre base de données Lakebase. Voir Gérer la liste d’accès IP.
Private Link n’est pas pris en charge pour la connexion de l’abonné. L’abonné se connecte via le point de terminaison public Lakebase.
Abonnez-vous depuis la base de données externe
Dans la base de données Postgres externe, créez les tables cibles avec les mêmes noms et colonnes que les tables que vous publiez. Créez-les vides : la copie initiale échoue en cas de clés dupliquées ou de violations de contraintes si une table cible contient déjà des lignes. Vous pouvez créer les tables manuellement, ou exporter le schéma depuis Lakebase et le charger dans l’abonné. Voir Exporter uniquement le schéma.
Ensuite, en tant que rôle pouvant créer des abonnements sur la base de données externe, créer un abonnement qui se connecte à Lakebase :
CREATE SUBSCRIPTION my_subscription
CONNECTION 'host=<lakebase-host> port=5432 dbname=<lakebase-db> user=replication_user password=<password> sslmode=verify-full sslrootcert=system'
PUBLICATION my_publication;
Utilisez une connexion directe pour l’abonné. La réplication logique nécessite une connexion persistante, donc <lakebase-host> doit être le nom d’hôte de votre point de terminaison direct, et non le nom d’hôte -pooler du pooler de connexion. Voir pool de connexions.
Note
Lakebase applique TLS sur toutes les connexions, donc le trafic est toujours chiffré sans qu’aucune action ne soit nécessaire. Pour une protection la plus forte, connectez-vous avec sslmode=verify-full, qui vérifie également le certificat serveur Lakebase par rapport au magasin de certificats racines de votre système. Lakebase utilise un certificat de confiance publique, donc aucun certificat supplémentaire n’est nécessaire. Le sslmode=require le plus faible chiffre mais ne vérifie pas le serveur.
Vérifier la réplication
Sur l’abonné externe, confirmez que les enregistrements existants sont arrivés :
SELECT COUNT(*) FROM orders;
Insérez ou mettez à jour une ligne dans Lakebase, puis interrogez à nouveau l’abonné. La modification apparaît sur l’abonné en quelques secondes.
Vérifiez l’état de l’abonnement et le retard de réplication sur l’abonné :
SELECT subname, received_lsn, latest_end_lsn, last_msg_receipt_time
FROM pg_catalog.pg_stat_subscription;
Pour confirmer que la copie initiale est terminée, exécutez la requête d’état de synchronisation par table dans Surveiller la réplication sur l’abonné et attendez que chaque table lise Ready (fully live).
La connexion de l’abonné maintient un slot de réplication sur l’éditeur Lakebase. Lorsqu’un abonné effectue activement une réplication, la capacité de calcul Lakebase n’est pas mise à l’échelle à zéro. Voir Réplication logique et mise à l’échelle jusqu’à zéro. Si l’abonné cesse de consommer les changements, le slot devient inactif et Lakebase le supprime après environ 40 heures. Voir Suppression automatique des emplacements inactifs.
Étapes suivantes
- Gérer la réplication : surveiller les publications et les slots, et dépanner. Voir Gérer et surveiller la réplication logique.
- Migrer vers Lakebase : Répliquer une base de données Postgres externe dans Lakebase. Voir Répliquer les données dans Lakebase.
- Comparer les méthodes : Choisissez la bonne façon de transférer les données vers et depuis Lakebase. Voir Déplacer les données à l’intérieur et à l’extérieur de Lakebase.