使用 Debezium 連線至 Spanner Omni

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。

後續步驟