From 6640f8fe870fcf9abb15f87fdf12703ba5435350 Mon Sep 17 00:00:00 2001 From: wangjie Date: Sun, 17 Jan 2021 22:53:43 +0800 Subject: [PATCH 1/5] Update README.md --- README.md | 75 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 53bcb2ff..78cea117 100644 --- a/README.md +++ b/README.md @@ -2,23 +2,21 @@ # 简介 -go-mysql-transfer是使用Go语言实现的MySQL数据库实时增量同步工具。能够实时监听MySQL二进制日志(binlog)的变动,将变更内容形成指定格式的消息,发送到接收端。在数据库和接收端之间形成一个高性能、低延迟的增量数据(Binlog)同步管道。 +go-mysql-transfer是一款MySQL数据库实时增量同步工具。 -# 特性 - -1、不依赖其它组件,一键部署 - -2、集成多种接收端,如:Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ,不需要再编写客户端,开箱即用 - -3、内置丰富的数据解析、消息生成规则;支持Lua脚本扩展,以处理更复杂的数据逻辑 +能够监听MySQL二进制日志(Binlog)的变动,将变更内容形成指定格式的消息,实时发送到接收端。从而在数据库和接收端之间形成一个高性能、低延迟的增量数据同步更新管道。 -4、集成Prometheus客户端,支持监控告警 - -5、支持高可用集群部署 - -6、数据同步失败重试 +# 特性 -7、支持全量数据初始化同步 +1、简单,不依赖其它组件,一键部署 +2、集成多种接收端,如:Redis、MongoDB、Elasticsearch、RocketMQ、Kafka、RabbitMQ、HTTP API等,无需编写客户端,开箱即用 +3、内置丰富的数据解析、消息生成规则、模板语法 +4、支持Lua脚本扩展,可处理复杂逻辑 +5、集成Prometheus客户端,支持监控告警 +6、集成Web Admin监控页面 +7、支持高可用集群部署 +8、数据同步失败重试 +9、支持全量数据初始化 # 原理 @@ -31,13 +29,48 @@ go-mysql-transfer是使用Go语言实现的MySQL数据库实时增量同步工 # 与同类工具比较 -| 特色 | Canal | mysql_stream | go-mysql-transfer | -| ---------- | ---------- | ------------ | ------------------------------------------------------------ | -| 开发语言 | Java | Python | Golang | -| HA | 支持 | 支持 | 支持 | -| 接收端 | 编码定制 | Kafka等 | Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ
后续支持更多 | -| 数据初始化 | 不支持 | 支持 | 支持 | -| 数据格式 | 编码定制 | json(固定) | 规则 (固定)
lua脚本 (定制) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
特色Canalmysql_streamgo-mysql-transfer
开发语言JavaPythonGolang
高可用支持支持支持
接收端编码定制Kafka等(MQ)Redis、MongoDB、Elasticsearch、RabbitMQ、Kafka、RocketMQ、HTTP API
后续支持更多
全量数据初始化不支持支持支持
数据格式编码定制Json(固定格式)Json(规则配置)
模板语法
Lua脚本
# 安装包 From bf9d9bcfab4af2d12ee24292e8a1f13e502050e3 Mon Sep 17 00:00:00 2001 From: wangjie Date: Sun, 17 Jan 2021 22:56:15 +0800 Subject: [PATCH 2/5] Update README.md --- README.md | 56 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 78cea117..f7b29fa2 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,21 @@ go-mysql-transfer是一款MySQL数据库实时增量同步工具。 # 特性 1、简单,不依赖其它组件,一键部署 + 2、集成多种接收端,如:Redis、MongoDB、Elasticsearch、RocketMQ、Kafka、RabbitMQ、HTTP API等,无需编写客户端,开箱即用 + 3、内置丰富的数据解析、消息生成规则、模板语法 + 4、支持Lua脚本扩展,可处理复杂逻辑 + 5、集成Prometheus客户端,支持监控告警 + 6、集成Web Admin监控页面 + 7、支持高可用集群部署 + 8、数据同步失败重试 + 9、支持全量数据初始化 @@ -114,21 +122,41 @@ server_id=1 # 配置 MySQL replaction 需要定义,不要和 go-mysql-transfer # 使用说明 -1、[go-mysql-transfer实现详解](https://www.jianshu.com/p/dce9160d298c?_blank) - -2、[同步到Redis操作说明](https://www.jianshu.com/p/c533659a1d83?_blank) - -3、[同步到MongoDB操作说明](https://www.jianshu.com/p/51124c9371f9?_blank) - -4、[同步到Elasticsearch操作说明](https://www.jianshu.com/p/5a9b6c4f318c?_blank) - -5、[同步到RocketMQ操作说明](https://www.jianshu.com/p/18bb121bbf63?_blank) - -6、[同步到Kafka操作说明](https://www.jianshu.com/p/aec8e4c28c06?_blank) - -7、[同步到RabbitMQ操作说明](https://www.jianshu.com/p/ba5f1d3c75f2?_blank) +* [高可用集群](高可用集群.md) +* [同步数据到Redis](同步数据到Redis.md) + * [Redis配置](redis配置.md) + * [基于规则同步](基于规则同步.md) + * [基于Lua脚本同步](基于Lua脚本同步.md) +* [同步数据到MongoDB](同步到MongoDB.md) + * [MongoDB配置](MongoDB配置.md) + * [基于规则同步](mongodb基于规则同步.md) + * [基于Lua脚本同步](mongodb基于Lua脚本同步.md) +* [同步数据到RocketMQ](同步数据到RocketMQ.md) + * [RocketMQ配置](RocketMQ配置.md) + * [基于规则同步](RocketMQ基于规则同步.md) + * [基于Lua脚本同步](RocketMQ基于Lua脚本同步.md) +* [同步数据到Kafka](同步数据到Kafka.md) + * [Kafka配置](Kafka配置.md) + * [基于规则同步](Kafka基于规则同步.md) + * [基于Lua脚本同步](Kafka基于Lua脚本同步.md) +* [同步数据到RabbitMQ](同步数据到RabbitMQ.md) + * [RabbitMQ配置](RabbitMQ配置.md) + * [基于规则同步](RabbitMQ基于规则同步.md) + * [基于Lua脚本同步](RabbitMQ基于Lua脚本同步.md) +* [同步数据到Elasticsearch](同步数据到Elasticsearch.md) + * [Elasticsearch配置](Elasticsearch配置.md) + * [基于规则同步](Elasticsearch基于规则同步.md) + * [基于Lua脚本同步](Elasticsearch基于Lua脚本同步.md) +* [全量数据导入](全量数据导入.md) +* [Lua脚本](Lua模块.md) + * [基础模块](基础模块.md) + * [Json模块](Json模块.md) + * [HttpClient模块](HttpClient模块.md) + * [DBClient模块](DBClient模块.md) +* [监控](监控.md) +* [性能测试](性能测试.md) +* [常见问题](常见问题.md) -8、[让go-mysql-transfer具备无尽的扩展能力(^_^)Lua脚本使用说明](https://www.jianshu.com/p/c4b0147d65a7?_blank) # 感谢 From 35d584d2681208a0d8a9055752898aed689225b0 Mon Sep 17 00:00:00 2001 From: wangjie Date: Sun, 17 Jan 2021 22:59:23 +0800 Subject: [PATCH 3/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f7b29fa2..89ab57bb 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ server_id=1 # 配置 MySQL replaction 需要定义,不要和 go-mysql-transfer # 使用说明 -* [高可用集群](高可用集群.md) +* 高可用集群 * [同步数据到Redis](同步数据到Redis.md) * [Redis配置](redis配置.md) * [基于规则同步](基于规则同步.md) From 4b290586212d1891ef9404b3fa786dd52356a3cd Mon Sep 17 00:00:00 2001 From: wangjie Date: Sun, 17 Jan 2021 23:06:20 +0800 Subject: [PATCH 4/5] Update README.md --- README.md | 75 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 89ab57bb..ce621af2 100644 --- a/README.md +++ b/README.md @@ -122,40 +122,40 @@ server_id=1 # 配置 MySQL replaction 需要定义,不要和 go-mysql-transfer # 使用说明 -* 高可用集群 -* [同步数据到Redis](同步数据到Redis.md) - * [Redis配置](redis配置.md) - * [基于规则同步](基于规则同步.md) - * [基于Lua脚本同步](基于Lua脚本同步.md) -* [同步数据到MongoDB](同步到MongoDB.md) - * [MongoDB配置](MongoDB配置.md) - * [基于规则同步](mongodb基于规则同步.md) - * [基于Lua脚本同步](mongodb基于Lua脚本同步.md) -* [同步数据到RocketMQ](同步数据到RocketMQ.md) - * [RocketMQ配置](RocketMQ配置.md) - * [基于规则同步](RocketMQ基于规则同步.md) - * [基于Lua脚本同步](RocketMQ基于Lua脚本同步.md) -* [同步数据到Kafka](同步数据到Kafka.md) - * [Kafka配置](Kafka配置.md) - * [基于规则同步](Kafka基于规则同步.md) - * [基于Lua脚本同步](Kafka基于Lua脚本同步.md) -* [同步数据到RabbitMQ](同步数据到RabbitMQ.md) - * [RabbitMQ配置](RabbitMQ配置.md) - * [基于规则同步](RabbitMQ基于规则同步.md) - * [基于Lua脚本同步](RabbitMQ基于Lua脚本同步.md) -* [同步数据到Elasticsearch](同步数据到Elasticsearch.md) - * [Elasticsearch配置](Elasticsearch配置.md) - * [基于规则同步](Elasticsearch基于规则同步.md) - * [基于Lua脚本同步](Elasticsearch基于Lua脚本同步.md) -* [全量数据导入](全量数据导入.md) -* [Lua脚本](Lua模块.md) - * [基础模块](基础模块.md) - * [Json模块](Json模块.md) - * [HttpClient模块](HttpClient模块.md) - * [DBClient模块](DBClient模块.md) -* [监控](监控.md) -* [性能测试](性能测试.md) -* [常见问题](常见问题.md) +* [高可用集群](https://www.kancloud.cn/wj596/go-mysql-transfer/2116627) +* [同步数据到Redis](https://www.kancloud.cn/wj596/go-mysql-transfer/2064427) + * [Redis配置](https://www.kancloud.cn/wj596/go-mysql-transfer/2111996) + * [基于规则同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2111997) + * [基于Lua脚本同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2111998) +* [同步数据到MongoDB](https://www.kancloud.cn/wj596/go-mysql-transfer/2064428) + * [MongoDB配置](https://www.kancloud.cn/wj596/go-mysql-transfer/2111999) + * [基于规则同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112000) + * [基于Lua脚本同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112001) +* [同步数据到RocketMQ](https://www.kancloud.cn/wj596/go-mysql-transfer/2064429) + * [RocketMQ配置](https://www.kancloud.cn/wj596/go-mysql-transfer/2112002) + * [基于规则同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112003) + * [基于Lua脚本同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112004) +* [同步数据到Kafka](https://www.kancloud.cn/wj596/go-mysql-transfer/2064430) + * [Kafka配置](https://www.kancloud.cn/wj596/go-mysql-transfer/2112005) + * [基于规则同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112006) + * [基于Lua脚本同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112007) +* [同步数据到RabbitMQ](https://www.kancloud.cn/wj596/go-mysql-transfer/2064431) + * [RabbitMQ配置](https://www.kancloud.cn/wj596/go-mysql-transfer/2112008) + * [基于规则同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112009) + * [基于Lua脚本同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112010) +* [同步数据到Elasticsearch](https://www.kancloud.cn/wj596/go-mysql-transfer/2064432) + * [Elasticsearch配置](https://www.kancloud.cn/wj596/go-mysql-transfer/2112011) + * [基于规则同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112012) + * [基于Lua脚本同步](https://www.kancloud.cn/wj596/go-mysql-transfer/2112013) +* [全量数据导入](https://www.kancloud.cn/wj596/go-mysql-transfer/2116628) +* [Lua脚本](https://www.kancloud.cn/wj596/go-mysql-transfer/2064433) + * [基础模块](https://www.kancloud.cn/wj596/go-mysql-transfer/2112014) + * [Json模块](https://www.kancloud.cn/wj596/go-mysql-transfer/2112015) + * [HttpClient模块](https://www.kancloud.cn/wj596/go-mysql-transfer/2112016) + * [DBClient模块](https://www.kancloud.cn/wj596/go-mysql-transfer/2112017) +* [监控](https://www.kancloud.cn/wj596/go-mysql-transfer/2064434) +* [性能测试](https://www.kancloud.cn/wj596/go-mysql-transfer/2116629) +* [常见问题](https://www.kancloud.cn/wj596/go-mysql-transfer/2064435) # 感谢 @@ -188,3 +188,10 @@ server_id=1 # 配置 MySQL replaction 需要定义,不要和 go-mysql-transfer * redis接收端增加*Sorted* Set数据类型支持 * 修复了近来反馈的bug +**v1.0.3 release** + +* 添加了Web Admin监控界面 +* 改进了全量数据同步的速度 +* 重构了失败重试机制 +* 功能优化,如:针对MongoDB添加UPSERT操作、针对消息队列添加了update原始数据保留,等等 + From cc8ae508275fb6c0f9037875bdd8b579ce4a9023 Mon Sep 17 00:00:00 2001 From: wangjie Date: Sun, 17 Jan 2021 23:09:06 +0800 Subject: [PATCH 5/5] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ce621af2..519e67d8 100644 --- a/README.md +++ b/README.md @@ -92,9 +92,9 @@ go-mysql-transfer是一款MySQL数据库实时增量同步工具。 2、设置' GO111MODULE=on ' -3、拉取源码 ‘ go get -d github.com/wj596/go-mysql-transfer’ +3、拉取源码 ' git clone https://github.com/wj596/go-mysql-transfer.git ' -3、进入目录,执行 ‘ go build ’ 编译 +4、进入目录,执行 ' go build '编译 # 全量数据初始化