Debezium は、変更データ キャプチャ(CDC)用のオープンソース分散プラットフォームです。Spanner 用の Debezium コネクタは、Spanner 変更ストリームから行レベルの変更をキャプチャし、Apache Kafka トピックにストリーミングします。
Debezium コネクタは、Spanner で動作するのと同じように Spanner Omni で動作します。このドキュメントでは、Spanner Omni に接続するように Debezium コネクタを構成する方法について説明します。
Spanner Omni Debezium 接続は、プレーン テキスト、TLS、相互 TLS(mTLS)の 3 つのセキュリティ構成をサポートしています。
始める前に
Spanner Omni で Debezium コネクタを使用するには、次の前提条件を満たしていることを確認してください。
- Kafka Connect プラグイン ディレクトリに Debezium connector for Spanner プラグイン バージョン 3.7.0 以降をダウンロードしてインストールします。
- Apache Kafka と Kafka Connect を設定します。詳細については、Debezium インストール ガイドをご覧ください。
- Spanner Omni でデータベースと変更ストリームを作成します。詳細については、Spanner ドキュメントの変更ストリームをご覧ください。
Debezium コネクタを構成する
Debezium コネクタを Spanner Omni に接続するには、Kafka Connect コネクタ構成で次のプロパティを指定します。
connector.class:io.debezium.connector.spanner.SpannerConnectorに設定します。spanner.type:OMNIに設定します。OMNIに設定すると、gcp.spanner.project.idとgcp.spanner.instance.idが自動的にdefaultに設定され、構成で指定する必要はありません。gcp.spanner.host: Spanner Omni エンドポイント。たとえば、プレーン テキストの場合はhttp://localhost:15000、TLS と mTLS の場合はhttps://localhost:15000。gcp.spanner.database.id: Spanner Omni データベースの ID。gcp.spanner.change-stream.name: キャプチャする変更ストリームの名前。spanner.omni.use.plaintext: 省略可。プレーン テキスト接続を確立するには、trueに設定します。spanner.omni.client.cert.path: 省略可。mTLS 接続のクライアント証明書ファイルのパス。spanner.omni.client.key.path: 省略可。mTLS 接続用の PKCS#8 形式のクライアント秘密鍵ファイルへのパス。
接続を確立する
次の例は、サポートされている各セキュリティ構成に対して Debezium コネクタを構成する方法を示しています。
書式なしテキスト
プレーン テキスト接続を確立するには、spanner.type を OMNI に設定し、http:// でエンドポイントを指定して、spanner.omni.use.plaintext を true に設定します。
{
"name": "CONNECTOR_NAME",
"config": {
"connector.class": "io.debezium.connector.spanner.SpannerConnector",
"tasks.max": "1",
"spanner.type": "OMNI",
"gcp.spanner.host": "http://ENDPOINT",
"gcp.spanner.database.id": "DATABASE_ID",
"gcp.spanner.change-stream.name": "CHANGE_STREAM_NAME",
"spanner.omni.use.plaintext": "true"
}
}
次のように置き換えます。
CONNECTOR_NAME: Debezium コネクタ インスタンスの名前(例:spanner-omni-connector)。ENDPOINT: Spanner Omni インスタンスのエンドポイント(例:localhost:15000)。DATABASE_ID: Spanner Omni データベースの ID(例:test-db)。CHANGE_STREAM_NAME: データベース内の変更ストリームの名前(例:my_change_stream)。
TLS
TLS 接続を確立するには、Java トラストストアを構成するで説明されているように、Spanner Omni CA 証明書を Java トラストストアに追加します。spanner.type を OMNI に設定し、https:// を使用してエンドポイントを指定します。
{
"name": "CONNECTOR_NAME",
"config": {
"connector.class": "io.debezium.connector.spanner.SpannerConnector",
"tasks.max": "1",
"spanner.type": "OMNI",
"gcp.spanner.host": "https://ENDPOINT",
"gcp.spanner.database.id": "DATABASE_ID",
"gcp.spanner.change-stream.name": "CHANGE_STREAM_NAME"
}
}
次のように置き換えます。
CONNECTOR_NAME: Debezium コネクタ インスタンスの名前(例:spanner-omni-connector)。ENDPOINT: Spanner Omni インスタンスのエンドポイント(例:localhost:15000)。DATABASE_ID: Spanner Omni データベースの ID(例:test-db)。CHANGE_STREAM_NAME: データベース内の変更ストリームの名前(例:my_change_stream)。
mTLS
mTLS 接続を確立するには、Java トラストストアを構成するで説明されているように、Spanner Omni CA 証明書を Java トラストストアに追加します。spanner.type を OMNI に設定し、https:// を使用してエンドポイントを指定し、クライアント証明書とクライアント秘密鍵のパスを指定します。クライアントの秘密鍵は、Java SDK の mTLS の手順で説明されているように、Java 準拠の PKCS#8 形式である必要があります。
{
"name": "CONNECTOR_NAME",
"config": {
"connector.class": "io.debezium.connector.spanner.SpannerConnector",
"tasks.max": "1",
"spanner.type": "OMNI",
"gcp.spanner.host": "https://ENDPOINT",
"gcp.spanner.database.id": "DATABASE_ID",
"gcp.spanner.change-stream.name": "CHANGE_STREAM_NAME",
"spanner.omni.client.cert.path": "PATH_TO_CLIENT_CERT",
"spanner.omni.client.key.path": "PATH_TO_CLIENT_KEY"
}
}
次のように置き換えます。
CONNECTOR_NAME: Debezium コネクタ インスタンスの名前(例:spanner-omni-connector)。ENDPOINT: Spanner Omni インスタンスのエンドポイント(例:localhost:15000)。DATABASE_ID: Spanner Omni データベースの ID(例:test-db)。CHANGE_STREAM_NAME: データベース内の変更ストリームの名前(例:my_change_stream)。PATH_TO_CLIENT_CERT: クライアント証明書ファイルのパス。PATH_TO_CLIENT_KEY: PKCS#8 形式のクライアント秘密鍵ファイルのパス。
次のステップ
Kafka への変更ストリーム接続を構築します。
Spanner Omni の認証と認可について学習する。