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

    文章

    6512

    浏览量

    87609
  • 数据同步
    +关注

    关注

    0

    文章

    15

    浏览量

    8131
收藏 人收藏

    评论

    相关推荐

    VISA共享组件怎么安装

    用户更好地管理和控制不同设备间的通信。本文将详细介绍VISA共享组件安装步骤,并提供安装过程中需要特别注意的事项。 第一部分:准备工作 确认系统要求:在安装VISA共享
    的头像 发表于 01-04 14:33 494次阅读

    ad复制元件怎么保持编号不变

    复制AD(AutoCAD)元件时,如果要保持编号不变,可以按照以下步骤进行操作: 创建一个元件库:首先,你需要创建一个元件库,将你要复制的原始元件添加到库中。你可以使用AD软件的“设计中心”或“内容
    的头像 发表于 12-27 17:07 2696次阅读

    Quest:将数据复制到云端时需要考虑的问题有哪些

    灾难恢复和数据弹性:云数据复制在地理上分散的数据中心提供冗余和数据备份。
    的头像 发表于 11-21 17:01 189次阅读

    mysql主从复制数据不一致怎么办

    MySQL主从复制是一种常用的数据复制技术,用于实现数据的实时同步和分布式部署。然而,在实际应用中,主从复制过程中出现
    的头像 发表于 11-16 14:35 889次阅读

    mysql主从复制 混合类型的复制

    MySQL主从复制是一种常用的数据复制技术,可以实现数据从一个MySQL服务器(主服务器)复制到另一个MySQL服务器(从服务器)。在主从
    的头像 发表于 11-16 14:20 277次阅读

    mysql主从复制的原理

    MySQL主从复制是一种数据复制技术,它允许将一个MySQL数据库的更新操作自动复制到其他MySQL
    的头像 发表于 11-16 14:18 273次阅读

    mysql主从复制主要有几种模式

    MySQL主从复制是MySQL数据库中常用的一种数据复制方式,用于实现数据的备份、负载均衡、故障恢复等目的。主从
    的头像 发表于 11-16 14:15 743次阅读

    mysql主从复制三种模式

    MySQL主从复制是一种常见的数据同步方式,它可以实现将一个数据库的更改同步到其他多个数据库的功能。主从复制可以提高
    的头像 发表于 11-16 14:04 424次阅读

    软通动力天鹤数据复制服务,企业数据复制的稳健之选

    2022年数据库使用情况调查报告,数据迁移难度大是用户面临的最大挑战。 随着国产数据库迁移的加速到来,能够实现数据平滑无缝迁移的数据
    的头像 发表于 11-14 18:45 222次阅读

    如何实现不同MongoDB实例间的数据复制

    NineData提供了高效、安全、准确的MongoDB迁移方案。与传统的迁移工具相比,NineData实现了业务不停服的全量数据迁移和增量数据的采集复制能力,解决了停机时间长、可靠性低、数据
    的头像 发表于 09-13 14:44 278次阅读
    如何实现不同MongoDB实例间的<b class='flag-5'>数据</b><b class='flag-5'>复制</b>?

    远程数据复制解决方案评估

    电子发烧友网站提供《远程数据复制解决方案评估.pdf》资料免费下载
    发表于 08-30 17:09 0次下载
    远程<b class='flag-5'>数据</b><b class='flag-5'>复制</b>解决方案评估

    缩短数据复制时间提高生产效率

    电子发烧友网站提供《缩短数据复制时间提高生产效率.pdf》资料免费下载
    发表于 08-29 11:33 0次下载
    缩短<b class='flag-5'>数据</b><b class='flag-5'>复制</b>时间提高生产效率

    实现一个健康促进在数据复制功能

    电子发烧友网站提供《实现一个健康促进在数据复制功能.pdf》资料免费下载
    发表于 08-28 09:39 0次下载
    实现一个健康促进在<b class='flag-5'>数据</b><b class='flag-5'>复制</b>功能

    聊聊RocketMQ的主从复制

    RocketMQ 主从复制是 RocketMQ 高可用机制之一,数据可以从主节点复制到一个或多个从节点。
    的头像 发表于 07-04 09:42 367次阅读
    聊聊RocketMQ的主从<b class='flag-5'>复制</b>

    多层次内核级复制技术

    多层次内核级复制技术 1、自主研发,主机及数据库层技术 2、场景最全,各种系统数据库可用 3、适合远距离、窄带宽的复杂环境 4、安全性高,可大规模商业化部署 5、交付简单,可以光盘/eMail交付
    的头像 发表于 05-25 14:51 382次阅读
    多层次内核级<b class='flag-5'>复制</b>技术