项目简介
dts(data transfer service)是自主研发的数据传输系统,能够以增量或全量 + 增量的方式,将某个数据源的数据同步到下游的其它数据源。目前支持 MySQL 到 MySQL 以及 MySQL 到 Kafka 的数据同步,可用于 TP 和 AP 两种场景,后续会支持更多数据源。
项目的主要特性和功能
基础功能
- 通用功能:支持 SQL 语句指定数据抽取过滤器,支持数字型字段与 UTF - 8 编码字符串字段,支持 gh - ost 在线 DDL、普通在线 DDL,一个任务可涵盖多个 MySQL 库和数据表。
- OLTP:实现 MySQL 到 MySQL 数据实时增量同步、全量 + 增量同步,支持 MySQL 分片平滑扩容(需配合 dbproxy)以及基于 GTID 的双向数据同步。
- OLAP:支持 MySQL 到 Kafka 的增量数据同步,可指定 Kafka Topic、分片方式,还能指定写入 Kafka 时需过滤的 Columns。
高级功能
- 集群高可用:http 服务无状态横向扩容,worker 服务可在线迁移任务。
- 任务分配负载均衡:根据每个进程的任务数(后续支持服务器资源)分配任务。
- 数据断点续传:每传输一定量的 binlog events 记录当前 GTID,后续在此基础上继续传输。
- 服务 graceful shutdown:先停止抽取线程,再停止回放线程,完成任务状态记录后关闭服务。
安装使用步骤
安装依赖
Go 版本需 >= 1.13,使用 go mod 进行依赖管理。
构建项目
在项目根目录下执行 make
命令,构建输出文件为 bin/dts
。
启动依赖服务
- 启动 etcd。
- 启动 MySQL 用于保存 dts 的元数据。
启动 dts 服务
执行命令 bin/dts -config etc/replicator.ini
启动 dts 服务。
配置说明
- DTS 配置:修改
etc/replicator.ini
文件,可参考示例并修改依赖地址。 - MySQL 配置(数据源):修改
/etc/my.cnf
文件,配置如下: ```yaml [mysqld] gtid_mode=on enforce_gtid_consistency=on
log_bin=ON binlog_format=row log-slave-updates=1 ```
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】