Freigeben über


Konfigurieren von PostgreSQL für die Aufnahme in Azure Databricks

Von Bedeutung

Der PostgreSQL-Connector für Lakeflow Connect befindet sich in der öffentlichen Vorschau. Wenden Sie sich an Ihr Databricks-Kontoteam, um sich für die Public Preview zu registrieren.

Auf dieser Seite werden die Quelleinrichtungsaufgaben für die Aufnahme von PostgreSQL in Azure Databricks mithilfe von Lakeflow Connect beschrieben.

Logische Replikation für die Änderungsdatenerfassung

Der PostgreSQL-Connector verwendet die logische Replikation, um Änderungen in den Quelltabellen nachzuverfolgen. Die logische Replikation ermöglicht es dem Connector, Datenänderungen (Einfügungen, Aktualisierungen und Löschungen) zu erfassen, ohne dass Trigger oder erheblicher Aufwand für die Quelldatenbank erforderlich ist.

Die Logische Replikation von Lakeflow PostgreSQL erfordert Folgendes:

  1. Lakeflow Connect unterstützt die Datenreplikation von PostgreSQL, Version 13 und höher.

  2. Konfigurieren Sie die Datenbank für die logische Replikation:

    Der PostgreSQL-Parameter wal_level muss auf logical.

  3. Erstellen Sie Publikationen, die alle Tabellen enthalten, die Sie replizieren möchten.

  4. Erstellen Sie Replikationsplätze für jeden Katalog, der repliziert wird.

Hinweis

Publikationen müssen erstellt werden, bevor Replikationsslots erstellt werden.

Weitere Informationen zur logischen Replikation finden Sie in der Dokumentation zur Logischen Replikation auf der Website der PostgreSQL.

Übersicht über die Aufgaben zur Quelleneinrichtung

Führen Sie die folgenden Aufgaben in PostgreSQL aus, bevor Sie Daten in Azure Databricks aufnehmen:

  1. Überprüfen Sie PostgreSQL 13 oder höher

  2. Konfigurieren des Netzwerkzugriffs (Sicherheitsgruppen, Firewallregeln oder VPN)

  3. Logische Replikation konfigurieren:

    • Aktivieren der logischen Replikation (wal_level = logical)
  4. Optional: Konfigurieren sie die Inline-DDL-Nachverfolgung für die automatische Schemaänderungserkennung. Wenn Sie sich für die Inline-DDL-Nachverfolgung entscheiden möchten, wenden Sie sich an die Databricks-Unterstützung.

Von Bedeutung

Wenn Sie beabsichtigen, aus mehreren PostgreSQL-Datenbanken zu replizieren, müssen Sie für jede Datenbank einen separaten Publikations- und Replikationsplatz erstellen. Das Inline-DDL-Tracking-Skript (sofern verwendet) muss auch in jeder Datenbank ausgeführt werden.

Logische Replikation konfigurieren

Um die logische Replikation in PostgreSQL zu aktivieren, konfigurieren Sie die Datenbankeinstellungen, und richten Sie die erforderlichen Objekte ein.

Festlegen der WAL-Ebene auf logisch

Das Write-Ahead-Protokoll (WAL) muss für die logische Replikation konfiguriert werden. Für diese Einstellung ist in der Regel ein Datenbankneustart erforderlich.

  1. Überprüfen Sie die aktuelle wal_level Einstellung:

    SHOW wal_level;
    
  2. Wenn der Wert nicht logicalist, legen Sie in der Serverkonfiguration fest wal_level = logical , und starten Sie den PostgreSQL-Dienst neu.

Erstellen eines Replikationsbenutzers

Erstellen Sie einen dedizierten Benutzer für die Erfassung von Databricks mit Replikationsberechtigungen:

CREATE USER databricks_replication WITH PASSWORD 'your_secure_password';
GRANT CONNECT ON DATABASE your_database TO databricks_replication;
ALTER USER databricks_replication WITH REPLICATION;

Detaillierte Berechtigungsanforderungen finden Sie unter Den Benutzeranforderungen der PostgreSQL-Datenbank.

Festlegen der Replikatidentität für Tabellen

Konfigurieren Sie für jede Tabelle, die Sie replizieren möchten, die Replikatidentität. Die richtige Einstellung hängt von der Tabellenstruktur ab:

Tabellenstruktur Erforderliche Replikat-Identität Command
Tabelle hat einen Primärschlüssel und enthält keine TOASTable-Spalten (zum Beispiel TEXT, BYTEA, VARCHAR(n) mit großen Werten). DEFAULT ALTER TABLE schema_name.table_name REPLICA IDENTITY DEFAULT;
Die Tabelle hat einen Primärschlüssel, enthält jedoch große, variabel lange (TOASTable) Spalten. FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;
Tabelle hat keinen Primärschlüssel FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;

Weitere Informationen zu Replikatidentitätseinstellungen finden Sie in der PostgreSQL-Dokumentation unter Replikatidentität .

Erstellen einer Veröffentlichung

Erstellen Sie eine Publikation in jeder Datenbank, die die zu replizierenden Tabellen enthält:

-- 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;

Hinweis

Sie müssen eine separate Publikation in jeder PostgreSQL-Datenbank erstellen, die Sie replizieren möchten.

Konfigurieren von Replikationsplatzparametern

Konfigurieren Sie vor dem Erstellen von Replikationsplätzen die folgenden Serverparameter:

Einschränken der WAL-Aufbewahrung für Replikationsplätze

Parameter: max_slot_wal_keep_size

Es wird empfohlen, nicht aufmax_slot_wal_keep_size (den Standardwert) festzulegen-1, da dies eine ungebundene WAL-Bloat aufgrund einer Aufbewahrung durch Verzögerungen oder inaktive Replikationsplätze zulässt. Legen Sie je nach Workload diesen Parameter auf einen endlichen Wert fest.

Erfahren Sie mehr über max_slot_wal_keep_size Parameter in der offiziellen PostgreSQL-Dokumentation.

Hinweis

Einige verwaltete Cloudanbieter lassen keine Änderung dieses Parameters zu und verlassen sich stattdessen auf die integrierte Slotüberwachung und automatische Bereinigung. Überprüfen Sie das Plattformverhalten, bevor Sie Betriebswarnungen festlegen.

Weitere Informationen finden Sie unter:

Konfigurieren der Kapazität des Replikationsplatzes

Parameter: max_replication_slots

Jede replizierte PostgreSQL-Datenbank erfordert einen logischen Replikationsplatz. Legen Sie diesen Parameter auf mindestens die Anzahl der replizierten Datenbanken sowie alle vorhandenen Replikationsanforderungen fest.

Konfigurieren von WAL-Absendern

Parameter: max_wal_senders

Dieser Parameter definiert die maximale Anzahl gleichzeitiger WAL-Absenderprozesse, die WAL-Daten an Abonnenten streamen. In den meisten Fällen sollten Sie über einen WAL-Absenderprozess für jeden Replikationsplatz verfügen, um eine effiziente und konsistente Datenreplikation sicherzustellen.

Konfigurieren Sie max_wal_senders so, dass sie mindestens der Anzahl der verwendeten Replikationsplätze entspricht, wobei alle anderen vorhandenen Verwendungen in Rechnung stehen. Es wird empfohlen, es etwas höher festzulegen, um die betriebstechnische Flexibilität zu gewährleisten.

Erstellen eines Replikations-Slots

Erstellen Sie einen Replikationsslot in jeder Datenbank, die das Databricks-Ingestion-Gateway zum Nachverfolgen von Änderungen verwendet:

-- Create a replication slot with the pgoutput plugin
SELECT pg_create_logical_replication_slot('databricks_slot', 'pgoutput');

Von Bedeutung

  • Replikationsslots halten WAL-Daten, bis sie vom Connector verbraucht werden. Konfigurieren Sie den max_slot_wal_keep_size-Parameter, um die WAL-Aufbewahrung einzuschränken und ungebundenes WAL-Wachstum zu verhindern. Ausführliche Informationen finden Sie unter Konfigurieren von Parametern für replikationsplätze .
  • Wenn Sie eine Datenaufnahmepipeline löschen, müssen Sie den zugeordneten Replikationsslot manuell entfernen. Siehe Replikations-Slots bereinigen.

Optional: Inline-DDL-Verfolgung konfigurieren

Die Inline-DDL-Nachverfolgung ist ein optionales Feature, mit dem der Connector Schemaänderungen aus der Quelldatenbank automatisch erkennen und anwenden kann. Dieses Feature ist standardmäßig deaktiviert.

Warnung

Die Inline-DDL-Nachverfolgung befindet sich derzeit in der Vorschauversion und umfasst die Kontaktaufnahme mit dem Databricks-Support, um sie für Ihren Arbeitsbereich zu aktivieren.

Informationen dazu, welche Schemaänderungen automatisch behandelt werden und welche eine vollständige Aktualisierung erfordern, finden Sie unter How do managed connectors handle schema evolution? and Schema evolution.

Einrichten von Inline-DDL-Tracking

Wenn die Inline-DDL-Nachverfolgung für Ihren Arbeitsbereich aktiviert wurde, führen Sie die folgenden Schritte in jeder PostgreSQL-Datenbank aus:

  1. Laden Sie das skript lakeflow_pg_ddl_change_tracking.sql herunter, und führen Sie es aus:

    \i lakeflow_pg_ddl_change_tracking.sql
    
  2. Überprüfen Sie, ob die Trigger und die Überwachungstabelle erfolgreich erstellt wurden:

    -- 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. Fügen Sie der Publikation die DDL-Überwachungstabelle hinzu:

    ALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
    

Cloudspezifische Konfigurationsnotizen

AWS RDS und Aurora

  • Stellen Sie sicher, dass der rds.logical_replication-Parameter in der Parametergruppe auf 1 festgelegt ist.

  • Konfigurieren Sie Sicherheitsgruppen, um Verbindungen aus dem Databricks-Arbeitsbereich zuzulassen.

  • Der Replikationsbenutzer erfordert die rds_replication Rolle:

    GRANT rds_replication TO databricks_replication;
    

Azure-Datenbank für PostgreSQL

  • Aktivieren Sie die logische Replikation in den Serverparametern über das Azure-Portal oder die CLI.
  • Konfigurieren Sie Firewallregeln, um Verbindungen aus dem Databricks-Arbeitsbereich zuzulassen.
  • Für Flexible Server wird die logische Replikation unterstützt. Stellen Sie für Single Server sicher, dass Sie eine unterstützte Schicht verwenden.

GCP Cloud SQL für PostgreSQL

  • Aktivieren Sie das cloudsql.logical_decoding Flag in den Instanzeinstellungen.
  • Konfigurieren Sie autorisierte Netzwerke, um Verbindungen aus dem Databricks-Arbeitsbereich zuzulassen.
  • Stellen Sie sicher, dass das cloudsql.enable_pglogical Flag auf on gesetzt ist, wenn Sie pglogical-Erweiterungen verwenden.

Überprüfen der Konfiguration

Überprüfen Sie nach Abschluss der Setupaufgaben, ob die logische Replikation ordnungsgemäß konfiguriert ist:

  1. Überprüfen Sie, ob wal_level auf logical eingestellt ist.

    SHOW wal_level;
    
  2. Überprüfen Sie, ob der Replikationsbenutzer über die replication Berechtigungen verfügt:

    SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';
    
  3. Vergewissern Sie sich, dass die Publikation vorhanden ist:

    SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';
    
  4. Überprüfen Sie, ob der Replikationsplatz vorhanden ist:

    SELECT slot_name, slot_type, active, restart_lsn
    FROM pg_replication_slots
    WHERE slot_name = 'databricks_slot';
    
  5. Vergewissern Sie sich der Replika-Identität Ihrer Tabellen:

    SELECT schemaname, tablename, relreplident
    FROM pg_tables t
    JOIN pg_class c ON t.tablename = c.relname
    WHERE schemaname = 'your_schema';
    

    Die relreplident Spalte sollte f für die vollständige Replikatidentität anzeigen.

Nächste Schritte

Nach Abschluss des Quellsetups können Sie ein Aufnahmegateway und eine Pipeline zum Aufnehmen von Daten aus PostgreSQL erstellen. Siehe Erfassungsdaten von PostgreSQL.