0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Gravity数据复制组件的安装

麦辣鸡腿堡 来源:CSDN博客 作者:jerry-89 2023-01-22 15:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Gravity 是一款数据复制组件,提供全量、增量数据同步,以及向消息队列发布数据更新。

DRC 的设计目标是:

支持多种数据源和目标的,可灵活定制的数据复制组件
支持基于 Kubernetes 的 PaaS 平台,简化运维任务

使用场景

大数据总线:发送 MySQL BinlogMongo Oplog 的数据变更到 kafka 供下游消费
单向数据同步:MySQL --> MySQL 的全量、增量同步
双向数据同步:MySQL <--> MySQL 的双向增量同步,同步过程中可以防止循环复制
分库分表到合库的同步:MySQL 分库分表 --> 合库的同步,可以指定源表和目标表的对应关系
在线数据变换:同步过程中,可支持对进行数据变换

image.png

Gravity是摩拜单车数据库团队自研的一套数据复制组件,目前已经稳定支撑了摩拜单车公司数百条同步通道,TPS 50000/s,

80线延迟小于50ms。使用go语言编写,具有如下特点:

1.多数据源(MySQL, MongoDB, TiDB, PostgreSQL)

2.支持异构(不同的库、表、字段之间同步),支持分库分表到合表的同步。

3.支持双活&多活,复制过程将流量打标,避免循环复制。

4.管理节点高可用,故障恢复不会丢失数据

5.支持filter plugin (语句过滤,类型过滤,column过滤等多维度的过滤)。

6.支持传输过程进行数据转换。

  1. 一键全量+增量迁移数据。
  2. 轻量级,稳定高效,容易部署。

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 上面。

一、安装配置golang

golang 针对中国用户有专门的网站:

https://golang.google.cn/dl/

下载文件:

# wget https://dl.google.com/go/go1.17.linux-amd64.tar.gz

解压文件:

# tar -xzvf go1.17.linux-amd64.tar.gz -C /usr/local/

设置环境变量:

# vim /etc/profile

export PATH=$PATH:/usr/local/go/bin

# source  /etc/profile

版本验证:

# go version

go version go1.12 linux/amd64

2 命令

2.1 指定module的根目录并生成go.mod文件

go mod init example.com/hello

2.2 下载并添加依赖到go.mod文件中

go build, go test

2.3 查看module下的所有依赖

go list -m all

2.4 更新稳定版依赖

go get rsc.io/sampler

2.5 更新为指定版本依赖

go list -m -versions rsc.io/sampler
 
rsc.io/sampler v1.0.0 v1.2.0 v1.2.1 v1.3.0 v1.3.1 v1.99.99
 
go get rsc.io/sampler@v1.3.1

2.6 清理无用的依赖

go mod tidy

2.7 将依赖复制到项目路径的vendor文件夹中

go mod vendor

2.8 忽略cache里的包,只使用vendor目录里的依赖进行编译

go build -mod=vendor

2.9 校验依赖并查看是否有修改

go mod verify

二、安装配置gravity

1.前提条件:安装部署好golang的环境变量:

2.下载gravity的代码:

下载地址:https://github.com/moiot/gravity/releases

选择需要的版本

# wget https://github.com/moiot/gravity/archive/v0.9.61.tar.gz

注释:

由于还是老的模式组织目录结构,需要把项目放在 ${GOPATH}/src/github.com/moiot/

 

3.由于目前的版本不支持go module功能需要解压到 指定的目录 go/src目录:

# mkdir -p /usr/local/go/src/github.com/moiot/

# tar -xzvf v0.9.25.tar.gz  -C /usr/local/go/src/github.com/moiot/

# mv gravity-0.9.25/ gravity

或者直接clone 源代码:

      # git clone https://github.com/moiot/gravity.git

#export GOPROXY=https://goproxy.io

# make

#export GOPROXY=

 注:解决方法:

换一个国内能访问的代理地址:https://goproxy.cn

执行命令:go env -w GOPROXY=https://goproxy.cn

重新执行命令,完美通过

##查看帮助信息:

# ./bin/gravity  --help -L warn

Usage of gravity:

  -L string

        log level: debug, info, warn, error, fatal (default 'info') (default "info")

  -V    print version and exit

  -config string

        path to config file

  -http-addr string

        http-addr (default ":8080")

  -log-file string

        log file path

  -log-format string

        log format (default "json")

 

##版本查询:

# ./bin/gravity -V

Release Version (gravity): 0.0.1+git.

Git Commit Hash:

Git Branch:

UTC Build Time: 2019-07-26 02:58:06

三、问题解决

#执行make命令时,由于一些依赖包需要翻墙才能下载到,所以go在这里自动下载相应的包或依赖包时,会出现timeout问题,无法下载或加载依赖包。。最终导致make失败

go: golang.org/x/net@v0.0.0-20190311183353-d8887717615a: unrecognized import path "golang.org/x/net" (https fetch: Get https://golang.org/x/net?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

go: google.golang.org/grpc@v1.19.0: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

go: golang.org/x/sys@v0.0.0-20180905080454-ebe1bf3edb33: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

go: finding github.com/pingcap/parser v0.0.0-20190118120648-5958b6fcdb2d

go: golang.org/x/crypto@v0.0.0-20180904163835-0709b304e793: unrecognized import path "golang.org/x/crypto" (https fetch: Get https://golang.org/x/crypto?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

解决方法:

设置以下环境变量:

export GOPROXY=https://goproxy.io

然后在执行make命令。

 

原因:

设置了GOPROXY环境变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。 https://goproxy.io是官方提供公用的代理服务。

通过设置该环境变量:export GOPROXY=https://goproxy.io 后即可正常下载墙外的源码包了:

也可以通过置空这个环境变量来关闭,export GOPROXY=

需要Go version >= 1.11。

原文链接:https://blog.csdn.net/eagle89/article/details/128605003
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7349

    浏览量

    95023
  • 数据同步
    +关注

    关注

    0

    文章

    18

    浏览量

    8374
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    自定义卡片编辑组件

    。 选中组件后,右上方出现两个图标,分别对应组件的删除和复制功能。 在画布拖拽组件后,会在结构区域生成结构信息树,可以在结构树上任意拖拽改变画布上的
    发表于 04-22 11:11

    NineData 2026年3月功能上新:支持飞书外部审批,增强慢查询分析与数据复制能力

    NineData智能数据管理平台2026年3月新功能发布,围绕数据库 DevOps、慢查询分析、数据归档清理与数据复制持续升级:新增飞书 L
    的头像 发表于 04-10 11:40 309次阅读
    NineData 2026年3月功能上新:支持飞书外部审批,增强慢查询分析与<b class='flag-5'>数据</b><b class='flag-5'>复制</b>能力

    RK3576 单板机系统使用手册:配置、升级与组件安装指南(三)

    本文为创龙科技RK3576 单板机系统使用指南,全面覆盖系统基础配置、升级流程与组件安装。详解内存存储分区、网络静态 IP 配置、OTA/U 盘升级操作,以及常用开发组件部署方法。创龙科技以实操为核心,提供标准化步骤与命令示例,
    的头像 发表于 04-07 11:40 148次阅读
    RK3576 单板机系统使用手册:配置、升级与<b class='flag-5'>组件</b><b class='flag-5'>安装</b>指南(三)

    RK3576 单板机系统使用手册:配置、升级与组件安装指南(二)

    本文为创龙科技RK3576 单板机系统使用指南,全面覆盖系统基础配置、升级流程与组件安装。详解内存存储分区、网络静态 IP 配置、OTA/U 盘升级操作,以及常用开发组件部署方法。创龙科技以实操为核心,提供标准化步骤与命令示例,
    的头像 发表于 04-03 11:39 672次阅读
    RK3576 单板机系统使用手册:配置、升级与<b class='flag-5'>组件</b><b class='flag-5'>安装</b>指南(二)

    RK3576 单板机系统使用手册:配置、升级与组件安装指南(一)

    本文为创龙科技RK3576 单板机系统使用指南,全面覆盖系统基础配置、升级流程与组件安装。详解内存存储分区、网络静态 IP 配置、OTA/U 盘升级操作,以及常用开发组件部署方法。创龙科技以实操为核心,提供标准化步骤与命令示例,
    的头像 发表于 04-02 10:46 206次阅读
    RK3576 单板机系统使用手册:配置、升级与<b class='flag-5'>组件</b><b class='flag-5'>安装</b>指南(一)

    NineData 新增支持 MySQL 到 openGauss PostgreSQL 数据复制链路

    推进。NineData 通过结构复制、全量复制、增量复制数据对比以及监控告警,把原本依赖人工兜底的迁移工作,变成了一条可执行、可观测、可验证的完整链路。
    的头像 发表于 03-19 11:44 202次阅读
    NineData 新增支持 MySQL 到 openGauss PostgreSQL <b class='flag-5'>数据</b><b class='flag-5'>复制</b>链路

    可以通过将系统映像数据从 sdcard 复制到 emmc 来从 emmc 启动吗?

    我们可以通过将系统映像数据从 sdcard 复制到 emmc 来从 emmc 启动吗?
    发表于 03-17 07:37

    KeepAlive:组件缓存实现深度解析

    。理解它的实现原理,将帮助我们更好地处理需要保持状态的组件。 前言:为什么需要组件缓存? 在构建大型单页应用时,我们经常会遇到这样的场景: 用户频繁切换标签页,每次切换回来表单数据却丢失了。 一个复杂
    发表于 03-05 19:17

    晶科能源飞虎组件与N型BC双面组件的发电性能差异

    在全球光伏产业向 N 型高效组件加速迭代的背景下,车棚作为分布式光伏的核心应用场景之一,其低安装倾角、地面反射波动大、环境温度变化频繁的特点,对组件的综合性能提出了更高要求。
    的头像 发表于 12-17 14:42 1221次阅读
    晶科能源飞虎<b class='flag-5'>组件</b>与N型BC双面<b class='flag-5'>组件</b>的发电性能差异

    上传自己的组件到ESP-IDF组件注册表

    组件规范对齐 + 元数据配置 + 发布工具使用,我帮你梳理成「保姆级步骤」,跟着做基本能搞定: 一、前置准备 1. 环境要求 安装最新版 ESP-IDF(建议 v5.0+,老版本工具链可能不兼容
    发表于 12-07 10:38

    无法定位和自定义组件怎么解决?

    安装EZ-PD™ SDK3.6 后, PSoC™ Creator 抱怨未知组件。 其中一个例子是 然后,我打开组件更新工具,发现编译器找不到特定版本的组件,见下图。 请提供帮助,以
    发表于 11-11 06:04

    在Ubuntu上安装iverilog 12.0方法

    安装步骤如下: 1、打开终端并更新软件包列表: 复制代码:sudo apt update 2、下载安装编译iverilog 12.0需要的依赖项: 复制代码:sudo apt in
    发表于 10-24 12:24

    如何监听组件再次显示的事件?

    能是预览器的问题……不过这个方案终究还是不可取的,因为你还要考虑到,子组件里不光是动画,还会有数据加载页面渲染等等一堆事情,你不可能每次切换过来都把这些事情执行一遍的。 最后我在文档里发现了这么一个东西
    发表于 06-30 18:02

    应用中的“复制功能”如何实现##HarmonyOS应用开发##

    ); hm.toast(\"已复制到剪贴板\"); } 代码虽然很简单,但是以下几个点是需要注意和了解的: 剪贴板服务是包括 访问剪贴板 和 向剪贴板里写入数据这两个主要部分的,其中
    发表于 06-30 17:27

    UIAbility组件与UI的数据同步介绍

    UIAbility组件与UI的数据同步 基于当前的应用模型,可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行
    发表于 05-16 06:10