Debezium을 사용하여 Spanner Omni에 연결

Debezium은 변경 데이터 캡처 (CDC)를 위한 오픈소스 분산 플랫폼입니다. Spanner용 Debezium 커넥터는 Spanner 변경 내역에서 행 수준 변경사항을 캡처하고 이를 Apache Kafka 주제로 스트리밍합니다.

Debezium 커넥터는 Spanner와 마찬가지로 Spanner Omni와 함께 작동합니다. 이 문서에서는 Spanner Omni에 연결하도록 Debezium 커넥터를 구성하는 방법을 보여줍니다.

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 트러스트 저장소 구성에 설명된 대로 Java 트러스트 저장소에 Spanner Omni CA 인증서를 추가합니다. 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 트러스트 저장소 구성에 설명된 대로 Java 트러스트 저장소에 Spanner Omni CA 인증서를 추가합니다. spanner.type을 OMNI로 설정하고, https://를 사용하여 엔드포인트를 지정하고, 클라이언트 인증서와 클라이언트 비공개 키의 경로를 지정합니다. 클라이언트 비공개 키는 Java SDK mTLS 안내에 설명된 대로 Java 호환 PKCS#8 형식이어야 합니다.

{
  "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 형식의 클라이언트 비공개 키 파일 경로입니다.

다음 단계