gravity 安装部署

gravity是由膜拜公司自主研发的不同数据库间数据同步工具。

官方介绍:https://github.com/moiot/gravity/blob/master/README-cn.md

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

DRC 的设计目标是:

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

使用场景

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

 

一、安装配置golang

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

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

下载文件:

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

解压文件:

# tar -xzvf go1.12.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

 

二、安装配置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=

 

##查看帮助信息:

# ./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://www.cnblogs.com/shockerli/p/go-get-golang-org-x-solution.html

利用gravity实验MySQL->MySQL和MySQL->TiDB数据同步:https://blog.csdn.net/LiuHuan_study/article/details/97394878

感谢:

https://blog.csdn.net/vkingnew/article/details/87932903

https://blog.csdn.net/vkingnew/article/details/88118688

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值