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 형식의 클라이언트 비공개 키 파일 경로입니다.
다음 단계
Kafka에 대한 변경 내역 연결을 빌드합니다.
Spanner Omni 인증 및 승인에 대해 알아봅니다.