Gravity是摩拜单车数据库团队自研的一套数据复制组件,目前已经稳定支撑了摩拜单车公司数百条同步通道,TPS 50000/s,
80线延迟小于50ms。使用go语言编写,具有如下特点:
1.多数据源(MySQL, MongoDB, TiDB, PostgreSQL)
2.支持异构(不同的库、表、字段之间同步),支持分库分表到合表的同步。
3.支持双活&多活,复制过程将流量打标,避免循环复制。
4.管理节点高可用,故障恢复不会丢失数据
5.支持filter plugin (语句过滤,类型过滤,column过滤等多维度的过滤)。
6.支持传输过程进行数据转换。
7. 一键全量+增量迁移数据。
8. 轻量级,稳定高效,容易部署。
9.支持基于Kubernetes 的PaaS 平台,简化运维任务。
使用场景:
1.大数据总线:发送MySQL Binlog,Mongo Oplog,TiDB Binlog 的增量数据到 Kafka供下游消费。
2.单向数据同步:MySQL → MySQL&TiDB 的全量、增量同步。
3.双向数据同步:MySQL ↔ MySQL 的双向增量同步,同步过程中可以防止循环复制。
4.分库分表到合库的同步:MySQL 分库分表--> 合库的同步,可以指定源表和目标表的对应关系。
5.数据清洗: 同步过程中,可通过filter plugin 将数据自定义转换。
6.数据归档: MySQL→ 归档库 ,同步链路中过滤掉delete 语句。
Gravity 的设计初衷是要将多种数据源联合到一起,互相打通,让业务设计上更灵活,数据复制、数据转换变的更容易,
能够帮助大家更容易的将业务平滑迁移到TiDB 上面。
该项目已经在GitHub 开源,欢迎大家交流使用 https://github.com/moiot/gravity