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

    文章

    7002

    浏览量

    88943
  • 数据同步
    +关注

    关注

    0

    文章

    17

    浏览量

    8163
收藏 人收藏

    评论

    相关推荐

    PW系列工控电脑复制机:效率与精度双重提升

    本文介绍了PW系列工控电脑复制机在现代企业数据管理中的关键作用。随着大数据和跨平台兼容性需求的增长,PW系列复制机以其高达18GB/分钟的传输速度和自动化侦测技术,提供了一个灵活、高效
    的头像 发表于 11-20 16:20 129次阅读
    PW系列工控电脑<b class='flag-5'>复制</b>机:效率与精度双重提升

    分布式服务高可用实现:复制

    作者:京东保险 王奕龙 1. 为什么需要复制 我们可以考虑如下问题: 当数据量、读取或写入负载已经超过了当前服务器的处理能力,如何实现负载均衡? 希望在单台服务器出现故障时仍能继续工作,这该如何实现
    的头像 发表于 10-29 11:27 621次阅读
    分布式服务高可用实现:<b class='flag-5'>复制</b>

    数据光端机的安装步骤

    数据光端机是一种用于传输数据信号的设备,它通过光纤将数据从一个地点传输到另一个地点。这种设备广泛应用于电信、网络、监控等领域。以下是安装数据
    的头像 发表于 10-28 10:05 220次阅读

    配置MySQL主从复制和读写分离

    配置MySQL主从复制和读写分离
    的头像 发表于 10-23 11:44 408次阅读
    配置MySQL主从<b class='flag-5'>复制</b>和读写分离

    逻辑组件包括哪些配件

    逻辑组件是计算机系统中用于处理数据和执行指令的硬件部分。它们是计算机的核心,负责执行程序、处理数据和控制其他硬件组件。逻辑组件的设计和实现对
    的头像 发表于 10-15 14:40 338次阅读

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些用 Python 实现文件复制的特殊方法。下面我们开始学习这九种不同的方法来实现 Python 复制文件操作。
    的头像 发表于 07-18 14:53 411次阅读

    PSoC Creator 4.4某些组件不可用,为什么?

    ),重新安装,结果还是没有。 看起来这些安装文件不包含最新的组件。 然而,即使我将设备设置为\"all\" 并关闭\"Show only newer\" 复选框
    发表于 05-23 06:54

    光伏组件指的是什么 光伏组件安装注意事项

    光伏组件,也称为太阳能电池板,是一种利用光伏效应将太阳光转换成电能的装置。
    的头像 发表于 05-21 17:37 2298次阅读

    HarmonyOS开发案例:【 switch、chart组件的使用】

    基于switch组件和chart组件,实现线形图、占比图、柱状图,并通过switch切换chart组件数据的动静态显示。
    的头像 发表于 04-25 20:58 597次阅读
    HarmonyOS开发案例:【 switch、chart<b class='flag-5'>组件</b>的使用】

    《深入理解FFmpeg阅读体验》ffmpeg安装

    书中讲了如何编译安装,我看了一下比较复杂,所以下载安装包进行安装,下载网址:Download FFmpeg 下载完后解压出来在bin目录下面有三个文件: 复制这个目录: C:\\\
    发表于 01-25 21:35

    软通动力天鹤数据复制服务系统V1.0获得华为技术认证书

    近日,软通动力自主研发的“天鹤数据复制服务系统V1.0”成功通过华为云GaussDB各项兼容性测试验证,正式获得华为云授予的HUAWEI COMPATIBLE技术认证证书。这标志着软通动力数据
    的头像 发表于 01-23 09:56 776次阅读
    软通动力天鹤<b class='flag-5'>数据</b><b class='flag-5'>复制</b>服务系统V1.0获得华为技术认证书

    鸿蒙开发OpenHarmony组件复用案例

    概述 在开发应用时,有些场景下的自定义组件具有相同的组件布局结构,仅有状态变量等承载数据的差异。这样的组件缓存起来,需要使用到该组件时直接复
    发表于 01-15 17:37

    射频电缆组件的使用方法和注意事项

    射频电缆组件的使用方法和注意事项  射频电缆组件是一类广泛应用于通信系统、无线电设备和其他射频设备中的重要电子组件。它们在传输高频信号时扮演着关键的角色,因此使用和安装时需要特别注意一
    的头像 发表于 01-05 15:08 653次阅读

    VISA共享组件怎么安装

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

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

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