Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida ti mostra come pubblicare modifiche da un database Lakebase a un abbonato Postgres esterno usando la replica logica. Lakebase agisce come publisher: definisce una pubblicazione e il subscriber esterno si collega per ricevere le modifiche.
Prerequisiti
- Un progetto Lakebase con il database da cui vuoi pubblicare, contenente le tabelle che vuoi pubblicare.
- Un ruolo di Lakebase Postgres che è un membro del
databricks_superuserruolo, per creare la pubblicazione. Questo è il ruolo con cui ti connetti, non quello che usa l'abbonato. Nel primo passaggio si crea il ruolo di replica dell'abbonato. - Connessioni tramite password abilitate nel progetto. Il sottoscrittore si connette con un ruolo password nativo di Postgres e le connessioni tramite password sono disabilitate per impostazione predefinita per i nuovi progetti. Consulta Gestire le connessioni tramite password.
- Un database Postgres esterno che funge da sottoscrittore. Il sottoscrittore può anche essere un database Lakebase in un'area geografica diversa. La replica tra database Lakebase nella stessa regione non è supportata.
La replica logica è supportata in Lakebase, che per impostazione predefinita è impostato su wal_level = logical, quindi non c'è un passaggio per progetto per attivare la pubblicazione.
Crea un ruolo di replicazione
Crea un ruolo dedicato a cui l'abbonato esterno possa connettersi. Il sottoscrittore si collega con un nome utente e una password Postgres, quindi crea un ruolo password nativo Postgres, non un ruolo OAuth. I ruoli OAuth si autenticano con token Azure Databricks di breve durata, che la stringa di connessione basata su password non può utilizzare. Il ruolo deve avere l'attributo REPLICATION . I ruoli che crei nell'app, nella CLI o nell'API di Lakebase hanno questo attributo, indipendentemente dal fatto che tu li databricks_superuserconceda o meno. Nella scheda Aggiungi ruolo>Password dell'app Lakebase, inserisci il nome del ruolo. Non è necessario selezionare databricks_superuser. Consultare Creare un ruolo nativo di password di Postgres.
Per impostare la password da solo, crea il ruolo con SQL invece. Includi l'attributo REPLICATION, perché i ruoli creati con SQL non lo ricevono automaticamente:
CREATE ROLE replication_user WITH LOGIN REPLICATION PASSWORD '<password>';
Se il ruolo non possiede le tabelle che il ruolo replica, concedigli l'accesso per la lettura:
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;
Crea una pubblicazione
Connettiti al database Lakebase come membro del databricks_superuser ruolo, poi crea una pubblicazione per le tabelle che vuoi replicare. Ogni tabella deve avere un PRIMARY KEY o un'identità di replica impostata.
Vedi Replica identity nella documentazione Postgres.
CREATE PUBLICATION my_publication FOR TABLE orders, customers;
Consentire all'abbonato di connettersi
Il sottoscrittore esterno si connette a Lakebase tramite il proxy edge di Azure Databricks, che applica l'elenco di accesso IP dell'area di lavoro. Aggiungi l'indirizzo IP dell'abbonato all'elenco di accesso IP dello spazio di lavoro affinché possa accedere al tuo database Lakebase. Vedi Gestire la lista degli accessi IP.
collegamento privato non è supportato per la connessione del sottoscrittore. Il sottoscrittore si collega tramite l'endpoint pubblico Lakebase.
Sottoscrivi dal database esterno
Nel database esterno di Postgres, crea le tabelle target con gli stessi nomi e colonne delle tabelle che pubblichi. Createli vuoti: la copia iniziale fallisce su chiavi duplicate o violazioni di vincoli se una tabella target contiene già righe. Puoi creare le tabelle manualmente, oppure scaricare lo schema da Lakebase e caricarlo nel sottoscrittore. Vedi dump solo dello schema.
Poi, come ruolo che può creare sottoscrizioni sul database esterno, crea una sottoscrizione che si connetta a 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;
Usa una connessione diretta per il sottoscrittore. La replica logica richiede una connessione persistente, quindi <lakebase-host> deve essere il nome host diretto dell'endpoint, non il nome host del pooler di connessione -pooler.
Vedi Pooling di connessioni.
Note
Lakebase applica TLS su tutte le connessioni, quindi il traffico è sempre criptato senza bisogno di alcuna azione. Per la massima protezione, connettiti con sslmode=verify-full, che verifica anche il certificato server Lakebase rispetto allo store root del tuo sistema. Lakebase utilizza un certificato riconosciuto pubblicamente, quindi non è necessario alcun certificato aggiuntivo. L’algoritmo più debole sslmode=require cripta ma non verifica il server.
Verifica della replicazione
Sul sottoscrittore esterno, conferma che le righe esistenti siano arrivate:
SELECT COUNT(*) FROM orders;
Inserisci o aggiorna una riga su Lakebase, poi interroga di nuovo il sottoscrittore. La modifica appare sul sottoscrittore entro pochi secondi.
Controlla lo stato della sottoscrizione e il lag del sottoscrittore:
SELECT subname, received_lsn, latest_end_lsn, last_msg_receipt_time
FROM pg_catalog.pg_stat_subscription;
Per confermare che la copia iniziale sia completata, esegui la query di stato di sincronizzazione per tabella in Monitor replication sull'abbonato e attendi che ogni tabella legga Ready (fully live).
La connessione del sottoscrittore mantiene uno slot di replica sul publisher Lakebase. Mentre un sottoscrittore sta replicando attivamente, il calcolo Lakebase non scala fino a zero. Vedi Replicazione logica e scalabilità fino a zero. Se il sottoscrittore smette di consumare modifiche, lo slot diventa inattivo e Lakebase lo rimuove dopo circa 40 ore. Vedi Rimozione automatica degli slot inattivi.
Passaggi successivi
- Gestire la replicazione: monitorare pubblicazioni e slot e risolvere problemi. Consulta Gestire e monitorare la replica logica.
- Migra in Lakebase: Replica un database Postgres esterno in Lakebase. Vedi Replica dei dati in Lakebase.
- Confronta i metodi: scegli il modo corretto per spostare i dati dentro e fuori da Lakebase. Vedi spostare dati dentro e fuori da Lakebase.