Quickstart: Replizieren zwischen Lakebase-Datenbanken

Dieser Quickstart repliziert eine einzelne Tabelle von einer Lakebase-Datenbank in eine andere, sodass Sie sehen können, wie die logische Replikation durchgängig funktioniert. Es ist keine externe Datenbank erforderlich.

Vorbemerkungen

  • Zwei Lakebase-Datenbanken in verschiedenen Projekten: eine Quelldatenbank und eine Zieldatenbank.
  • Eine Postgres-Rolle in jeder Datenbank, die Mitglied der Rolle databricks_superuser ist, wie zum Beispiel die Rolle des Projektverantwortlichen. Siehe Erstellen von Postgres-Rollen.
  • Passwortverbindungen sind im Quellprojekt aktiviert. Das Ziel verbindet sich mit der Quelle über eine native Postgres-Passwortrolle, und Passwortverbindungen sind bei neuen Projekten standardmäßig deaktiviert. Siehe Verwalten von Kennwortverbindungen.

Note

Das Ziel abonniert projektübergreifend und verbindet sich über die IP-Zugriffsliste des Quellarbeitsbereichs mit der Quelle. Erlauben Sie die ausgehende IP-Adresse des Zielarbeitsbereichs in der IP-Zugriffsliste des Quellarbeitsbereichs, bevor Sie das Abonnement erstellen, sonst wird die Verbindung abgelehnt. Siehe Daten aus Lakebase replizieren.

Veröffentlichen Sie eine Tabelle in der Quelle

Verbinden Sie sich mit der Quelldatenbank und erstellen Sie eine Tabelle mit Beispieldaten:

CREATE TABLE playing_with_lakebase (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, name TEXT NOT NULL, value REAL);
INSERT INTO playing_with_lakebase (name, value)
SELECT LEFT(md5(i::TEXT), 10), random() FROM generate_series(1, 10) s(i);

Erstellen Sie eine Publikation, die folgende Tabelle enthält:

CREATE PUBLICATION my_publication FOR TABLE playing_with_lakebase;

Erstelle eine Passwortrolle mit dem Attribut REPLICATION, als das sich das Ziel verbinden soll, und gewähre ihr Lesezugriff auf die Tabelle:

CREATE ROLE replication_user WITH LOGIN REPLICATION PASSWORD '<password>';
GRANT SELECT ON playing_with_lakebase TO replication_user;

Auf dem Target abonnieren

Verbinden Sie sich mit der Zieldatenbank und erstellen Sie dieselbe Tabelle. Logische Replikation kopiert Daten, nicht Schema, daher muss die Tabelle zuerst existieren:

CREATE TABLE playing_with_lakebase (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, name TEXT NOT NULL, value REAL);

Erstellen Sie ein Abonnement, das als replication_user eine Verbindung mit der Quelldatenbank herstellt. Verwenden Sie den direkten Endpunkt-Hostnamen der Quelle, nicht den Hostnamen -pooler :

CREATE SUBSCRIPTION my_subscription
CONNECTION 'postgresql://replication_user:<password>@<source-host>/databricks_postgres?sslmode=verify-full&sslrootcert=system'
PUBLICATION my_publication;

Die Subscription kopiert die bestehenden Datensätze und streamt dann neue Änderungen.

sslmode=verify-full mit sslrootcert=system verschlüsselt die Verbindung und überprüft das Zertifikat des Servers. Lakebase-Endpunkte verwenden eine öffentlich vertrauenswürdige Zertifizierungsstelle, daher ist kein Zertifikatsdownload erforderlich.

Replikation überprüfen

Bestätigen Sie auf dem Zielsystem, dass die ersten Zeilen angekommen sind:

SELECT COUNT(*) FROM public.playing_with_lakebase;

Fügen Sie in der Quelle eine weitere Zeile ein:

INSERT INTO playing_with_lakebase (name, value) VALUES ('new-row', 1.0);

Fragen Sie das Zielsystem erneut ab. Die neue Zeile erscheint. Überprüfen Sie jederzeit den Abostatus und die Latenz:

SELECT subname, received_lsn, latest_end_lsn, last_msg_receipt_time
FROM pg_catalog.pg_stat_subscription;

Nächste Schritte