クイックスタート:Lakebase データベース間のレプリケーション
このクイックスタートでは、1つのLakebaseデータベースから別のデータベースにシングルテーブルを複製して、論理レプリケーションの動作をエンドツーエンドで確認します。外部データベースは不要です。
始める前に
- 異なるプロジェクトの 2 つの Lakebase データベース: ソースとターゲット。
- プロジェクト所有者のロールなど、
databricks_superuserロールのメンバーである各データベースの Postgres ロール。「Postgres ロールの作成」を参照してください。 - ソースプロジェクトでパスワード接続が有効になっています。ターゲットはネイティブのPostgresパスワードロールを使ってソースに接続し、新しいプロジェクトではパスワード接続がdefaultで無効になっています。パスワード接続の管理を参照してください。
ターゲットはプロジェクト間でサブスクライブし、ソースワークスペースの IP アクセス リストを通じてソースに接続します。サブスクリプションを作成する前に、ソースワークスペースの IP アクセス リストでターゲットの送信 IP アドレスを許可します。許可しないと、接続が拒否されます。「Lakebaseからのデータ複製」を参照してください。
ソース上のテーブルを公開する
ソースデータベースに接続し、サンプルデータを含むテーブルを作成します:
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);
テーブルを含むパブリケーションを作成します:
CREATE PUBLICATION my_publication FOR TABLE playing_with_lakebase;
ターゲットがそのロールとして接続できるよう、REPLICATION属性を持つパスワードロールを作成し、そのロールにテーブルへの読み取りアクセス権を付与します:
CREATE ROLE replication_user WITH LOGIN REPLICATION PASSWORD '<password>';
GRANT SELECT ON playing_with_lakebase TO replication_user;
ターゲットでサブスクライブする
ターゲットデータベースに接続し、同じテーブルを作成します。論理レプリケーションはスキーマではなくデータをコピーするため、テーブルが先に存在する必要があります。
CREATE TABLE playing_with_lakebase (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, name TEXT NOT NULL, value REAL);
replication_user としてソースデータベースに接続するサブスクリプションを作成します。-pooler ホスト名ではなく、ソースの直接的な Endpoint ホスト名を使用してください:
CREATE SUBSCRIPTION my_subscription
CONNECTION 'postgresql://replication_user:<password>@<source-host>/databricks_postgres?sslmode=verify-full&sslrootcert=system'
PUBLICATION my_publication;
サブスクリプションは既存の行をコピーした後、新しい変更をストリームします。
sslmode=verify-full sslrootcert=system を使用すると、接続が暗号化され、ソースの証明書が検証されます。Lakebase Endpointはパブリックに信頼された認証局を使用するため、証明書をdownloadする必要はありません。
レプリケーションの検証
ターゲット上で、最初の行が到着したことを確認します:
SELECT COUNT(*) FROM public.playing_with_lakebase;
ソースに別の行を挿入します。
INSERT INTO playing_with_lakebase (name, value) VALUES ('new-row', 1.0);
ターゲットを再度クエリーします。新しい行が表示されます。いつでもサブスクリプションの状態と遅延を確認できます:
SELECT subname, received_lsn, latest_end_lsn, last_msg_receipt_time
FROM pg_catalog.pg_stat_subscription;
次のステップ
- Lakebaseへの移行 :既存の外部PostgresデータベースをLakebaseに複製します。Lakebaseへのデータ複製を参照してください。
- レプリケーションの管理 : サブスクリプションの監視、スロットの管理、トラブルシューティングを行います。「論理レプリケーションの管理と監視」を参照してください。
- 比較メソッド : Lakebase からデータを移動するための適切な方法を選択します。「Lakebase との間でデータを移動する」を参照してください。