3.5. 새로운 Debezium 기능

Debezium 2.1.4에는 다음 업데이트가 포함되어 있습니다.

3.5.1. 변경 사항 중단

Debezium 2.1.4의 다음과 같은 변경 사항은 커넥터 동작의 큰 차이점을 나타내며 이전 Debezium 버전과 호환되지 않는 구성 변경이 필요합니다.

여러 커넥터에 적용되는 변경 사항
데이터베이스 기록 주제
이제 데이터베이스 스키마 기록 주제라고 합니다.
메모리 큐의 오브젝트 크기 제한
크기는 더 이상 리플렉션을 사용하여 계산되지 않습니다. 대신 큐 제한은 메시지 스키마를 기반으로 합니다. (DBZ-2766) (MongodB, MySQL, Oracle, PostgreSQL, SQL Server )
커넥터 메트릭 노출
Debezium은 이전에 커넥터 메트릭을 스냅샷, 스트리밍 및 기록 기반 빈의 단일 10.0.0.1으로 노출했습니다. 이번 릴리스에서는 커넥터 지표가 다중 파티션 스키마로 노출됩니다. 그 결과 메트릭 이름과 노출되는 방식이 변경됩니다(DBZ-4726). 메트릭 수집을 위해 Grafana, Prometheus 또는 유사한 CloudEvent 프레임워크를 사용하는 경우 메트릭 수집 프로세스를 검토합니다.
database.server.name property
더 이상 커넥터 구성에 사용되지 않습니다. 자세한 내용은 표 3.1. “커넥터 구성 속성 업데이트”의 내용을 참조하십시오.
스키마 정의
이름 지정 및 버전 관리 일관성을 위해 Debezium 스키마는 이제 중앙 지점 (DBZ-4365,DBZ-5044)에 정의됩니다. 스키마 레지스트리를 사용하는 경우 스키마 호환성 문제가 발생할 수 있습니다.
Debezium 스토리지 변경
이전 릴리스에서는 Integration에서 오프셋, 기록 및 기타 데이터를 debezium-core 모듈의 일부로 읽고 저장할 수 있도록 지원했습니다. 이번 릴리스에는 로컬 파일 시스템 또는 Kafka(DBZ-5229)에 데이터를 저장하기 위한 구현과 함께 새로운 debezium-storage 모듈이 포함되어 있습니다. 이 접근 방식에 구현되는 확장 지점으로 향후 다른 스토리지 구현을 도입할 수 있습니다. 업그레이드의 일부로 코드에 필요한 스토리지 모듈 구현에 따라 애플리케이션의 종속성을 조정해야 할 수 있습니다.
통신 예외 후 재시작
통신과 관련된 예외(SqlException, IOException)가 throw되면 기본적으로 Debezium MongoDB, MySQL, PostgreSQL 및 SQL Server 커넥터가 자동으로 다시 시작됩니다(DBZ-5244).
skipped.operations 구성 옵션의 기본값
기본값은 이제 truncate (DBZ-5497)입니다 (MongoDB, MySQL, Oracle, PostgreSQL, SQL Server)
schema.name.adjustment.mode 속성의 기본값
기본값은 이제 none (DBZ-5541)입니다. 이전의 기본 옵션인 avro 는 Avro 변환기를 사용하는 고객에게는 좋은 선택 였지만 JSON 변환기를 사용하는 환경에서 혼동을 일으켰습니다. 이러한 변경의 일환으로 sanitize.field.names 속성을 더 이상 사용할 수 없습니다.
* 커넥터 구성 속성 제거

Debezium 1.x 버전에서 사용 가능한 여러 속성은 더 이상 유효하지 않으며 새 속성으로 대체되었습니다. 자세한 내용은 다음 표를 참조하십시오.

표 3.1. 커넥터 구성 속성 업데이트

1.x 속성동등한 2.x 속성

database.* (pass-through 데이터베이스 드라이버 속성) (dBZ-5043)

driver.*

database.dbname (SQL Server)

database.names

database.history.consumer.* (BZ-5043)

schema.history.internal.consumer.*

database.history.kafka.bootstrap.servers (DBZ-5043)

schema.history.internal.kafka.bootstrap.servers

database.history.kafka.topic (DBZ-5043)

schema.history.internal.kafka.topic

database.history.producer.* (BZ-5043)

schema.history.internal.producer.*

database.server.name (DBZ-5043)

topic.prefix

MongoDB.name (MongoDB)

topic.prefix

schema_blacklist (BZ-5045)

schema_exclude_list

schema_whitelist (DBZ-5045)

schema_include_list

MySQL 커넥터에 적용되는 변경 사항
  • MySQL 커넥터는 더 이상 기존 JDBC 레거시 날짜/시간 속성을 지원하지 않습니다(DBZ-4965).
MongoDB 커넥터에 적용되는 변경 사항
  • MongoDB 커넥터는 더 이상 oplog에서 직접 스트리밍을 지원하지 않습니다. 변경 스트림은 MongoDB를 사용하여 변경 데이터 캡처를 수행하기 위한 우수한 메커니즘을 나타냅니다. 이제 커넥터에서 직접 oplog 데이터를 캡처하고 디코딩하는 작업을 MongoDB 변경 스트림에 위임하여 컬렉션 내에서 발생하는 변경 사항을 이벤트 스트림으로 노출합니다. Debezium 커넥터는 스트림을 구독한 다음 Kafka의 다운스트림을 제공합니다. 스트림 변경으로 전환하면 비기본 노드에서 변경 사항을 스트리밍할 수 있는 기능과 다운스트림 소비자에 대한 전체 문서 표현으로 업데이트 이벤트를 발송할 수 있는 다양한 이점이 있습니다.
  • 구성 속성 mongodb.nametopic.prefix 속성으로 교체됩니다.
PostgreSQL 커넥터에 적용되는 변경 사항
  • 프로토콜 버퍼(protobuf) 디코딩은 더 이상 지원되지 않습니다(DBZ-703).
  • wal2json 플러그인은 더 이상 지원되지 않습니다(DBZ-4156).
  • PostgreSQL 트랜잭션 ID는 이제 롤오버하는 32비트 정수입니다. 트랜잭션 중복 제거를 단순화하기 위해 LSN은 이제 식별자의 일부로 포함됩니다(DBZ-5329).
SQL Server 커넥터에 적용되는 변경 사항
  • SQL Server 데이터베이스에 대해 SSL을 사용하지 않거나 SSL을 사용하지 않고 데이터베이스에 연결하려는 경우 커넥터 구성에서 database.encrypt 속성 값을 false 로 설정하여 SSL을 비활성화합니다.
  • database.dbname 속성은 database.names 속성으로 교체됩니다.

3.5.2. 일반 가용성으로 승격된 기능

다음 기능은 Debezium 2.1.4 릴리스의 기술 프리뷰에서 일반 가용성으로 승격됩니다.

3.5.3. Debezium 기능 업데이트

이 Debezium 2.1.4 릴리스는 다음 목록에 있는 항목을 포함하여 여러 가지 기능 업데이트 및 수정을 제공합니다.

  • MySQL 커넥터는 이제 binlog 압축을 지원합니다. DBZ-2663
  • LSN에서 요청한 "Streaming requested from LSN" 경고에 대한 로그 출력을 제한합니다. DBZ-3007
  • MySQL 커넥터 구문 분석기에서 JSON_ECDHE에 대한 지원을 구현합니다. DBZ-3575
  • 신호를 보내 증분 스냅샷을 일시 중지하거나 중지할 수 있습니다. DBZ-4251
  • 사용자 계정에 필요한 CDCECDHE 권한이 없으면 SQL Server 커넥터가 실패합니다. DBZ-4346
  • MongoDB 커넥터가 DBZ-4600바이너리 페이로드를 디코딩할 수 있음
  • 이제 실행 중인 증분 스냅샷 DBZ-4727을 일시 중지하고 재개할 수 있습니다.
  • 연결 문자열 URI DBZ-4733을 지정하여 MongoDB 연결 설정을 지정할 수 있습니다.
  • MongoDB 커넥터의 field.exclude.list 속성은 이제 이름이 동일한 컬렉션의 필드와 함께 작동합니다. DBZ-4846
  • 이제 PSQLException 오류: 이 연결이 종료된 후 PostgresSQL 커넥터에서 연결을 다시 시도합니다. DBZ-4948
  • MySQL 커넥터는 이제 기록 레코드 DBZ-4998에 이벤트 헤더 타임스탬프를 저장합니다.
  • LogMiner 배치 크기는 이제 기본 크기가 아닌 현재 배치 크기에 따라 조정됩니다. DBZ-5005
  • ByLogicalTableRouter SMT에 대해 캐시할 최대 항목 수를 구성할 수 있습니다. DBZ-5072
  • 새로운 확장 API를 사용하면 Debezium 버전을 쿼리할 수 있습니다. DBZ-5092
  • 이벤트가 발생하거나 처리되는 시기를 식별하기 위해 ts_ms 필드를 스키마 변경 이벤트에 추가합니다. DBZ-5098
  • MongoDB 커넥터가 oplog 항목을 변환할 때 문서 대신 RawBson Document 클래스를 사용합니다. DBZ-5113
  • MySQL 커밋 타임스탬프 DBZ-5170
  • 이제 SCN 이벤트가 Oracle 이벤트 레코드에 포함됩니다. DBZ-5225
  • UnknownTopicOrECDHEException 의 발생을 방지하기 위해 database.history.kafka.create.timeout.ms 를 설정하여 Kafka 기록 주제를 생성할 때까지 커넥터가 대기하는 기간을 지정할 수 있습니다. DBZ-5249
  • 기본 키를 수정하면 이제 소스와 싱크 간에 LOB 유형 데이터가 일관되게 유지됩니다. DBZ-5295
  • 이제 MySQL 커넥터에서 binlog를 읽으려고 할 때 오류가 발생하면 다시 시도합니다. DBZ-5333
  • 증분 스냅샷 중에 Oracle 커넥터는 이제 마침표를 포함하는 이름을 사용하여 데이터베이스의 이벤트를 올바르게 구문 분석합니다. DBZ-5336
  • 스키마 접두사를 사용하여 PostgreSQL 기본 값 함수 호출을 지원합니다. DBZ-5340
  • MySQL 커넥터는 MySQL 8.x의 서명되지 않은 littleint 데이터 유형을 변환하지 못합니다. DBZ-5343
  • Oracle 커넥터는 캡처된 테이블에 대해 지원되지 않는 LogMiner 작업을 감지할 때 경고를 기록합니다. DBZ-5351
  • Oracle 커넥터는 시스템 및 시스템 생성 열을 둘 다 기반으로 하는 고유 인덱스가 있는 경우 Null PointerException을 생성합니다. DBZ-5356
  • MySQL 커넥터에서 열 해시 v2가 작동하지 않은 문제를 해결합니다. DBZ-5366
  • 첫 번째 배열에 요소가 없는 중첩 배열이 포함된 JSON 확장이 기본 제공 이벤트 페이로드에 실패한 문제를 해결합니다. DBZ-5367
  • MongoDB 호환성 AWS DocumentDB를 사용할 때 MongoDB 커넥터 연결 오류를 수정합니다. DBZ-5371
  • Oracle 커넥터가 예기치 않은 형식으로 CommitScn을 기록한 문제를 해결합니다. DBZ-5381
  • PostgreSQL 커넥터 오류 org.postgresql.util.PSQLException: type timestamp/date/time: CURRENT_TIMESTAMP 값을 수정합니다. DBZ-5384
  • 기록 항목에서 previousID 속성이 없는 MySQL 커넥터의 문제를 해결합니다. DBZ-5386
  • CHECK 제약 조건은 스키마 변경 이벤트의 제약 조건을 기반으로 하는 열을 도입합니다.A check constraint introduces a column based on constraint in the schema change event. DBZ-5390
  • PostgreSQL 커넥터가 PRIECDHE KEY로 참조되는 열을 캡처할 때 발생하는 문제를 해결하지만 일치하는 열은 표에 정의되어 있지 않습니다. DBZ-5398
  • 플러그형 데이터베이스 지원 DBZ-5399와 함께 Oracle을 사용할 때 signal.data.collection 에 대한 문서를 명확히 설명합니다.
  • 이제 PostgreSQL 커넥터에서 GMT를 사용하여 타임스탬프를 지정합니다. DBZ-5403
  • 애드혹 및 증분 스냅샷은 캡처할 데이터의 하위 집합을 지정하기 위한 추가 조건 매개변수를 지원합니다. DBZ-5327
  • DBZ-5441스트리밍 중에 정상적으로 지원되지 않는 비관계형 테이블에 Oracle 커넥터를 활성화하는 논리 추가
  • 이제 SQL Server 커넥터 작업이 "Socket closed" 예외 후에 다시 시작됩니다. DBZ-5478
  • 정규식 주제 이름 지정 전략에서 고유성 키 필드/값 증가. DBZ-5480
  • MySqlErrorHandler는 SocketException DBZ-5486을 처리해야 합니다.
  • MySQL 커넥터는 이제 커넥터 스키마에 데이터베이스 열 주석을 추가합니다. DBZ-5489
  • 스키마 기록 메시지에 기본값 및 skopeo 값을 노출합니다. DBZ-5511
  • BinaryHandlingMode DBZ-5544에서 BASE64_URL_SAFE 지원
  • 소스 데이터베이스 DBZ-5557로 오프셋을 커밋할 때 파티션 제공
  • source.ts_ms 기존 스냅샷 프로세스 설정. DBZ-5591
  • "logical name" 구성을 정리합니다. DBZ-5594
  • 이제 MySQL Connector에서 TRUNCATE 이벤트를 캡처합니다. DBZ-5610
  • 설명서에서 include/exclude 옵션의 의미 체계 명확히 설명합니다. DBZ-5625
  • 변경 이벤트를 발송할 때 이전 필드를 포함하도록 MongoDB 커넥터를 구성할 수 있습니다. DBZ-5628
  • PostgreSQL 커넥터의 비원속적인 스냅샷을 로깅합니다. DBZ-5639
  • REGEXP_LIKE 불일치를 줄임으로써 LogMiner 쿼리 성능을 향상시킵니다. DBZ-5648
  • MongoDB 커넥터가 서버에 하트비트 메시지를 보내는 빈도를 구성할 수 있습니다. DBZ-5736
  • 주제 이름 DBZ-5790을 삭제하는 기능 개선
  • PostgreSQL 커넥터가 처리된 레코드의 LSN을 데이터베이스에 자동으로 커밋하지 못하도록 flush.lsn.source 를 구성할 수 있습니다. DBZ-5811
  • 이제 Compute >-< SMT를 사용하여 특정 필드를 기반으로 특정 주제 파티션으로 데이터를 라우팅할 수 있습니다. DBZ-5847
  • PostgreSQL 커넥터가 실패한 LSN 검사를 건너뛰도록 event.processing.failure.handling.mode 를 구성할 수 있습니다. DBZ-6012
  • 이제 중요하지 않은 변경 사항이 있는 CDB(플러그블 데이터베이스 배포)에서 Oracle 커넥터를 사용할 때 커넥터 오프셋이 올바르게 진행됩니다. DBZ-6125