What is this?
Canal is Alibaba's MySQL binlog incremental subscription and consumption component. It disguises itself as a MySQL slave, pulls binlog events from a MySQL master, and lets you consume the parsed changes for things like cache refresh, index building, or database synchronization.
Is this a library I embed, or a standalone server?
It runs as a standalone client-server system: a canal server process talks to MySQL as a fake slave, and separate client applications (in Java, C#, Go, PHP, Python, Rust, or Node.js) connect to it over a protobuf 3.0 protocol to consume the changes.
How do I get it running?
Follow the QuickStart guide (or the Docker QuickStart) to set up the canal server, point it at your MySQL master to start dumping binlog, and then write a client in your language of choice to consume the parsed events, or route them straight into Kafka/RocketMQ.
Do I need to configure MySQL replication first?
Yes — canal mimics the MySQL replication protocol, so your MySQL master must have binlog enabled and configured as if it had a slave, since canal sends a dump request just like a real slave would.
Which MySQL versions does it actually support?
It currently supports source-side MySQL versions 5.1.x, 5.5.x, 5.6.x, 5.7.x, and 8.0.x; other versions or heavily forked MySQL variants aren't guaranteed to work.
Who typically uses this, and why was it built?
It was built inside Alibaba originally to sync data between its Hangzhou and US data centers; it's aimed at teams needing database mirroring, real-time backup, search index maintenance, or cache invalidation driven by DB changes.
Does it run on Linux servers in production?
Yes, canal is a Java server process typically deployed on Linux, and it also ships an official Docker image for easier deployment.
Does canal have a web UI for management?
Yes, since version 1.1.4 canal includes a canal-admin project that provides a WebUI for dynamically managing configuration, tasks, and logs without touching files manually.
Can canal deliver changes directly into Kafka or RocketMQ?
Yes, canal natively supports pushing parsed binlog events straight into Kafka or RocketMQ as message delivery targets, removing the need for a custom relay client.
Does canal support Alibaba Cloud RDS instances?
Yes, it has native support for subscribing to binlogs from Aliyun RDS for MySQL, which also handles issues like automatic master/slave failover and offline OSS binlog parsing.
Is there built-in monitoring for canal?
Yes, canal exposes native Prometheus metrics support so you can monitor its performance and health out of the box.
What are similar projects?
debezium, emqx, airbyte, automq, walshadow, flink-learning, SpringBoot-Labs, electric
Which topics is it in?
change-data-capture, rocketmq, replication, etl, kafka, sync, prometheus, backup, mysql, distributed-systems, china, monitoring

