Delen via


PostgreSQL configureren voor opname in Azure Databricks

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:

  1. Lakeflow Connect ondersteunt gegevensreplicatie vanuit PostgreSQL versie 13 en hoger.

  2. Configureer de database voor logische replicatie:

    De PostgreSQL-parameter wal_level moet worden ingesteld op logical.

  3. Maak publicaties met alle tabellen die u wilt repliceren.

  4. 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:

  1. PostgreSQL 13 of hoger verifiëren

  2. Netwerktoegang configureren (beveiligingsgroepen, firewallregels of VPN)

  3. Logische replicatie configureren:

    • Logische replicatie inschakelen (wal_level = logical)
  4. 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.

  1. Controleer de huidige wal_level instelling:

    SHOW wal_level;
    
  2. Als de waarde niet logicalis, stelt u wal_level = logical deze 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_size parameter 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:

  1. Download en voer het lakeflow_pg_ddl_change_tracking.sql-script uit:

    \i lakeflow_pg_ddl_change_tracking.sql
    
  2. Controleer 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%';
    
  3. 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 op 1 in de parametergroep.

  • Configureer beveiligingsgroepen om verbindingen vanuit de Databricks-werkruimte toe te staan.

  • De replicatiegebruiker vereist de rds_replication rol:

    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_decoding vlag 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 op on als u pglogical-extensies gebruikt.

De configuratie controleren

Nadat u de installatietaken hebt voltooid, controleert u of logische replicatie juist is geconfigureerd:

  1. Controleer of het wal_level is ingesteld op logical:

    SHOW wal_level;
    
  2. Controleer of de replicatiegebruiker de replication bevoegdheid heeft:

    SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';
    
  3. Controleer of de publicatie bestaat:

    SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';
    
  4. Controleer of het replicatieslot bestaat:

    SELECT slot_name, slot_type, active, restart_lsn
    FROM pg_replication_slots
    WHERE slot_name = 'databricks_slot';
    
  5. 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 relreplident kolom zou f moeten 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.