Debezium 是開放原始碼的分散式平台,適用於變更資料擷取 (CDC)。Spanner 適用的 Debezium 連接器會擷取 Spanner 變更串流的資料列層級變更,並將這些變更串流至 Apache Kafka 主題。
Debezium 連接器與 Spanner Omni 的運作方式,與其與 Spanner 的運作方式相同。本文說明如何設定 Debezium 連接器,以便連線至 Spanner Omni。
Spanner Omni Debezium 連線支援三種安全設定:純文字、TLS 和相互 TLS (mTLS)。
事前準備
如要搭配 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 規範的 PKCS#8 格式,如 Java SDK mTLS 指示所述:
{
"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。