この記事では,PostgreSQL データベースの変更データキャプチャ (CDC) ソースをイベントストリームに追加する方法を説明します。
Microsoft Fabric イベント ストリームの PostgreSQL データベース 変更 データ キャプチャ (CDC) ソース コネクタは、PostgreSQL データベースの現在のデータのスナップショットをキャプチャすることができます。 現在、PostgreSQL データベース変更データ キャプチャ (CDC) は、データベースにパブリックにアクセスできる次のサービスからサポートされています。
- Azure Database for PostgreSQL
- Amazon RDS for PostgreSQL
- Amazon Aurora PostgreSQL
- Google Cloud SQL for PostgreSQL
PostgreSQL データベース CDC ソースがイベントストリームに追加されると、指定したテーブルに対する行レベルの変更がキャプチャされます。 その後、これらの変更をリアルタイムで処理し、別の宛先に送信して詳細な分析を行うことができます。
前提条件
共同作成者以上のアクセス許可を使用した Fabric 容量ライセンス モード (または試用版ライセンス モード) でのワークスペースへのアクセス。
PostgreSQLデータベースへの登録済みユーザーアクセス。
PostgreSQL データベースはパブリックにアクセスできる必要があり、ファイアウォールの内側やVirtual Network内で保護されてはなりません。
PostgreSQL データベースとテーブルで CDC が有効になっている。
PostgreSQL 用の Azure データベースがある場合は、次のセクションの手順に従って CDC を有効にします。 詳細の情報については「論理レプリケーションと論理デコード - PostgreSQL 用 Azure データベース - フレキシブル サーバー」を参照してください。
その他の PostgreSQL データベースについては「PostgreSQL 用の Debezium コネクタ :: Debezium のドキュメント」を参照してください。
イベントストリームがない場合は、イベントストリームを作成します。
PostgreSQL データベースで CDC を有効にする
このセクションでは、 Azure Database for PostgreSQL を例として使用します。
Azure Database for PostgreSQL フレキシブル サーバーで CDC を有効にするには、次の手順に従います。
Azure portal の Azure Database for PostgreSQL フレキシブル サーバー ページで、ナビゲーション メニューの [サーバー パラメーター] を選択します。
サーバーパラメータページで
- wal_levelをlogicalに設定します。
- max_worker_processesを少なくとも16 に更新します。
変更点を保存し、サーバーを再起動します。
PostgreSQL Azure Database for PostgreSQL フレキシブル サーバー インスタンスでパブリック ネットワーク トラフィックが許可されていることを確認します。
次の SQL ステートメントを実行して、管理者 ユーザーにレプリケーションアクセス許可権限を許可します。 他のユーザー アカウントを使用して PostgreSQL DB を接続して CDC をフェッチする場合は、ユーザーが テーブル所有者であることを確認します。
ALTER ROLE <admin_user_or_table_owner_user> WITH REPLICATION;
データ ソースの選択ウィザードを起動する
まだイベントストリームにソースを追加していない場合は、[ 外部ソースを使用 ] タイルを選択します。
既に公開されているイベントストリームにソースを追加する場合は、 編集 モードに切り替えます。 リボンで、[ソース>の追加] を選択します。
[データ ソースの選択] ページで、PostgreSQL DB (CDC) タイルで [接続] を検索して選択します。
PostgreSQL Database CDC の構成と接続
接続ページで、新しい接続 を選択します。
接続設定セクションで、次の情報を入力します。
サーバー: PostgreSQL データベースのサーバー アドレス (my-pgsql-server.postgres.database.azure.com など)。
データベース: データベース名 (my_database など)。
接続名: 接続の名前を入力します。
[認証の種類] で [ 基本 ] を選択し、データベースの ユーザー名 と パスワード を入力します。
注
現時点では、Fabric イベント ストリームでは 基本 認証のみがサポートされています。
[ 接続 ] を選択して接続設定を完了します。
ポート: サーバーのポート番号を入力します。 既定値は 5432 です。 選択したクラウド接続が [接続とゲートウェイの管理] で構成されている場合は、ポート番号がそこに設定されているポート番号と一致していることを確認します。 一致しない場合は、[ 接続とゲートウェイの管理 ] のクラウド接続のポート番号が優先されます。
データベース テーブルから変更をキャプチャする場合は、次の 2 つのオプションから選択できます。
- すべてのテーブル: データベース内のすべてのテーブルからの変更をキャプチャします。
-
テーブル名の入力: コンマ区切りリストを使用して、テーブルのサブセットを指定できます。
schemaName.tableName形式の完全なテーブル識別子または有効な正規表現のいずれかを使用できます。 例: -
dbo.test.*:testスキーマで名前がdboで始まるすべてのテーブルを選択します。 -
dbo\.(test1|test2):dbo.test1とdbo.test2を選択します。
リスト内の両方の形式を組み合わせることができます。 エントリ全体の文字制限の合計は 102,400 文字です。
スロット名 (省略可能): 特定のデータベース/スキーマの特定のプラグインからの変更をストリーミングするために作成された PostgreSQL 論理デコード スロットの名前を入力します。 サーバーはこのスロットを使用して、イベントを Eventstream ストリーミング コネクタにストリーミングします。 小文字、数字、アンダースコアのみを含める必要があります。
- 指定しない場合は、適切なデータベースのアクセス許可を必要とする、スロットの作成に GUID が使用されます。
- 指定されたスロット名が存在する場合、コネクタはそれを直接使用します。
[詳細設定] を展開して、PostgreSQL データベース CDC ソースのその他の構成オプションにアクセスできます。
パブリケーション名: 使用する PostgreSQL 論理レプリケーション パブリケーションの名前を指定します。 これは、データベース内の既存のパブリケーションと一致する必要があります。または、自動作成モードに応じて自動的に作成されます。 既定値:
dbz_publication。注
コネクタ ユーザーは、パブリケーションを作成するためのスーパーユーザーのアクセス許可を持っている必要があります。 アクセス許可に関連する問題を回避するために、コネクタを初めて起動する前に、パブリケーションを手動で作成することをお勧めします。
パブリケーションの自動作成モード: パブリケーションを自動的に作成するかどうかを制御します。 オプションは次のとおりです。
-
Filtered(既定値): 指定したパブリケーションが存在しない場合、コネクタは選択したテーブルのみを含むパブリケーションを作成します (テーブルインクルード リストで指定されています)。 -
AllTables: 指定したパブリケーションが存在する場合、コネクタはそれを使用します。 存在しない場合、コネクタはデータベース内のすべてのテーブルを含むテーブルを作成します。 -
Disabled: コネクタはパブリケーションを作成しません。 指定したパブリケーションがない場合、コネクタはエラーをスローして停止します。 この場合、パブリケーションをデータベースに手動で作成する必要があります。
詳細については、パブリケーションの自動作成モードに関する Debezium ドキュメントを参照してください。
-
10 進処理モード: コネクタが PostgreSQL
DECIMALとNUMERIC列の値を処理する方法を指定します。-
Precise: 正確な 10 進型 (JavaBigDecimalなど) を使用して値を表し、データ表現の完全な精度と精度を確保します。 -
Double: 値を倍精度浮動小数点数に変換します。 これにより、使いやすさとパフォーマンスが向上しますが、精度が失われる可能性があります。 -
String: 値を書式設定された文字列としてエンコードします。 これにより、ダウンストリーム システムで簡単に使用できますが、元の数値型に関するセマンティック情報は失われます。
-
スナップショット モード: コネクタの起動時にスナップショットを実行するための条件を指定します。
-
Initial: コネクタは、論理サーバー名のオフセットが記録されていない場合、または以前のスナップショットが完了しなかったことを検出した場合にのみ、スナップショットを実行します。 スナップショットが完了すると、コネクタは後続のデータベース変更のイベント レコードのストリーミングを開始します。 -
InitialOnly: コネクタは、論理サーバー名のオフセットが記録されていない場合にのみスナップショットを実行します。 スナップショットが完了すると、コネクタは停止します。 binlog から変更イベントを読み取るためにストリーミングに移行することはありません。 -
NoData: コネクタは、スキーマのみをキャプチャするスナップショットを実行しますが、テーブル データはキャプチャしません。 データの一貫性のあるスナップショットは必要ありませんが、コネクタの起動後に発生する変更のみが必要な場合は、このオプションを設定します。
-
ハートビート アクション クエリ:コネクタがハートビート メッセージを送信するときに、ソース データベースでコネクタが実行するクエリを指定します。
スナップショットのSELECTステートメントオーバーライド: スナップショットに含めるテーブル行を指定します。 スナップショットにテーブル内の行のサブセットのみを含める場合は、このプロパティを使用します。 このプロパティはスナップショットにのみ影響します。 コネクタがログから読み取るイベントには適用されません。
[確認と接続] ページで概要を確認してから、[追加] を選択します。
更新されたイベントストリームを表示する
[編集モード] でイベントストリームに追加された PostgreSQL データベースの CDC ソースを確認できます。
この新しく追加された PostgreSQL DB CDC ソースを実装するには、公開する を選択します。 これらの手順を完了すると、PostgreSQL DB CDC ソースを [ライブ ビュー] で視覚化できるようになります。
関連するコンテンツ
その他のコネクタ。