4.2. 데이터베이스 업데이트 및 업데이트 이벤트 보기
이제 Debezium MySQL 커넥터가 인벤토리 데이터베이스에서 create 이벤트를 캡처한 방법을 보냈으므로 이제 레코드 중 하나를 변경하고 커넥터가 이를 캡처하는 방법을 확인할 수 있습니다.
이 절차를 완료하면 데이터베이스 커밋에서 변경된 사항에 대한 세부 정보와 변경 이벤트를 비교하여 다른 변경 사항과 관련하여 변경이 발생한 시기를 결정하는 방법을 알아봅니다.
절차
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번째 새 이벤트를 확인합니다.고객테이블의 레코드를 변경하면 Debezium MySQL 커넥터가 새 이벤트를 생성했습니다. 두 개의 새로운 JSON 문서, 즉 하나는 이벤트의 키 용이고 다른 하나는 새 이벤트의 값 이어야 합니다.다음은 업데이트 이벤트의 키 세부 정보(읽성을 위해 포맷됨)입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 키는 이전 이벤트의 키 와 동일합니다.
다음은 이 새로운 이벤트의 가치입니다.
스키마섹션에는 변경 사항이 없으므로페이로드섹션만 표시됩니다( 읽기 쉽도록 포맷됨).Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 1 1
- 이제
before필드에는 데이터베이스가 커밋되기 전에 값이 포함된 행 상태가 됩니다. - 2 2 2
after필드에는 이제 행의 업데이트된 상태가 되고first_name값은 이제Anne Marie입니다.- 3 3 3
소스필드 구조에는ts_sec및pos필드가 변경되었음을 제외하고 이전과 동일한 값이 많이 있습니다(다른 상황에서파일이변경될 수 있음).- 4 4 4
- 이제
op필드 값이u이므로 이 행이 업데이트로 인해 변경되었음을 나타냅니다. - 5 5 5
ts_ms필드는 Debezium이 이벤트를 처리할 때의 타임 스탬프를 보여줍니다.
페이로드섹션을 보면 업데이트 이벤트에 대한 몇 가지 중요한 사항을 확인할 수 있습니다.-
이전구조와이후구조를 비교하면 커밋으로 인해 영향을 받는 행에서 실제로 변경된 내용을 확인할 수 있습니다. -
소스구조를 검토하여 변경 사항의 MySQL 레코드에 대한 정보를 찾을 수 있습니다(추적 추적 기능 제공). -
이벤트의
페이로드섹션을 동일한 주제(또는 다른 주제)의 다른 이벤트와 비교하면 이벤트가 다른 이벤트와 동일한 MySQL 커밋 전, 이후 또는 일부인지 확인할 수 있습니다.