Répliquer des données depuis Lakebase
Ce guide vous montre comment publier des modifications d'une base de données Lakebase sur un abonné Postgres externe en utilisant la réplication logique. Lakebase joue le rôle de l'é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 voulez publier, contenant les tables que vous voulez publier.
- Un rôle Lakebase Postgres qui est membre du rôle
databricks_superuser, pour créer la publication. Il s’agit du rôle avec lequel vous vous connectez, et non du rôle utilisé par l’abonné. Vous créez le rôle de réplication de l’abonné à la première étape. - Connexions par mot de passe activées sur le projet. L'abonné se connecte avec un rôle de mot de passe Postgres natif, et les connexions par mot de passe sont désactivées par default pour les nouveaux projets. Voir Gérer les connexions par 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 région différente. La réplication entre des 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 default à wal_level = logical. Il n'y a donc pas d'étape par projet pour activer la publication.
Créez un rôle de réplication
Créez un rôle dédié pour que l'abonné externe puisse se connecter. L'abonné se connecte avec un nom d'utilisateur et un mot de passe Postgres, créez donc un rôle de mot de passe Postgres natif , et non un rôle OAuth. Les rôles OAuth s'authentifient avec des jetons Databricks de courte durée, que la chaîne de connexion d'abonnement basée sur le 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, CLI ou l'API ont cet attribut, que vous leur accordiez ou non databricks_superuser. Dans l'application Lakebase Ajouter un rôle > Mot de passe tab, saisissez un nom de rôle. Vous n'avez pas besoin de sélectionner databricks_superuser. Voir Créer un rôle de mot de passe Postgres natif.
Pour définir vous-même le mot de passe, 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 en 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 une colonne PRIMARY KEY ou une identité de réplique définie. Voir Identité de réplique dans la documentation Postgres.
CREATE PUBLICATION my_publication FOR TABLE orders, customers;
Autoriser l'abonné à se connecter
L’abonné externe se connecte à Lakebase via le proxy de bordure Databricks, qui applique la liste d’accès IP du Workspace. Autorisez l’adresse IP de l’abonné dans la liste d’accès IP de Workspace afin qu’elle puisse atteindre votre base de données Lakebase. Consultez 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 l’endpoint public Lakebase.
S'abonner à partir de la base de données externe
Sur 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 sur les clés en double ou les violations de contrainte si une table cible contient déjà des lignes. Vous pouvez créer les tables manuellement, ou vider le schéma depuis Lakebase et le charger dans l'abonné. Consultez Vider le schéma uniquement.
Ensuite, en tant que rôle pouvant créer des abonnements sur la base de données externe, créez 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 Hostname de votre endpoint direct, et non le Hostname du pooler de connexions -pooler. Voir Pool de connexions.
Lakebase enforces TLS on all connections, so traffic is always encrypted with no action needed. For the strongest protection, connect with sslmode=verify-full, which also verifies the Lakebase server certificate against your system's root store. Lakebase uses a publicly trusted certificate, so no extra certificate is needed. The weaker sslmode=require encrypts but does not verify the server.
Vérifier la réplication
Sur l’abonné externe, confirmez que les lignes existantes sont bien arrivées :
SELECT COUNT(*) FROM orders;
Insérez ou mettez à jour une ligne sur 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 délai de 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 query de statut de synchronisation par table dans Surveiller la réplication sur l'abonné et attendez que chaque table affiche Ready (fully live).
La connexion de l’abonné maintient un emplacement de réplication sur l’éditeur Lakebase. Pendant qu’un abonné réplique activement des données, le compute Lakebase ne monte pas en charge jusqu'à zéro. Voir Réplication logique et monter en charge jusqu'à zéro. Si l’abonné cesse de consommer les modifications, l’emplacement devient inactif et Lakebase le supprime au bout de 40 heures environ. Voir Suppression automatique des emplacements inactifs.
Étapes suivantes
- Gérer la réplication : surveiller les publications et les emplacements, et dépanner. Voir Gérer et surveiller la réplication logique.
- Migrer vers Lakebase : répliquez une base de données Postgres externe vers Lakebase. Voir Répliquer les données vers Lakebase.
- Comparer les méthodes : choisissez la bonne façon de déplacer des données vers et hors de Lakebase. Voir Déplacer les données vers et hors de Lakebase.