O Debezium é uma plataforma distribuída de código aberto para captura de dados alterados (CDC). O conector do Debezium para Spanner captura mudanças no nível da linha dos fluxo de alterações do Spanner e os transmite para tópicos do Apache Kafka.
O conector do Debezium funciona com o Spanner Omni da mesma forma que funciona com o Spanner. Neste documento, mostramos como configurar o conector do Debezium para se conectar ao Spanner Omni.
As conexões do Spanner Omni Debezium oferecem suporte a três configurações de segurança: texto simples, TLS e TLS mútuo (mTLS).
Antes de começar
Para usar o conector Debezium com o Spanner Omni, verifique se você atende aos seguintes pré-requisitos:
- Baixe e instale a versão 3.7.0 ou mais recente do plug-in conector do Debezium para Spanner no diretório de plug-ins do Kafka Connect.
- Configure o Apache Kafka e o Kafka Connect. Para mais informações, consulte o guia de instalação do Debezium.
- Crie um banco de dados e um fluxo de alterações no Spanner Omni. Para mais informações, consulte Fluxos de alterações na documentação do Spanner.
Configurar o conector do Debezium
Para conectar o conector do Debezium ao Spanner Omni, especifique as seguintes propriedades na configuração do conector do Kafka Connect:
- Defina
connector.classcomoio.debezium.connector.spanner.SpannerConnector. - Defina
spanner.typecomoOMNI. Quando definido comoOMNI,gcp.spanner.project.idegcp.spanner.instance.idsão definidos automaticamente comodefaulte não são necessários na configuração. gcp.spanner.host: o endpoint do Spanner Omni. Por exemplo,http://localhost:15000para texto simples ouhttps://localhost:15000para TLS e mTLS.gcp.spanner.database.id: o ID do banco de dados do Spanner Omni.gcp.spanner.change-stream.name: o nome do fluxo de mudanças a ser capturado.spanner.omni.use.plaintext: opcional. Defina comotruepara estabelecer uma conexão de texto simples.spanner.omni.client.cert.path: opcional. O caminho para o arquivo de certificado do cliente para conexões mTLS.spanner.omni.client.key.path: opcional. O caminho para o arquivo de chave privada do cliente no formato PKCS#8 para conexões mTLS.
Estabelecer uma conexão
Os exemplos a seguir mostram como configurar o conector Debezium para cada configuração de segurança compatível:
Texto simples
Para estabelecer uma conexão de texto simples, defina spanner.type como OMNI, especifique
o endpoint com http:// e defina spanner.omni.use.plaintext como 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"
}
}
Substitua:
CONNECTOR_NAME: o nome da instância do conector Debezium, por exemplo,spanner-omni-connector.ENDPOINT: o endpoint da sua instância do Spanner Omni, por exemplo,localhost:15000.DATABASE_ID: o ID do banco de dados do Spanner Omni, por exemplo,test-db.CHANGE_STREAM_NAME: o nome do fluxo de mudanças no seu banco de dados, por exemplo,my_change_stream.
TLS
Para estabelecer uma conexão TLS, adicione o certificado de CA do Spanner Omni ao truststore do Java, conforme descrito em Configurar o truststore do Java. Defina
spanner.type como OMNI e especifique o endpoint usando 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"
}
}
Substitua:
CONNECTOR_NAME: o nome da instância do conector Debezium, por exemplo,spanner-omni-connector.ENDPOINT: o endpoint da sua instância do Spanner Omni, por exemplo,localhost:15000.DATABASE_ID: o ID do banco de dados do Spanner Omni, por exemplo,test-db.CHANGE_STREAM_NAME: o nome do fluxo de mudanças no seu banco de dados, por exemplo,my_change_stream.
mTLS
Para estabelecer uma conexão mTLS, adicione o certificado de CA do Spanner Omni ao truststore do Java, conforme descrito em Configurar o truststore do Java. Defina spanner.type como OMNI, especifique o endpoint usando https:// e especifique os caminhos para o certificado do cliente e a chave privada do cliente. A chave privada do cliente
precisa estar em um formato PKCS#8 compatível com Java, conforme descrito nas
instruções de mTLS do SDK Java:
{
"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"
}
}
Substitua:
CONNECTOR_NAME: o nome da instância do conector Debezium, por exemplo,spanner-omni-connector.ENDPOINT: o endpoint da sua instância do Spanner Omni, por exemplo,localhost:15000.DATABASE_ID: o ID do banco de dados do Spanner Omni, por exemplo,test-db.CHANGE_STREAM_NAME: o nome do fluxo de mudanças no seu banco de dados, por exemplo,my_change_stream.PATH_TO_CLIENT_CERT: o caminho para o arquivo de certificado do cliente.PATH_TO_CLIENT_KEY: o caminho para o arquivo de chave privada do cliente no formato PKCS#8.
A seguir
Saiba mais sobre a autenticação e autorização do Spanner Omni.