Skip to content

Change data capture

Architecture

debezium-architecture

Prerequisites

1.Mysql

Enable MySQL binlog.

server-id=<server-id, or ignore this item>
log_bin=mysql-bin
binlog_format=row
binlog_row_image=full
expire_logs_days=10
2.MongoDB
3.Kafka

Source

register source:

PODNAME=`kubectl -n common get pod -l app=debezium-controller | awk 'NR>1{print $1}'`
kubectl -n common exec -it $PODNAME -- curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" http://debezium:8083/connectors/ -d @/controller/source-mysql-mariadb.storage.json

Sink

register sink:

PODNAME=`kubectl -n common get pod -l app=debezium-controller | awk 'NR>1{print $1}'`
kubectl -n common exec -it $PODNAME -- curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" http://debezium:8083/connectors/ -d @/controller/sink-mongodb-mariadb.storage.account-address.json

How can I operate registered connectors?
list all registered connectors:
  PODNAME=`kubectl -n common get pod -l app=debezium-controller | awk 'NR>1{print $1}'`
  kubectl -n common exec -it $PODNAME -- curl -X GET -H "Accept:application/json" -H "Content-Type:application/json" http://debezium:8083/connectors
delete particular connector:
  PODNAME=`kubectl -n common get pod -l app=debezium-controller | awk 'NR>1{print $1}'`
  kubectl -n common exec -it $PODNAME -- curl -X DELETE -H "Accept:application/json" -H "Content-Type:application/json" http://debezium:8083/connectors/<connector-name>

Reference

1.Enable mysql binlog
2.Debezium architecture