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 分库分表 --> 合库的同步,可以指定源表和目标表的对应关系
  •     在线数据变换:同步过程中,可支持对进行数据变换

 gravity 安装部署_第1张图片

Gravity是摩拜单车数据库团队自研的一套数据复制组件,目前已经稳定支撑了摩拜单车公司数百条同步通道,TPS 50000/s,
80线延迟小于50ms。使用go语言编写,具有如下特点:
1.多数据源(MySQL, MongoDB, TiDB, PostgreSQL)
2.支持异构(不同的库、表、字段之间同步),支持分库分表到合表的同步。
3.支持双活&多活,复制过程将流量打标,避免循环复制。
4.管理节点高可用,故障恢复不会丢失数据
5.支持filter plugin (语句过滤,类型过滤,column过滤等多维度的过滤)。
6.支持传输过程进行数据转换。
7. 一键全量+增量迁移数据。
8. 轻量级,稳定高效,容易部署。
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 上面。
 
该项目已经在GitHub 开源,欢迎大家交流使用 https://github.com/moiot/gravity


一、安装配置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/[email protected]

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/[email protected]: 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/[email protected]: 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/[email protected]: 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/[email protected]: 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。
 

你可能感兴趣的:(MYSQL主从,java,mysql,开发语言)