데이터의 가치는 시간에 민감합니다. 실시간 처리는 데이터 기반 의사 결정을 몇 시간 또는 며칠이 아닌 몇 초 또는 몇 분 만에 정확하고 실행 가능하게 만듭니다. CDC(변경 데이터 캡처)는 데이터베이스의 데이터에 대한 변경 사항을 식별하고 캡처한 다음 이러한 변경 사항을 다운스트림 시스템에 실시간으로 전달하는 프로세스를 말합니다. 소스 데이터베이스의 트랜잭션에서 모든 변경 사항을 캡처하고 실시간으로 대상으로 이동하면 시스템 동기화가 유지되고 실시간 분석 사용 사례 및 다운타임 없는 데이터베이스 마이그레이션에 도움이 됩니다. 다음은 CDC의 몇 가지 이점입니다.
- 대상 리포지토리에 대한 데이터 변경 사항의 증분 로드 또는 실시간 스트리밍을 가능하게 하여 대량 로드 업데이트 및 불편한 배치 윈도우의 필요성을 제거합니다.
- 여러 시스템의 데이터가 동기화 상태를 유지하도록 합니다. 이는 고속 데이터 환경에서 시간에 민감한 결정을 내리는 경우에 특히 중요합니다.
카프카 커넥트 데이터베이스, 키-값 저장소, 검색 인덱스 및 파일 시스템 간의 간단한 데이터 통합을 위한 중앙 집중식 데이터 허브로 작동하는 Apache Kafka의 오픈 소스 구성 요소입니다. 그만큼 AWS Glue 스키마 레지스트리 데이터 스트림 스키마를 중앙에서 검색, 제어 및 발전시킬 수 있습니다. Kafka Connect와 Schema Registry가 통합되어 커넥터에서 스키마 정보를 캡처합니다. Kafka Connect는 Kafka Connect에서 사용하는 내부 데이터 유형의 데이터를 Avro, Protobuf 또는 JSON 스키마로 표시되는 데이터 유형으로 변환하는 메커니즘을 제공합니다. AvroConverter, ProtobufConverter 및 JsonSchemaConverter는 Kafka에 데이터를 생성하는 Kafka 커넥터(소스)에서 생성된 스키마를 자동으로 등록합니다. Kafka에서 데이터를 소비하는 커넥터(싱크)는 각 메시지에 대한 데이터와 함께 스키마 정보를 수신합니다. 이를 통해 싱크 커넥터는 데이터 구조를 파악하여 데이터 카탈로그에서 데이터베이스 테이블 스키마를 유지 관리하는 것과 같은 기능을 제공할 수 있습니다.
게시물은 다음을 사용하여 종단 간 CDC를 구축하는 방법을 보여줍니다. 아마존 MSK 커넥트, Kafka Connect 애플리케이션 및 AWS Glue Schema Registry를 배포 및 실행하는 AWS 관리형 서비스로, 데이터 스트림 스키마를 중앙에서 검색, 제어 및 발전시킬 수 있습니다.
솔루션 개요
생산자 측에서 이 예에서는 MySQL 호환을 선택합니다. Amazon Aurora 데이터베이스를 데이터 소스로 사용하고 있습니다. 데베 지움 CDC를 수행하기 위한 MySQL 커넥터. Debezium 커넥터는 데이터베이스를 지속적으로 모니터링하고 행 수준 변경 사항을 Kafka 항목에 푸시합니다. 커넥터는 레코드를 이진 형식으로 직렬화하기 위해 데이터베이스에서 스키마를 가져옵니다. 스키마가 레지스트리에 아직 없으면 스키마가 등록됩니다. 스키마가 존재하지만 직렬 변환기가 새 버전을 사용하는 경우 스키마 레지스트리는 다음을 확인합니다. 호환성 모드 스키마를 업데이트하기 전에 스키마의. 이 솔루션에서는 다음을 사용합니다. 이전 버전과의 호환성 모드. 스키마의 새 버전이 이전 버전과 호환되지 않는 경우 스키마 레지스트리는 오류를 반환하며 호환되지 않는 메시지를 배달 못한 편지 대기열로 보내도록 Kafka Connect를 구성할 수 있습니다.
소비자 측에서는 다음을 사용합니다. 아마존 단순 스토리지 서비스 (Amazon S3) 싱크 커넥터는 레코드를 역직렬화하고 변경 사항을 Amazon S3에 저장합니다. MSK Connect를 사용하여 Debezium 커넥터와 Amazon S3 싱크를 구축하고 배포합니다.
예시 스키마
이 게시물에서는 테이블의 첫 번째 버전으로 다음 스키마를 사용합니다.
사전 조건
MSK 생산자 및 소비자 커넥터를 구성하기 전에 먼저 데이터 원본, MSK 클러스터 및 새 스키마 레지스트리를 설정해야 합니다. 우리는 AWS 클라우드 포메이션 솔루션에 필요한 지원 리소스를 생성하기 위한 템플릿:
- 데이터 원본으로 MySQL 호환 Aurora 데이터베이스. CDC를 수행하기 위해 다음에서 바이너리 로깅을 켭니다. DB 클러스터 파라미터 그룹.
- MSK 클러스터. 네트워크 연결을 단순화하기 위해 Aurora 데이터베이스와 MSK 클러스터에 동일한 VPC를 사용합니다.
- 메시지 키 및 메시지 값에 대한 스키마를 처리하는 두 개의 스키마 레지스트리.
- 데이터 싱크로 S3 버킷 XNUMX개.
- 이 데모에는 MSK Connect 플러그인 및 작업자 구성이 필요합니다.
- 한 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 인스턴스는 데이터베이스 명령을 실행합니다.
AWS 계정에서 리소스를 설정하려면 Amazon MSK, MSK Connect 및 AWS Glue Schema Registry를 지원하는 AWS 리전에서 다음 단계를 완료하십시오.
- 왼쪽 메뉴에서 발사 스택:
- 왼쪽 메뉴에서 다음 보기.
- 럭셔리 스택 이름, 적절한 이름을 입력하십시오.
- 럭셔리 데이터베이스 비밀번호, 데이터베이스 사용자에 대해 원하는 비밀번호를 입력하십시오.
- 다른 값은 기본값으로 유지하십시오.
- 왼쪽 메뉴에서 다음 보기.
- 다음 페이지에서 다음 보기.
- 마지막 페이지에서 세부 정보를 검토하고 AWS CloudFormation이 IAM 리소스를 생성 할 수 있음을 인정합니다.
- 왼쪽 메뉴에서 스택 생성.
소스 및 대상 커넥터용 사용자 정의 플러그인
사용자 정의 플러그인은 하나 이상의 커넥터, 변환 또는 변환기의 구현을 포함하는 JAR 파일 세트입니다. Amazon MSK는 커넥터가 실행 중인 MSK Connect 클러스터의 작업자에 플러그인을 설치합니다. 이 데모의 일부로 소스 커넥터의 경우 오픈 소스를 사용합니다. Debezium MySQL 커넥터 JAR, 대상 커넥터의 경우 라이센스가 부여된 Confluent 커뮤니티를 사용합니다. Amazon S3 싱크 커넥터 JAR. 두 플러그인 모두 다음을 위한 라이브러리와 함께 추가됩니다. Avro 직렬 변환기 및 역직렬 변환기 AWS Glue 스키마 레지스트리. 이러한 사용자 지정 플러그인은 이전 단계에서 배포된 CloudFormation 템플릿의 일부로 이미 생성되어 있습니다.
MSK Connect에서 Debezium 커넥터와 함께 AWS Glue Schema Registry를 MSK 생산자로 사용
먼저 Debezium MySQL 플러그인을 사용하여 소스 커넥터를 배포하여 Amazon Aurora MySQL 호환 에디션 데이터베이스를 Amazon MSK로. 다음 단계를 완료하십시오.
- Amazon MSK 콘솔의 탐색 창에서 MSK 연결선택한다. 커넥터.
- 왼쪽 메뉴에서 커넥터 만들기.
- 왼쪽 메뉴에서 기존 사용자 정의 플러그인 사용 그런 다음 이름이 시작되는 사용자 지정 플러그인을 선택합니다.
msk-blog-debezium-source-plugin
. - 왼쪽 메뉴에서 다음 보기.
- 와 같이 적당한 이름을 입력하세요.
debezium-mysql-connector
및 선택적 설명. - 럭셔리 아파치 카프카 클러스터선택한다. MSK 클러스터 CloudFormation 템플릿으로 생성된 클러스터를 선택합니다.
- In 커넥터 구성, 기본값을 삭제하고 적절한 값과 함께 다음 구성 키-값 쌍을 사용합니다.
- name – 커넥터에 사용되는 이름.
- 데이터베이스.호스트 이름 – 다음에 대한 CloudFormation 출력 데이터베이스 끝점.
- 데이터베이스.사용자 및 데이터베이스.비밀번호 – CloudFormation 템플릿에 전달된 매개변수.
- 데이터베이스.히스토리.카프카.부트스트랩.서버 – 다음에 대한 CloudFormation 출력 카프카 부트스트랩.
- key.converter.region 및 value.converter.region – 귀하의 지역.
이러한 설정 중 일부는 일반적이며 모든 커넥터에 대해 지정해야 합니다. 예를 들어:
- connector.class는 커넥터의 Java 클래스입니다.
- tasks.max는 이 커넥터에 대해 만들어야 하는 최대 작업 수입니다.
일부 설정(database.*
, transforms.*
)는 Debezium MySQL 커넥터에만 적용됩니다. 인용하다 Debezium MySQL 소스 커넥터 구성 속성
일부 설정(key.converter.*
와 value.converter.*
)는 스키마 레지스트리에만 적용됩니다. 우리는 AWSKafkaAvroConverter
인사말 AWS Glue 스키마 레지스트리 라이브러리 형식 변환기로. 구성하려면 AWSKafkaAvroConverter
, 우리는 문자열 상수 속성의 값을 AWSSchemaRegistry상수 수업:
key.converter
와value.converter
소스 커넥터에 대해 Kafka에 쓰거나 싱크 커넥터에 대해 Kafka에서 읽을 데이터의 형식을 제어합니다. 우리는 사용AWSKafkaAvroConverter
Avro 형식의 경우.key.converter.registry.name
와value.converter.registry.name
사용할 스키마 레지스트리를 정의합니다.key.converter.compatibility
와value.converter.compatibility
호환성 모델을 정의합니다.
인용하다 AWS Glue 스키마 레지스트리와 함께 Kafka Connect 사용
- 다음으로 구성합니다. 커넥터 용량. 우리는 선택할 수 있습니다 프로비저닝 됨 다른 속성은 기본값으로 둡니다.
- 럭셔리 작업자 구성, 이름이 시작하는 커스텀 작업자 구성을 선택합니다.
msk-gsr-blog
CloudFormation 템플릿의 일부로 생성됩니다. - 럭셔리 액세스 권한, 사용 AWS 자격 증명 및 액세스 관리 CloudFormation 템플릿에서 생성된 (IAM) 역할
MSKConnectRole
. - 왼쪽 메뉴에서 다음 보기.
- 럭셔리 보안, 기본값을 선택합니다.
- 왼쪽 메뉴에서 다음 보기.
- 럭셔리 로그 전달, 고르다 Amazon CloudWatch Logs에 전달 CloudFormation 템플릿에서 생성한 로그 그룹을 찾습니다(
msk-connector-logs
). - 왼쪽 메뉴에서 다음 보기.
- 설정을 검토하고 커넥터 만들기.
몇 분 후 커넥터가 실행 중 상태로 변경됩니다.
MSK Connect에서 MSK 소비자로 실행되는 Confluent S3 싱크 커넥터와 함께 AWS Glue Schema Registry 사용
Confluent S3 싱크 플러그인을 사용하여 싱크 커넥터를 배포하여 Amazon MSK에서 Amazon S3로 데이터를 스트리밍합니다. 다음 단계를 완료하십시오.
-
- Amazon MSK 콘솔의 탐색 창에서 MSK 연결선택한다. 커넥터.
- 왼쪽 메뉴에서 커넥터 만들기.
- 왼쪽 메뉴에서 기존 사용자 정의 플러그인 사용 이름이 시작되는 사용자 정의 플러그인을 선택하십시오.
msk-blog-S3sink-plugin
. - 왼쪽 메뉴에서 다음 보기.
- 와 같이 적당한 이름을 입력하세요.
s3-sink-connector
및 선택적 설명. - 럭셔리 아파치 카프카 클러스터선택한다. MSK 클러스터 CloudFormation 템플릿으로 생성된 클러스터를 선택합니다.
- In 커넥터 구성, 제공된 기본값을 삭제하고 적절한 값과 함께 다음 구성 키-값 쌍을 사용합니다.
-
- name – 커넥터에 사용된 것과 동일한 이름.
- s3.버킷.이름 – 다음에 대한 CloudFormation 출력 버킷 이름.
- s3.region, key.converter.region 및 value.converter.region – 귀하의 지역.
-
- 다음으로 구성합니다. 커넥터 용량. 우리는 선택할 수 있습니다 프로비저닝 됨 다른 속성은 기본값으로 둡니다.
- 럭셔리 작업자 구성, 이름이 시작하는 커스텀 작업자 구성을 선택합니다.
msk-gsr-blog
CloudFormation 템플릿의 일부로 생성됩니다. - 럭셔리 액세스 권한, CloudFormation 템플릿에서 생성된 IAM 역할을 사용합니다.
MSKConnectRole
. - 왼쪽 메뉴에서 다음 보기.
- 럭셔리 보안, 기본값을 선택합니다.
- 왼쪽 메뉴에서 다음 보기.
- 럭셔리 로그 전달, 고르다 Amazon CloudWatch Logs에 전달 CloudFormation 템플릿에서 생성한 로그 그룹을 찾습니다.
msk-connector-logs
. - 왼쪽 메뉴에서 다음 보기.
- 설정을 검토하고 커넥터 만들기.
몇 분 후 커넥터가 실행됩니다.
종단 간 CDC 로그 스트림 테스트
이제 Debezium 및 S3 싱크 커넥터가 모두 실행 중이므로 다음 단계를 완료하여 종단 간 CDC를 테스트합니다.
- Amazon EC2 콘솔에서 다음으로 이동합니다. 보안 그룹 페이지.
- 보안 그룹 선택
ClientInstanceSecurityGroup
선택하고 인바운드 규칙 편집. - 로컬 네트워크에서 SSH 연결을 허용하는 인바운드 규칙을 추가합니다.
- 에 인스턴스 페이지에서 인스턴스를 선택합니다.
ClientInstance
선택하고 연결하기. - 에 EC2 인스턴스 연결 탭에서 연결하기.
- 현재 작업 디렉토리가 다음인지 확인하십시오.
/home/ec2-user
그리고 그것은 파일을 가지고create_table.sql
,alter_table.sql
,initial_insert.sql
및insert_data_with_new_column.sql
. - 다음 명령을 실행하여 MySQL 데이터베이스에 테이블을 생성합니다(CloudFormation 템플릿 출력에서 데이터베이스 호스트 이름 제공).
- 비밀번호를 묻는 메시지가 표시되면 CloudFormation 템플릿 매개변수의 비밀번호를 입력합니다.
- 다음 명령을 사용하여 일부 샘플 데이터를 테이블에 삽입합니다.
- 비밀번호를 묻는 메시지가 표시되면 CloudFormation 템플릿 매개변수의 비밀번호를 입력합니다.
- AWS Glue 콘솔에서 스키마 레지스트리 탐색 창에서 다음을 선택합니다. 스키마.
- 로 이동
db1.sampledatabase.movies
영화 테이블에 대해 생성된 새 스키마를 확인하기 위한 버전 1:
Kafka 주제의 각 파티션에 대해 별도의 S3 폴더가 생성되고 주제에 대한 데이터가 해당 폴더에 기록됩니다.
- Amazon S3 콘솔에서 Kafka 주제의 폴더에 Parquet 형식으로 작성된 데이터가 있는지 확인합니다.
스키마 진화
초기 스키마가 정의된 후 애플리케이션은 시간이 지남에 따라 스키마를 발전시켜야 할 수 있습니다. 이 경우 다운스트림 소비자가 이전 스키마와 새 스키마로 인코딩된 데이터를 원활하게 처리할 수 있어야 합니다. 호환성 모드를 사용하면 스키마가 시간이 지남에 따라 발전할 수 있거나 발전할 수 없는 방식을 제어할 수 있습니다. 이러한 모드는 데이터를 생성하고 소비하는 응용 프로그램 간의 계약을 형성합니다. AWS Glue Schema Registry에서 사용할 수 있는 다양한 호환성 모드에 대한 자세한 내용은 다음을 참조하십시오. AWS Glue 스키마 레지스트리. 이 예에서는 역방향 결합 가능성을 사용하여 소비자가 현재 및 이전 스키마 버전을 모두 읽을 수 있도록 합니다. 다음 단계를 완료하십시오.
- 다음 명령을 실행하여 테이블에 새 열을 추가합니다.
- 다음 명령을 실행하여 새 데이터를 테이블에 삽입합니다.
- AWS Glue 콘솔에서 스키마 레지스트리 탐색 창에서 다음을 선택합니다. 스키마.
- 스키마로 이동
db1.sampledatabase.movies
추가한 국가 열을 포함하여 영화 테이블 영화에 대해 생성된 스키마의 새 버전을 확인하려면 버전 2:
- Amazon S3 콘솔에서 Kafka 주제에 대한 폴더에 Parquet 형식으로 작성된 데이터를 확인합니다.
정리
AWS 계정에 원치 않는 요금이 부과되지 않도록 하려면 이 게시물에서 사용한 AWS 리소스를 삭제하십시오.
- Amazon S3 콘솔에서 CloudFormation 템플릿으로 생성된 S3 버킷으로 이동합니다.
- 모든 파일과 폴더를 선택하고 ..
- 지시에 따라 영구 삭제를 입력하고 선택하십시오. 개체 삭제.
- AWS CloudFormation 콘솔에서 생성한 스택을 삭제합니다.
- 스택 상태가 다음으로 변경될 때까지 기다립니다. 삭제_완료.
결론
이 게시물에서는 Amazon MSK, MSK Connect 및 AWS Glue Schema Registry를 사용하여 CDC 로그 스트림을 구축하고 비즈니스 요구 사항이 변경됨에 따라 데이터 스트림에 대한 스키마를 발전시키는 방법을 보여주었습니다. 이 아키텍처 패턴을 다른 Kafka 커넥터가 있는 다른 데이터 소스에 적용할 수 있습니다. 자세한 내용은 다음을 참조하십시오. MSK 연결 예.
저자에 관하여
칼리안 자나키 Amazon Web Services의 수석 빅 데이터 및 분석 전문가입니다. 그는 고객이 AWS에서 확장성과 성능이 뛰어나고 안전한 클라우드 기반 솔루션을 설계하고 구축하도록 돕습니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 출처: https://aws.amazon.com/blogs/big-data/build-an-end-to-end-change-data-capture-with-amazon-msk-connect-and-aws-glue-schema-registry/
- :이다
- $UP
- 1
- 10
- 11
- 7
- 8
- a
- 할 수 있는
- 소개
- ACCESS
- 계정
- 정확한
- 인정
- 추가
- 또한
- All
- 허용
- 수
- 이미
- 아마존
- Amazon EC2
- Amazon Web Services
- 분석
- 와
- 아파치
- 아파치 카프카
- 어플리케이션
- 신청
- 적당한
- 아키텍처
- 있군요
- AS
- 오로라
- 자동적으로
- 가능
- AWS
- AWS 클라우드 포메이션
- AWS 접착제
- BE
- 전에
- 혜택
- 사이에
- 큰
- 빅 데이터
- 부트 스트랩
- 빌드
- 사업
- by
- CAN
- 기능
- 포착
- 캡처
- 가지 경우
- 목록
- CDC
- 중앙
- 이전 단계로 돌아가기
- 변경
- 요금
- 검사
- 확인하는 것이 좋다.
- 왼쪽 메뉴에서
- 수업
- 클러스터
- 단
- 커뮤니티
- 호환성
- 호환
- 완전한
- 구성 요소
- 계산
- 구성
- 지류
- 연결하기
- 연결
- 콘솔에서
- 상수
- 소비
- 소비자
- 소비자
- 지속적으로
- 계약
- 제어
- 국가
- 만들
- 만든
- 임계
- Current
- 관습
- 고객
- 데이터
- 데이터 통합
- 데이터 중심
- 데이터베이스
- 데이터베이스
- 일
- 결정
- 태만
- 기본값
- 한정된
- 배달
- Rescale과 함께 비즈니스를 가속화하는 방법에 대해 알아보세요.
- 시연
- 보여줍니다
- 배포
- 배포
- 설명
- 목적지
- 상세한
- 세부설명
- 다른
- 발견
- 하지 않습니다
- 드롭
- 마다
- 거림
- 가능
- 끝으로 종료
- 확인
- 보장
- 엔터 버튼
- 환경
- 오류
- 특히
- 에테르 (ETH)
- 모든
- 진화시키다
- 예
- 현존하는
- 존재
- 를
- Fields
- 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에
- 파일
- 최후의
- 먼저,
- 수행원
- 럭셔리
- 형태
- 체재
- 에
- 생성
- 생성
- 그룹
- 여러 떼
- 핸들
- 처리
- 발생
- 있다
- 도움
- 도움이
- 고도로
- history
- 주인
- 진료 시간
- 방법
- How To
- HTML
- HTTP
- HTTPS
- 허브
- IAM
- 식별
- 통합 인증
- 이행
- 중대한
- in
- 포함
- 색인
- 정보
- 처음에는
- 설치
- 예
- 를 받아야 하는 미국 여행자
- 통합
- 완성
- 내부의
- IT
- 자바
- JPG
- JSON
- 카프카
- 키
- 알아
- 휴가
- 도서관
- 라이센스
- 처럼
- 하중
- 로드
- 지방의
- 긴
- 만든
- 제작
- 유튜브 영상을 만드는 것은
- 관리
- 석사
- 최대
- 최고
- 기구
- 메시지
- 메시지
- 수도
- 분
- 모델
- 모드
- 모니터
- 배우기
- 영화 산업
- 움직이는
- 여러
- MySQL의
- name
- 이동
- 카테고리
- 필요
- 필요
- 요구
- 네트워크
- 신제품
- 다음 것
- 번호
- of
- 낡은
- on
- ONE
- 오픈 소스
- 기타
- 출력
- 페이지
- 쌍
- 빵
- 매개 변수
- 매개 변수
- 부품
- 합격
- 비밀번호
- 무늬
- 수행
- 영구적으로
- 선택
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 플러그인
- 플러그인
- 게시하다
- 예방
- 너무 이른
- 방법
- 처리
- 생산
- 제작자
- 속성
- 제공
- 제공
- 제공
- 읽기
- 현실
- 실시간
- 받다
- 기록
- 기록
- 의미
- 지방
- 회원가입
- 등록된
- 레지스트리
- 저장소
- 대표되는
- 자료
- 반품
- 직위별
- 통치
- 달리기
- 달리는
- 같은
- 확장성
- 완벽하게
- 검색
- 초
- 안전해야합니다.
- 보안
- 연장자
- 민감한
- 별도의
- 서비스
- 서비스
- 세트
- 설정
- 영상을
- 단순, 간단, 편리
- 단순화
- 해결책
- 솔루션
- 일부
- 출처
- 지우면 좋을거같음 . SM
- 전문가
- 구체적인
- 지정
- 스택
- 시작 중
- Status
- 단계
- 단계
- 저장
- 저장
- 상점
- 흐름
- 스트리밍
- 스트림
- 구조
- 적당한
- 지원
- 지원
- 동조.
- 체계
- 시스템은
- 테이블
- 목표
- 작업
- 이 템플릿
- test
- 그
- XNUMXD덴탈의
- 소스
- 그들
- Bowman의
- 시간
- 시간에 민감한
- Title
- 에
- 화제
- 거래 내역
- 회전
- 유형
- 아래에
- 불필요한
- 업데이트
- 사용
- 사용자
- 가치
- 마케팅은:
- 버전
- 웹
- 웹 서비스
- 어느
- 의지
- 창
- 과
- 노동자
- 근로자
- 일하는
- 일
- 쓴
- 너의
- 제퍼 넷