Udostępnij przez


Skonfiguruj PostgreSQL do wprowadzania danych do Azure Databricks

Ważne

Łącznik PostgreSQL dla programu Lakeflow Connect jest dostępny w publicznej wersji zapoznawczej. Skontaktuj się z zespołem obsługi konta Databricks, aby zarejestrować się w publicznej wersji testowej.

Na tej stronie opisano zadania konfiguracji źródła na potrzeby pozyskiwania danych z bazy danych PostgreSQL do usługi Azure Databricks przy użyciu programu Lakeflow Connect.

Replikacja logiczna na potrzeby przechwytywania danych zmian

Łącznik PostgreSQL używa replikacji logicznej do śledzenia zmian w tabelach źródłowych. Replikacja logiczna umożliwia łącznikowi przechwytywanie modyfikacji danych (wstawiania, aktualizacji i usuwania) bez konieczności uruchamiania wyzwalaczy ani znacznych obciążeń w źródłowej bazie danych.

Replikacja logiczna usługi Lakeflow PostgreSQL wymaga następujących elementów:

  1. Program Lakeflow Connect obsługuje replikację danych z bazy danych PostgreSQL w wersji 13 lub nowszej.

  2. Skonfiguruj bazę danych na potrzeby replikacji logicznej:

    Parametr wal_level PostgreSQL musi być ustawiony na logical.

  3. Utwórz publikacje zawierające wszystkie tabele, które chcesz replikować.

  4. Utwórz miejsca replikacji dla każdego katalogu, który zostanie zreplikowany.

Uwaga / Notatka

Przed utworzeniem slotów replikacji należy utworzyć publikacje.

Aby uzyskać więcej informacji na temat replikacji logicznej, zobacz dokumentację replikacji logicznej w witrynie internetowej postgreSQL.

Omówienie zadań konfiguracji źródłowej

Przed pozyskiwaniem danych do usługi Azure Databricks wykonaj następujące zadania w usłudze PostgreSQL:

  1. Weryfikowanie bazy danych PostgreSQL 13 lub nowszej

  2. Konfigurowanie dostępu do sieci (grup zabezpieczeń, reguł zapory lub sieci VPN)

  3. Konfigurowanie replikacji logicznej:

    • Włączanie replikacji logicznej (wal_level = logical)
  4. Opcjonalnie: Skonfiguruj wbudowane śledzenie DDL na potrzeby automatycznego wykrywania zmian schematu. Jeśli chcesz wybrać wbudowane śledzenie DDL, skontaktuj się z pomocą techniczną usługi Databricks.

Ważne

Jeśli planujesz replikować z wielu baz danych PostgreSQL, musisz utworzyć oddzielne miejsce publikacji i replikacji dla każdej bazy danych. Wbudowany skrypt śledzenia DDL (jeśli jest używany) musi być również wykonywany w każdej bazie danych.

Konfigurowanie replikacji logicznej

Aby włączyć replikację logiczną w usłudze PostgreSQL, skonfiguruj ustawienia bazy danych i skonfiguruj niezbędne obiekty.

Ustaw poziom WAL na wartość logiczną

Na potrzeby replikacji logicznej należy skonfigurować dziennik Write-Ahead (WAL). To ustawienie zwykle wymaga ponownego uruchomienia bazy danych.

  1. Sprawdź bieżące wal_level ustawienie:

    SHOW wal_level;
    
  2. Jeśli logical nie jest ustawione, skonfiguruj wal_level = logical w ustawieniach serwera i uruchom ponownie usługę PostgreSQL.

Tworzenie użytkownika replikacji

Utwórz użytkownika dedykowanego dla importu danych Databricks z uprawnieniami do replikacji.

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

Aby uzyskać szczegółowe wymagania dotyczące uprawnień, zobacz Wymagania użytkownika bazy danych PostgreSQL.

Ustaw tożsamość repliki dla tabel

Dla każdej tabeli, którą chcesz replikować, skonfiguruj tożsamość repliki. Prawidłowe ustawienie zależy od struktury tabeli:

Struktura tabeli WymaganA TOŻSAMOŚĆ REPLIKI Command
Tabela ma klucz podstawowy i nie zawiera kolumn TOASTable (na przykład TEXT, , BYTEAVARCHAR(n) z dużymi wartościami) DEFAULT ALTER TABLE schema_name.table_name REPLICA IDENTITY DEFAULT;
Tabela ma klucz podstawowy, ale zawiera duże kolumny o zmiennej długości (TOASTable) FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;
Tabela nie ma klucza podstawowego FULL ALTER TABLE schema_name.table_name REPLICA IDENTITY FULL;

Aby uzyskać więcej informacji na temat ustawień tożsamości repliki, zobacz Tożsamość repliki w dokumentacji bazy danych PostgreSQL.

Tworzenie publikacji

Utwórz publikację w każdej bazie danych zawierającej tabele, które chcesz replikować:

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

Uwaga / Notatka

Należy utworzyć oddzielną publikację w każdej bazie danych PostgreSQL, którą chcesz replikować.

Konfigurowanie parametrów miejsca replikacji

Przed utworzeniem miejsc replikacji skonfiguruj następujące parametry serwera:

Ograniczanie przechowywania pliku WAL dla miejsc replikacji

Parametr: max_slot_wal_keep_size

Zaleca się, aby nie ustawiać na (wartość domyślna), ponieważ pozwala to na nieograniczone puchnięcie pliku WAL z powodu zatrzymania przez opóźnione lub nieaktywne gniazda replikacji. W zależności od obciążenia ustaw ten parametr na skończoną wartość.

Dowiedz się więcej o parametrze max_slot_wal_keep_size w oficjalnej dokumentacji bazy danych PostgreSQL.

Uwaga / Notatka

Niektórzy dostawcy usług w chmurze zarządzanej nie zezwalają na modyfikację tego parametru i zamiast tego polegają na wbudowanym monitorowaniu slotów i automatycznym czyszczeniu. Przed ustawieniem alertów operacyjnych przejrzyj zachowanie platformy.

Aby uzyskać więcej informacji, zobacz:

Konfigurowanie pojemności miejsca replikacji

Parametr: max_replication_slots

Każda replikowana baza danych PostgreSQL wymaga jednego miejsca replikacji logicznej. Ustaw ten parametr na co najmniej liczbę replikowanych baz danych oraz wszelkie istniejące potrzeby replikacji.

Konfigurowanie nadawców WAL

Parametr: max_wal_senders

Ten parametr definiuje maksymalną liczbę współbieżnych procesów nadawcy WAL, które przesyłają strumieniowo dane WAL do subskrybentów. W większości przypadków należy mieć jeden proces nadawcy WAL dla każdego gniazda replikacji, aby zapewnić wydajną i spójną replikację danych.

Skonfiguruj max_wal_senders wartość co najmniej równą liczbie używanych miejsc replikacji, co odpowiada wszelkim innym istniejącym użyciu. Zaleca się ustawienie go nieco wyższe w celu zapewnienia elastyczności operacyjnej.

Tworzenie slotu replikacji

Utwórz slot replikacji w każdej bazie danych, którą brama pozyskiwania Databricks używa do śledzenia zmian:

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

Ważne

  • Miejsca replikacji przechowują dane WAL do momentu zużycia przez łącznik. Skonfiguruj parametr max_slot_wal_keep_size w celu ograniczenia przechowywania WAL i uniemożliwienia nieograniczonego wzrostu WAL. Aby uzyskać szczegółowe informacje, zobacz Konfigurowanie parametrów miejsca replikacji .
  • Po usunięciu potoku pozyskiwania należy ręcznie usunąć skojarzone gniazdo replikacji. Zobacz Czyszczenie miejsc replikacji.

Opcjonalnie: Skonfiguruj śledzenie DDL inline

Wbudowane śledzenie DDL to opcjonalna funkcja umożliwiająca łącznikowi automatyczne wykrywanie i stosowanie zmian schematu ze źródłowej bazy danych. Ta funkcja jest domyślnie wyłączona.

Ostrzeżenie

Wbudowane śledzenie DDL jest obecnie w wersji zapoznawczej i wymaga skontaktowania się z pomocą techniczną usługi Databricks w celu włączenia go dla obszaru roboczego.

Aby uzyskać informacje o tym, które zmiany schematu są obsługiwane automatycznie i które wymagają pełnego odświeżania, zobacz Jak zarządzane łączniki obsługują ewolucję schematu? i Ewolucja schematu.

Konfigurowanie wbudowanego śledzenia DDL

Jeśli wbudowane śledzenie DDL zostało włączone dla obszaru roboczego, wykonaj następujące kroki w każdej bazie danych PostgreSQL:

  1. Pobierz i uruchom skrypt lakeflow_pg_ddl_change_tracking.sql :

    \i lakeflow_pg_ddl_change_tracking.sql
    
  2. Sprawdź, czy wyzwalacze i tabela audytu zostały utworzone pomyślnie.

    -- 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. Dodaj tabelę inspekcji DDL do publikacji:

    ALTER PUBLICATION databricks_publication ADD TABLE public.lakeflow_ddl_audit;
    

Uwagi dotyczące konfiguracji specyficznej dla chmury

AWS RDS i Aurora

  • Upewnij się, że parametr rds.logical_replication jest ustawiony na 1 w grupie parametrów.

  • Skonfiguruj grupy zabezpieczeń, aby zezwalać na połączenia z obszaru roboczego usługi Databricks.

  • Użytkownik replikacji wymaga rds_replication roli:

    GRANT rds_replication TO databricks_replication;
    

Azure Database for PostgreSQL

  • Włącz replikację logiczną w parametrach serwera za pośrednictwem witryny Azure Portal lub interfejsu wiersza polecenia.
  • Skonfiguruj reguły firewalla, aby zezwalać na połączenia ze środowiska roboczego usługi Databricks.
  • W przypadku serwera elastycznego obsługiwana jest replikacja logiczna. W przypadku pojedynczego serwera upewnij się, że używasz obsługiwanej warstwy.

GCP Cloud SQL for PostgreSQL

  • Włącz flagę cloudsql.logical_decoding w ustawieniach wystąpienia.
  • Skonfiguruj autoryzowane sieci, aby zezwalać na połączenia z obszaru roboczego usługi Databricks.
  • Upewnij się, że flaga cloudsql.enable_pglogical jest ustawiona na on, jeśli używasz rozszerzeń pglogical.

Sprawdzanie konfiguracji

Po wykonaniu zadań konfiguracji sprawdź, czy replikacja logiczna jest prawidłowo skonfigurowana:

  1. Sprawdź, czy parametr wal_level ma wartość logical:

    SHOW wal_level;
    
  2. Sprawdź, czy użytkownik replikacji ma replication uprawnienia:

    SELECT rolname, rolreplication FROM pg_roles WHERE rolname = 'databricks_replication';
    
  3. Upewnij się, że publikacja istnieje:

    SELECT * FROM pg_publication WHERE pubname = 'databricks_publication';
    
  4. Sprawdź, czy miejsce replikacji istnieje:

    SELECT slot_name, slot_type, active, restart_lsn
    FROM pg_replication_slots
    WHERE slot_name = 'databricks_slot';
    
  5. Sprawdź identyfikator repliki dla swoich tabel

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

    Kolumna powinna pokazywać relreplidentf jako pełną tożsamość repliki.

Dalsze kroki

Po zakończeniu konfiguracji źródła danych możesz utworzyć bramę zbierania danych i potok do przesyłania danych z bazy danych PostgreSQL. Zobacz Pozyskiwanie danych z bazy danych PostgreSQL.