Debezium 是一个用于变更数据捕获 (CDC) 的开源分布式平台。适用于 Spanner 的 Debezium 连接器可从 Spanner 变更数据流中捕获行级更改,并将其流式传输到 Apache Kafka 主题。
Debezium 连接器与 Spanner Omni 的搭配使用方式与 Spanner 相同。本文档介绍了如何配置 Debezium 连接器以连接到 Spanner Omni。
Spanner Omni Debezium 连接支持三种安全配置:纯文本、TLS 和双向 TLS (mTLS)。
准备工作
如需将 Debezium 连接器与 Spanner Omni 搭配使用,请确保满足以下前提条件:
- 在 Kafka Connect 插件目录中下载并安装 Debezium 连接器 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(用于纯文本)或https://localhost:15000(用于 TLS 和 mTLS)。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 格式)的路径。
后续步骤
构建与 Kafka 的变更数据流连接。