4.2. 데이터베이스 업데이트 및 업데이트 이벤트 보기
이제 Debezium MySQL 커넥터가 인벤토리 데이터베이스에서 생성 이벤트를 캡처하는 방법을 확인했으므로 레코드 중 하나를 변경하고 커넥터가 캡처하는 방법을 확인할 수 있습니다.
이 절차를 완료하면 데이터베이스 커밋에서 변경된 사항에 대한 세부 정보와 변경 이벤트를 비교하여 변경 사항이 다른 변경 사항과 관련하여 발생한 시기를 결정하는 방법을 알아봅니다.
프로세스
MySQL 명령줄 클라이언트를 실행 중인 터미널에서 다음 문을 실행합니다.
mysql> UPDATE customers SET first_name='Anne Marie' WHERE id=1004; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE customers SET first_name='Anne Marie' WHERE id=1004; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 업데이트된
고객테이블 보기:Copy to Clipboard Copied! Toggle word wrap Toggle overflow kafka-console-consumer를 실행하는 터미널로 전환하여 새로운 5번째 이벤트를 확인합니다.customers테이블의 레코드를 변경하면 Debezium MySQL 커넥터가 새 이벤트를 생성했습니다. 두 개의 새 JSON 문서가 표시되어야 합니다. 하나는 이벤트의 키 용이고 하나는 새 이벤트의 값에 대한 것입니다.다음은 업데이트 이벤트의 키 세부 정보입니다(읽기 쉽도록 형식 지정).
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 키는 이전 이벤트의 키와 동일합니다.
다음은 새 이벤트의 값 입니다.
스키마섹션에 변경 사항이 없으므로payload섹션만 표시됩니다(읽기 쉽도록 형식 지정).Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 1 1
- 이제 이전 필드에 데이터베이스 커밋 전에 값이 있는 행 상태가 있습니다.
- 2 2 2
- 이제
after필드에 행의 업데이트된 상태가 있고first_name값은 이제Anne she입니다. - 3 3 3
소스필드 구조에는ts_sec및pos필드가 변경되었음을 제외하고 이전과 동일한 값이 많이 있습니다(다른 상황에서파일이변경될 수 있음).- 4 4 4
op필드 값은 이제u이며 업데이트로 인해 이 행이 변경되었음을 나타냅니다.- 5 5 5
ts_ms필드는 Debezium이 이 이벤트를 처리할 때의 타임스탬프를 표시합니다.
페이로드섹션을 보면 업데이트 이벤트에 대한 몇 가지 중요한 사항을 확인할 수 있습니다.-
구조
이전및이후의구조를 비교하면 커밋으로 인해 영향을 받는 행에서 실제로 변경된 내용을 확인할 수 있습니다. -
소스구조를 검토하면 변경 사항에 대한 MySQL의 레코드에 대한 정보를 찾을 수 있습니다(추적 기능 제공). -
이벤트의
payload섹션을 동일한 주제(또는 다른 주제)의 다른 이벤트와 비교하여 이벤트가 다른 이벤트와 동일한 MySQL 커밋 전, 이후 또는 일부인지 여부를 확인할 수 있습니다.