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.
Belangrijk
De PostgreSQL-connector voor Lakeflow Connect bevindt zich in openbare preview. Neem contact op met uw Databricks-accountteam om u in te schrijven voor de openbare preview.
Op deze pagina worden de broninstallatietaken beschreven voor opname vanuit PostgreSQL in Azure Databricks met behulp van Lakeflow Connect.
Logische replicatie voor het vastleggen van wijzigingengegevens
De PostgreSQL-connector maakt gebruik van logische replicatie om wijzigingen in de brontabellen bij te houden. Met logische replicatie kan de connector gegevenswijzigingen vastleggen (invoegingen, updates en verwijderingen) zonder triggers of aanzienlijke overhead voor de brondatabase.
Logische replicatie van Lakeflow PostgreSQL vereist het volgende:
Lakeflow Connect ondersteunt gegevensreplicatie vanuit PostgreSQL versie 13 en hoger.
Configureer de database voor logische replicatie:
De PostgreSQL-parameter
wal_levelmoet worden ingesteld oplogical.Maak publicaties met alle tabellen die u wilt repliceren.
Maak replicatieslots voor elke catalogus die zal worden gerepliceerd.
Opmerking
Publicaties moeten worden gemaakt voordat u replicatieslots maakt.
Zie de documentatie over logische replicatie op de PostgreSQL-website voor meer informatie over logische replicatie .
Overzicht van broninstallatietaken
Voltooi de volgende taken in PostgreSQL voordat u gegevens opneemt in Azure Databricks:
PostgreSQL 13 of hoger verifiëren
Netwerktoegang configureren (beveiligingsgroepen, firewallregels of VPN)
Logische replicatie configureren:
- Logische replicatie inschakelen (
wal_level = logical)
- Maak een replicatiegebruiker met de vereiste bevoegdheden. Zie gebruikersvereisten voor PostgreSQL-database
- Stel de replica-identiteit voor tabellen in. Zie Replica-identiteit instellen voor tabellen
- Publicaties en replicatiesloten maken
- Logische replicatie inschakelen (
Optioneel: Inline DDL-tracering configureren voor automatische detectie van schemawijziging. Als u wilt kiezen voor de inline DDL-tracering, neemt u contact op met databricks-ondersteuning.
Belangrijk
Als u van plan bent om te repliceren vanuit meerdere PostgreSQL-databases, moet u voor elke database een afzonderlijke publicatie en replicatiesite maken. Het inline DDL-traceringsscript (indien gebruikt) moet ook in elke database worden uitgevoerd.
Logische replicatie configureren
Als u logische replicatie in PostgreSQL wilt inschakelen, configureert u de database-instellingen en stelt u de benodigde objecten in.
Het WAL-niveau instellen op logisch
Het Write-Ahead Logboek (WAL) moet worden geconfigureerd voor logische replicatie. Voor deze instelling moet de database doorgaans opnieuw worden opgestart.
Controleer de huidige
wal_levelinstelling:SHOW wal_level;Als de waarde niet
logicalis, stelt uwal_level = logicaldeze in de serverconfiguratie in en start u de PostgreSQL-service opnieuw.
Een replicatiegebruiker maken
Maak een toegewezen gebruiker voor Databricks-opname met replicatiebevoegdheden:
CREATE USER databricks_replication WITH PASSWORD 'your_secure_password';
GRANT CONNECT ON DATABASE your_database TO databricks_replication;
ALTER USER databricks_replication WITH REPLICATION;
Zie de gebruikersvereisten van de PostgreSQL-database voor gedetailleerde vereisten voor bevoegdheden.
Replica-identiteit instellen voor tabellen
Configureer de replica-identiteit voor elke tabel die u wilt repliceren. De juiste instelling is afhankelijk van de tabelstructuur:
| Tabelstructuur | Vereiste REPLICA-IDENTITEIT | Command |
|---|---|---|
Tabel heeft een primaire sleutel en bevat geen TOASTable-kolommen (bijvoorbeeld TEXTBYTEA, VARCHAR(n) met grote waarden) |
DEFAULT |
ALTER TABLE schema_name.table_name REPLICA IDENTITY DEFAULT; |
| Tabel heeft een primaire sleutel, maar bevat grote kolommen met een variabele lengte (TOASTable) | FULL |
ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL; |
| Tabel heeft geen primaire sleutel | FULL |
ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL; |
Zie Replica-identiteit in de PostgreSQL-documentatie voor meer informatie over instellingen voor replica-identiteiten.
Een publicatie maken
Maak een publicatie in elke database die de tabellen bevat die u wilt repliceren:
-- 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;
Opmerking
U moet een afzonderlijke publicatie maken in elke PostgreSQL-database die u wilt repliceren.
Parameters voor replicatieslot configureren
Voordat u replicatiesites maakt, configureert u de volgende serverparameters:
WAL-retentie voor replicatieslots beperken
Parameter: max_slot_wal_keep_size
Het wordt aanbevolen om niet in te stellenmax_slot_wal_keep_size op -1 (de standaardwaarde), omdat dit ongelimiteerde WAL-bloat toestaat vanwege retentie door vertraagde of inactieve replicatieslots. Afhankelijk van uw workload stelt u deze parameter in op een eindige waarde.
Meer informatie over max_slot_wal_keep_size parameter vindt u in de officiële PostgreSQL-documentatie.
Opmerking
Sommige beheerde cloudproviders staan geen wijziging van deze parameter toe en vertrouwen in plaats daarvan op ingebouwde slotbewaking en automatisch opschonen. Controleer het platformgedrag voordat u operationele waarschuwingen instelt.
Voor meer informatie, zie:
Capaciteit van replicatieslot configureren
Parameter: max_replication_slots
Voor elke PostgreSQL-database die wordt gerepliceerd, is één logische replicatiesite vereist. Stel deze parameter in op ten minste het aantal databases dat wordt gerepliceerd, plus eventuele bestaande replicatiebehoeften.
WAL-afzenders configureren
Parameter: max_wal_senders
Met deze parameter definieert u het maximum aantal gelijktijdige WAL-afzenderprocessen waarmee WAL-gegevens worden gestreamd naar abonnees. In de meeste gevallen moet u één WAL-afzenderproces hebben voor elke replicatiesite om efficiënte en consistente gegevensreplicatie te garanderen.
Configureer max_wal_senders dat deze ten minste gelijk is aan het aantal replicatieslots dat wordt gebruikt, door rekening te houden met elk ander bestaand gebruik. Het wordt aanbevolen om het iets hoger in te stellen om operationele flexibiliteit te bieden.
Een replicatieslot maken
Maak een replicatiesite in elke database die door de Databricks-opnamegateway wordt gebruikt om wijzigingen bij te houden:
-- Create a replication slot with the pgoutput plugin
SELECT pg_create_logical_replication_slot('databricks_slot', 'pgoutput');
Belangrijk
- Replicatiesleuven houden WAL-loggegevens vast totdat deze door de connector worden verbruikt. Configureer de
max_slot_wal_keep_sizeparameter om WAL-retentie te beperken en niet-gebonden WAL-groei te voorkomen. Zie Parameters voor replicatieslot configureren voor meer informatie. - Wanneer u een opnamepijplijn verwijdert, moet u het bijbehorende replicatieslot handmatig verwijderen. Zie ook Replicatieslots opschonen.
Optioneel: Inline DDL-tracering configureren
Inline DDL-tracering is een optionele functie waarmee de connector automatisch schemawijzigingen van de brondatabase kan detecteren en toepassen. Deze functie is standaard uitgeschakeld.
Waarschuwing
Inline DDL-tracering is momenteel in preview en hiervoor moet u contact opnemen met Databricks-ondersteuning om het in te schakelen voor uw werkruimte.
Zie Hoe kunnen beheerde connectors de evolutie van schema's verwerken? en Schemaontwikkeling voor informatie over welke schemawijzigingen automatisch worden verwerkt en waarvoor een volledige vernieuwing is vereist.
Inline DDL-tracering instellen
Als inline DDL-tracering is ingeschakeld voor uw werkruimte, voert u deze stappen uit in elke PostgreSQL-database:
Download en voer het lakeflow_pg_ddl_change_tracking.sql-script uit:
\i lakeflow_pg_ddl_change_tracking.sqlControleer of de triggers en de audittabel succesvol zijn gemaakt.
-- 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%';Voeg de DDL-audittabel toe aan uw publicatie:
ALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
Cloudspecifieke configuratieopmerkingen
AWS RDS en Aurora
Zorg ervoor dat de
rds.logical_replication-parameter is ingesteld op1in de parametergroep.Configureer beveiligingsgroepen om verbindingen vanuit de Databricks-werkruimte toe te staan.
De replicatiegebruiker vereist de
rds_replicationrol:GRANT rds_replication TO databricks_replication;
Azure-database voor PostgreSQL
- Schakel logische replicatie in de serverparameters in via Azure Portal of CLI.
- Configureer firewallregels om verbindingen vanuit de Databricks-werkruimte toe te staan.
- Voor Flexibele server wordt logische replicatie ondersteund. Voor één server moet u ervoor zorgen dat u een ondersteunde laag gebruikt.
GCP Cloud SQL for PostgreSQL
- Schakel de
cloudsql.logical_decodingvlag in de instantie-instellingen in. - Configureer geautoriseerde netwerken om verbindingen vanuit de Databricks-werkruimte toe te staan.
- Zorg ervoor dat de
cloudsql.enable_pglogical-vlag is ingesteld oponals u pglogical-extensies gebruikt.
De configuratie controleren
Nadat u de installatietaken hebt voltooid, controleert u of logische replicatie juist is geconfigureerd:
Controleer of het
wal_levelis ingesteld oplogical:SHOW wal_level;Controleer of de replicatiegebruiker de
replicationbevoegdheid heeft:SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';Controleer of de publicatie bestaat:
SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';Controleer of het replicatieslot bestaat:
SELECT slot_name, slot_type, active, restart_lsn FROM pg_replication_slots WHERE slot_name = 'databricks_slot';Controleer de replica-identiteit voor uw tabellen:
SELECT schemaname, tablename, relreplident FROM pg_tables t JOIN pg_class c ON t.tablename = c.relname WHERE schemaname = 'your_schema';De
relreplidentkolom zoufmoeten tonen voor de volledige replica-identiteit.
Volgende stappen
Nadat u de broninstallatie hebt voltooid, kunt u een opnamegateway en pijplijn maken om gegevens op te nemen uit PostgreSQL. Zie Gegevens opnemen uit PostgreSQL.