Change Data Capture in Mysql I'm trying to implement Change Data Capture in MySQL. I have seen that using Maxwell I can implement CDC but I'm confused where to start. Please help me with the detailed steps to implement it. And also tell me the prerequisites.
Firstly I want to introduce three tools for use CDC in MySQL.

They are about three popular CDC for MySQL/MariaDB.

Two of them are Free and one of them is commercial.

MariaDB Maxscale is commercial tools for Routing, Qeury Cache, Load balancing and also has CDC for use in MariaDB (I don't know is it work on MySQL or not)

Another Tools are Maxwell and Debezium. They are Free and Open source.

Debezium developed by RedHat Team and It has MySQL/Oracle/PostgreSQL and MongoDB Connector But its performance on the MariaDB database is not clear (Until now). Look at this link: https://issues.jboss.org/browse/DBZ-357

Usually CDC is used for Push changes data (producer) to Message Broker like Kafka and Pull from Another Tools such as Apache Solr orElastic and etc to use in other tasks.

for Maxwell, It has --producer switch To specify the place where the changes are made. You can set this to stdout (usually for test), Kafka and RabbitMQ 

For Prepare MySQL to use for Maxwell 


you need to Enable Binary Log and set to Row format.
Then Create a user which have grant SELECT, REPLICATION CLIENT and REPLICATION SLAVE
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on . to 'maxwell'@'%';
Clone maxwell from github https://github.com/zendesk/maxwell
Start Maxwell and your producer bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' --producer=stdout


You can config maxwell to Produce Specific Table or Database to specific Topic (kafka) or Channel (RabbitMQ).

You can start multiply Maxwell to Produce Multiply Tables to different Topic.

Pay attention Currently Maxwell doesn't have any Failover Solution and you should to handle this.

More Information:

http://maxwells-daemon.io/quickstart/

https://www.youtube.com/watch?v=eMCZAlGsNSA