Usa Debezium para conectarte a Spanner Omni

Debezium es una plataforma distribuida de código abierto para la captura de datos modificados (CDC). El conector de Debezium para Spanner captura los cambios a nivel de la fila de los flujos de cambios de Spanner y los transmite a los temas de Apache Kafka.

El conector Debezium funciona con Spanner Omni de la misma manera que lo hace con Spanner. En este documento, se muestra cómo configurar el conector de Debezium para conectarse a Spanner Omni.

Las conexiones de Spanner Omni Debezium admiten tres configuraciones de seguridad: texto sin formato, TLS y TLS mutua (mTLS).

Antes de comenzar

Para usar el conector de Debezium con Spanner Omni, asegúrate de cumplir con los siguientes requisitos previos:

  • Descarga e instala la versión 3.7.0 o una posterior del complemento Debezium connector for Spanner en el directorio de complementos de Kafka Connect.
  • Configura Apache Kafka y Kafka Connect. Para obtener más información, consulta la guía de instalación de Debezium.
  • Crea una base de datos y un flujo de cambios en Spanner Omni. Para obtener más información, consulta Flujos de cambios en la documentación de Spanner.

Configura el conector Debezium

Para conectar el conector de Debezium a Spanner Omni, especifica las siguientes propiedades en la configuración del conector de Kafka Connect:

  • connector.class: Configurado como io.debezium.connector.spanner.SpannerConnector.
  • spanner.type: Configurado como OMNI. Cuando se establece en OMNI, gcp.spanner.project.id y gcp.spanner.instance.id se establecen automáticamente en default y no se requieren en la configuración.
  • gcp.spanner.host: Es el extremo de Spanner Omni, por ejemplo, http://localhost:15000 para texto sin formato o https://localhost:15000 para TLS y mTLS.
  • gcp.spanner.database.id: Es el ID de tu base de datos de Spanner Omni.
  • gcp.spanner.change-stream.name: Es el nombre del flujo de cambios que se capturará.
  • spanner.omni.use.plaintext: Opcional Configúralo como true para establecer una conexión de texto sin formato.
  • spanner.omni.client.cert.path: Opcional Es la ruta de acceso al archivo de certificado de cliente para las conexiones mTLS.
  • spanner.omni.client.key.path: Opcional Es la ruta de acceso al archivo de clave privada del cliente en formato PKCS#8 para las conexiones mTLS.

Establece la conexión

En los siguientes ejemplos, se muestra cómo configurar el conector de Debezium para cada configuración de seguridad admitida:

Texto sin formato

Para establecer una conexión de texto sin formato, configura spanner.type como OMNI, especifica el extremo con http:// y configura 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"
  }
}

Reemplaza lo siguiente:

  • CONNECTOR_NAME: Es el nombre de tu instancia del conector de Debezium, por ejemplo, spanner-omni-connector.

  • ENDPOINT: Es el extremo de tu instancia de Spanner Omni, por ejemplo, localhost:15000.

  • DATABASE_ID: Es el ID de tu base de datos de Spanner Omni, por ejemplo, test-db.

  • CHANGE_STREAM_NAME: Es el nombre del flujo de cambios en tu base de datos, por ejemplo, my_change_stream.

TLS

Para establecer una conexión TLS, agrega el certificado de la CA de Omni de Spanner al almacén de confianza de Java, como se describe en Configura el almacén de confianza de Java. Establece spanner.type en OMNI y especifica el extremo con 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"
  }
}

Reemplaza lo siguiente:

  • CONNECTOR_NAME: Es el nombre de tu instancia del conector de Debezium, por ejemplo, spanner-omni-connector.

  • ENDPOINT: Es el extremo de tu instancia de Spanner Omni, por ejemplo, localhost:15000.

  • DATABASE_ID: Es el ID de tu base de datos de Spanner Omni, por ejemplo, test-db.

  • CHANGE_STREAM_NAME: Es el nombre del flujo de cambios en tu base de datos, por ejemplo, my_change_stream.

mTLS

Para establecer una conexión de mTLS, agrega el certificado de la AC de Spanner Omni al almacén de certificados de confianza de Java, como se describe en Configura el almacén de confianza de Java. Establece spanner.type en OMNI, especifica el extremo con https:// y especifica las rutas de acceso a tu certificado de cliente y a tu clave privada del cliente. La clave privada del cliente debe estar en un formato PKCS#8 compatible con Java, como se describe en las instrucciones de mTLS del SDK de 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"
  }
}

Reemplaza lo siguiente:

  • CONNECTOR_NAME: Es el nombre de tu instancia del conector de Debezium, por ejemplo, spanner-omni-connector.

  • ENDPOINT: Es el extremo de tu instancia de Spanner Omni, por ejemplo, localhost:15000.

  • DATABASE_ID: Es el ID de tu base de datos de Spanner Omni, por ejemplo, test-db.

  • CHANGE_STREAM_NAME: Es el nombre del flujo de cambios en tu base de datos, por ejemplo, my_change_stream.

  • PATH_TO_CLIENT_CERT: Es la ruta de acceso al archivo del certificado del cliente.

  • PATH_TO_CLIENT_KEY: Es la ruta de acceso al archivo de clave privada del cliente en formato PKCS#8.

¿Qué sigue?