finds.dev← search

// the find

zeromicro/cds

★ 980 · Go · MIT · updated Jun 2025

Data syncing in golang for ClickHouse.

CDS is a data synchronization tool that moves data from MySQL and MongoDB into ClickHouse clusters, handling both one-time bulk loads and ongoing incremental sync via Canal or Debezium/Kafka. It ships with a web UI for managing sync jobs and is built on go-zero. Aimed at teams already running ClickHouse who need a managed pipeline without building their own CDC glue.

Supports two CDC backends (Canal and Debezium) so you're not locked into one MySQL binlog approach. The ckgroup package handles ClickHouse cluster topology — sharding and replication — behind a single client interface, which is genuinely useful if you're running distributed ClickHouse. The docker-compose dev environment stands up the full stack (MySQL, Mongo, ClickHouse, Kafka, Canal) with one command, making local testing realistic. Type conversion is explicit and separated per source (mysqltypeconv.go, mongotypeconv.go), which makes debugging schema mismatches tractable.

Last meaningful activity was mid-2025 but this is a 2020-era project — the README still has Chinese-only documentation links and the web UI is a Vue 2 admin template (vue-element-admin) that hasn't been touched in years. There's no schema evolution support: if your MySQL table gains a column, you're on your own to reconcile it in ClickHouse. The 'full sync' job status page says to 'refresh the page' to check progress — no polling, no SSE, just manual refresh. The hardcoded admin credentials in the README (admin@email.com / 123456) suggest the auth model hasn't been a priority.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →