Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze gids laat zien hoe je wijzigingen uit een Lakebase-database kunt publiceren naar een externe Postgres-abonnee met behulp van logische replicatie. Lakebase fungeert als uitgever: het definieert een publicatie en de externe abonnee maakt verbinding om de wijzigingen te ontvangen.
Voorwaarden
- Een Lakebase-project met de database waaruit je wilt publiceren, met de tabellen die je wilt publiceren.
- Een Lakebase Postgres-rol die lid is van de
databricks_superuserrol, zoals de rol van de projecteigenaar, om de publicatie te creëren. Omdatabricks_superuseraan een andere rol toe te kennen, zie Postgres-rollen aanmaken of een rol bijwerken. Dit is de rol waarmee je verbinding maakt, niet de rol die de abonnee gebruikt. Je creëert in de eerste stap de replicatierol van de abonnee. - Wachtwoordverbindingen zijn ingeschakeld op het project. De abonnee maakt verbinding met een native Postgres-wachtwoordrol, en wachtwoordverbindingen zijn standaard uitgeschakeld voor nieuwe projecten. Zie Wachtwoordverbindingen beheren.
- Een externe Postgres-database om als subscriber op te treden. De abonnee kan ook een Lakebase-database in een andere regio zijn. Replicatie tussen Lakebase-databases in dezelfde regio wordt niet ondersteund.
Logische replicatie wordt ondersteund in Lakebase, dat standaard op wal_level = logical draait, dus er is geen stap per project om publicatie in te schakelen.
Creëer een replicatierol
Creëer een speciale rol voor de externe abonnee om als te verbinden. De abonnee maakt verbinding met een Postgres-gebruikersnaam en wachtwoord, dus maak een native Postgres-wachtwoordrol aan, geen OAuth-rol. OAuth-rollen authenticeren met kortstondige Azure Databricks-tokens, die niet kunnen worden gebruikt door de wachtwoordgebaseerde abonnementsverbindingsreeks. De rol moet het REPLICATION attribuut hebben. Rollen die je aanmaakt in de Lakebase App, CLI of API hebben deze eigenschap, ongeacht of je ze databricks_superusertoekent of niet. Voer in het tabblad Lakebase App Rol toevoegen>Wachtwoord een rolnaam in. Je hoeft niet te selecteren databricks_superuser. Zie Een systeemeigen Postgres-wachtwoordrol maken.
Om het wachtwoord zelf in te stellen, maak je de rol aan met SQL. Voeg het REPLICATION attribuut toe, omdat rollen die met SQL zijn aangemaakt deze niet automatisch ontvangen:
CREATE ROLE replication_user WITH LOGIN REPLICATION PASSWORD '<password>';
Als de rol de tabellen die je repliceert niet bezit, geef hem dan leestoegang:
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;
Maak een publicatie
Maak verbinding met de Lakebase-database als lid van de databricks_superuser rol, en maak vervolgens een publicatie aan voor de tabellen die je wilt repliceren. Elke tabel moet een PRIMARY KEY of een replica-identiteitsset hebben. Zie Replica-identiteit in de Postgres-documentatie.
CREATE PUBLICATION my_publication FOR TABLE orders, customers;
Laat de abonnee verbinding maken
De externe abonnee maakt verbinding met Lakebase via de Azure Databricks edge-proxy, die de IP-toegangslijst van de werkruimte afdwingt. Sta het IP-adres van de abonnee toe in de IP-toegangslijst van de werkruimte zodat het toegang heeft tot je Lakebase-database. Zie De IP-toegangslijst beheren.
Private Link wordt niet ondersteund voor de abonneeverbinding. De abonnee maakt verbinding via het openbare Lakebase-eindpunt.
Abonneer je op de externe database
Maak in de externe Postgres-database de doeltabellen aan met dezelfde namen en kolommen als de tabellen die je publiceert. Maak ze leeg aan: de eerste kopie faalt bij dubbele sleutels of constraint-overtredingen als een doeltabel al rijen bevat. Je kunt de tabellen handmatig aanmaken, of het schema uit Lakebase dumpen en in de abonnee laden. Zie alleen het schema dumpen.
Maak dan, met een rol die abonnementen op de externe database kan aanmaken, een abonnement dat verbinding maakt met 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;
Gebruik een directe verbinding voor de abonnee. Logische replicatie vereist een persistente verbinding, dus <lakebase-host> moet de hostnaam van je directe endpoint zijn, niet de hostnaam van de -pooler connection pooler. Zie Verbindingspooling.
Note
Lakebase handhaaft TLS op alle verbindingen, dus verkeer is altijd versleuteld zonder dat er actie nodig is. Voor de sterkste bescherming maak je verbinding met sslmode=verify-full, die ook het Lakebase-servercertificaat verifieert tegen de rootopslag van je systeem. Lakebase gebruikt een openbaar vertrouwd certificaat, dus er is geen extra certificaat nodig. De zwakkere sslmode=require versleutelt maar verifieert de server niet.
Verifieer replicatie
Bevestig bij de externe abonnee dat de bestaande rijen zijn aangekomen:
SELECT COUNT(*) FROM orders;
Voeg een rij in of werk een rij bij op Lakebase, en vraag daarna opnieuw naar de abonnee. De wijziging verschijnt binnen enkele seconden bij de abonnee.
Controleer de abonnementsstatus en lag op de abonnee:
SELECT subname, received_lsn, latest_end_lsn, last_msg_receipt_time
FROM pg_catalog.pg_stat_subscription;
Om te bevestigen dat de eerste kopie klaar is, voer je de per-tabel synchronisatiestatusquery uit in Monitorreplicatie op de abonnee en wacht tot bij elke tabel Ready (fully live) staat.
De verbinding van de subscriber onderhoudt een replicatieslot op de Lakebase-uitgever. Terwijl een abonnee actief repliceert, schaalt de Lakebase compute niet naar nul. Zie Logische replicatie en schalen naar nul. Als de abonnee stopt met het consumeren van wijzigingen, wordt het slot inactief en verwijdert Lakebase deze na ongeveer 40 uur. Zie Automatische verwijdering van inactieve slots.
Volgende stappen
- Beheer replicatie: Monitor publicaties en slots, en los problemen op. Zie Logische replicatie beheren en bewaken.
- Migreren naar Lakebase: Repliceer een externe Postgres-database in Lakebase. Zie Data repliceren in Lakebase.
- Vergelijk methoden: Kies de juiste manier om data in en uit Lakebase te verplaatsen. Zie Gegevens verplaatsen in en uit Lakebase.