finds.dev← search

// the find

moiot/gravity

★ 922 · Go · Apache-2.0 · updated Oct 2023

A Data Replication Center

Gravity is a MySQL/MongoDB CDC and batch replication tool written in Go, built to move data between databases and Kafka. It handles both streaming (binlog/oplog) and full-table scans, with support for bidirectional MySQL replication and shard merging. The target audience is platform teams running MySQL-heavy stacks who need something more configurable than Debezium but less opaque than a managed ETL service.

The bidirectional MySQL replication with conflict detection is genuinely useful and not common in open-source CDC tools. The two-stage input design (batch scan followed by streaming) handles the cold-start problem cleanly — you get a consistent snapshot before binlog tailing begins. The filter/mutation pipeline (column renames, drops, custom gRPC sidecar filters) gives you data transformation without a separate stream processor. Test coverage is solid for a project this size: unit tests throughout, integration tests for the main replication paths.

The project is effectively dead — last commit October 2023, Travis CI still in the README, go.mod likely pinned to old deps. PostgreSQL WAL and TiDB Binlog inputs are marked 'Doing' and were never finished. The Elasticsearch output is still 'Beta'. You'd be adopting something with a frozen feature set and no maintainers to file bugs against. The configuration is TOML with a v2/v3 split that isn't cleanly documented, and the schema migration path between config versions is unclear from the docs.

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 →