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

    文章

    7314

    浏览量

    93962
  • 数据同步
    +关注

    关注

    0

    文章

    17

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    安装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

    安装教程】LP20系列USB工业级连接器安装详解

    LP20-USB连接器LP20系列USB连接器是凌科发布的一款高防护等级快捷插拔的高速数据连接器新品,具备如下特点:①更小尺寸,适合有限空间安装;②IP68/IPX9K旗舰级防水;③USB2.0
    的头像 发表于 04-25 18:09 824次阅读
    【<b class='flag-5'>安装</b>教程】LP20系列USB工业级连接器<b class='flag-5'>安装</b>详解

    【峟思】土体沉降计安装:手把手教你正确埋设与连接组件

    在土木工程中,振弦式土体沉降计是监测土石坝、边坡、地基等沉降变形的“眼睛”。但想要它精准工作,安装步骤是关键!如果埋设不当或组件连接错误,可能导致数据偏差甚至设备损坏。南京峟思将一步步为大家解析振弦
    的头像 发表于 04-03 10:20 498次阅读
    【峟思】土体沉降计<b class='flag-5'>安装</b>:手把手教你正确埋设与连接<b class='flag-5'>组件</b>

    RF-Labs手工成型电缆组件

    考虑到了易于安装和拆卸的需求,方便用户进行维护和更换。 应用场景 军工行业:满足军事装备对高性能电缆组件的需求,确保通信和数据传输的稳定性和可靠性。 航天航空:适用于航天飞行器和卫星等空间应用,提供可靠
    发表于 03-14 09:23

    hyper-v复制,Hyper-V 复制的操作步骤

        在使用Hyper-V虚拟化技术时,数据安全和业务连续性至关重要。Hyper-V复制功能就像是给虚拟机数据上了一份“保险”,能在关键时刻发挥重要作用。    什么是Hyper-V复制
    的头像 发表于 02-10 10:29 807次阅读
    hyper-v<b class='flag-5'>复制</b>,Hyper-V <b class='flag-5'>复制</b>的操作步骤

    SQLite数据访问组件

    SQLite 数据访问组件 SQLite 数据访问组件 (LiteDAC) 是一个组件库 它提供从 Delphi 和 C++ Builder
    的头像 发表于 02-08 11:48 820次阅读
    SQLite<b class='flag-5'>数据</b>访问<b class='flag-5'>组件</b>

    InterBase和Firebird数据访问组件介绍

    InterBase 和 Firebird 数据访问组件 InterBase(和 Firebird)数据访问组件 (IBDAC) 是一个库 提供与 InterBase 和 Firebir
    的头像 发表于 01-23 11:50 920次阅读
    InterBase和Firebird<b class='flag-5'>数据</b>访问<b class='flag-5'>组件</b>介绍

    hyper v 复制,hyper v 复制如何操作

    在日常办公中,我们常常需要处理大量的文件和数据,这些重复性的工作不仅耗时耗力,还容易出现错误。而批量管理工具的出现,为我们提供了一种高效、便捷的解决方案,它能够批量处理文件和数据,极大地提高了
    的头像 发表于 01-22 16:01 1553次阅读
    hyper v <b class='flag-5'>复制</b>,hyper v <b class='flag-5'>复制</b>如何操作

    适用于Oracle的SSIS数据组件:提供快速导入及导出功能

    使用SSIS 数据组件,通过与关键数据库和云服务的 Oracle 数据集成来改进您的 ETL 流程,这些组件提供快捷和可靠的
    的头像 发表于 01-15 10:51 1441次阅读
    适用于Oracle的SSIS<b class='flag-5'>数据</b>流<b class='flag-5'>组件</b>:提供快速导入及导出功能

    Devart SSIS数据组件

    Devart SSIS 数据组件是功能强大的工具,旨在简化 SQL Server Integration Services (SSIS) 包内的 ETL 流程,使用户无需编写复杂的代码即可
    的头像 发表于 01-05 11:08 1872次阅读
    Devart SSIS<b class='flag-5'>数据</b>流<b class='flag-5'>组件</b>

    亚马逊云科技发布全新数据中心组件

    近日,亚马逊云科技宣布了一项重大创新,推出了一系列全新的数据中心组件。这些组件旨在满足新一代人工智能(AI)创新的需求,并帮助客户应对日益复杂且多变的应用场景。 亚马逊云科技通过对电源、冷却以及硬件
    的头像 发表于 12-24 15:05 810次阅读