We're in the process of phasing out an old system and migrating onto a new one. The last time that we phased out an old system, we ran both systems in parallel and integrated data between both until everything was fully migrated out in our field. During that process, I was able to build an integration between our legacy system and our new system that leveraged SQL Server's Change Data Capture to track changes and integrate those over incrementally.

For this next migration, the legacy system that we will be phasing out is based on MySQL v5.1.69 instead of SQL Server. I am not familiar with MySQL and I was wondering if there are any technologies similar to CDC that can be leveraged on MySQL in our current version or a newer version that would be worth migrating towards?

  • Apache Nifi is your friend.... there is processor CapureChangeMySQL
    – Izzy Fayon
    Commented Jul 29, 2019 at 17:21

5 Answers 5


LinkedIn has open-sourced its CDC tool, Databus, which supports MySQL. You can read about how to support MySQL on the wiki of the project: Databus for MySQL and read the blog statement here: Open sourcing Databus: LinkedIn's low latency change data capture system

However, you should note that there may be some limitations:

The current implementation although fully functional should be considered a proof-of-concept. Its main goal is to demonstrate how to write a MySQL fetcher for Databus. The basic functionality of the fetcher has been tested but has not been deployed in our production environment. At LinkedIn, we run a slightly different implementation which relies on a custom-patched MySQL.

Another open-source CDC tool is FlexCDC (implemented in PHP) which was written as a part of the FlexViews project.

[...] FlexCDC which will aim to provide a flexible CDC layer for MySQL based on RBR logging, and Flexviews, which uses FlexCDC to collect the changes necessary to incrementally maintain materialized views.

From: Why are there no (other) change data capture utilities for MySQL 5.1?


Recently I had an academic project where I needed to use CDC with MySQL. There are a few tools available in the market. I was able to create a POC by using Maxwell CDC.

A unique feature of Maxwell is it can parse DDL statements as well. Here is link to the page of Maxwell http://maxwells-daemon.io

Here is complied list of all CDC's : https://github.com/wushujames/mysql-cdc-projects/wiki

  • Debezium captures DDLs and then some.
    – yuranos
    Commented Jan 22, 2021 at 16:44

I recommend you take a look at Debezium an open-source CDC platform which, amongst others, also supports MySQL.

You can use Debezium to stream changes into Apache Kafka, but by means of its embedded mode you can also use the Debezium connectors as a library in your Java applications and easily propagate data changes to other streaming APIs such as Kinesis etc.

Disclosure: I'm the Debezium project lead.


You could try brew something based on the Triggers (AFTER INSERT, DELETE, UPDATE). I would think it depends on the Target System. How did CDC work? Did it propagate all the data and structure to a MySQL Database?

You can use the Triggers to fill a kind of work queues, so that if an entry EntryARownrX from table A gets changed, you stuff that info (table A, row nr X, Update/Insert/Delete) in a Queue Table and then transform that change to your new System (with reading the actual value of data directly from A for Insert or Update).

  • Yeah, triggers are definitely an option. The nice thing about CDC is that it would automatically create and propagate tables based on inserts, updates and deletes without manually having to create the triggers.
    – njkroes
    Commented Apr 22, 2014 at 20:49

If you don't mind using a database proxy, then have a look at the CDC protocol for MariaDB MaxScale which is utilising the MariaDB MaxScale AVRO router to convert binlog events into AVRO files. The CDC protocol then makes the change data capture events available to registered clients. (MaxScale should be compatible with MySQL, or at least the older MySQL versions.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.