gravity 安装部署

news2024/11/19 0:47:45

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是摩拜单车数据库团队自研的一套数据复制组件,目前已经稳定支撑了摩拜单车公司数百条同步通道,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/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。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有电脑就可以干的工作有哪些?试试这些项目

现在几乎人人都有手机&#xff0c;吃饭时候看&#xff0c;睡觉的时候看&#xff0c;上个厕所也在看&#xff0c;有次坐地铁&#xff0c;发现很多上学的初中生、小学生都拿着手机&#xff0c;手机档次还挺高&#xff0c;都是最新的苹果、华为款的手机。反之再看看使用电脑的人又…

Linux——信号知识归纳(上)

一.信号概念&#xff08;一&#xff09;.大致认识信号是操作系统控制进程的一种方式&#xff0c;比如ctrl C、栈溢出程序崩溃、kill -9命令等底层都是操作系统发送信号给进程执行特定操作。因此&#xff0c;所有信号就底层而言都是操作系统发出的。同时&#xff0c;进程接收到信…

Java设计模式中桥接模式是什么/桥接模式有什么用,怎么运用桥接模式

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 5.5 桥接模式 5.5.1 定义 将抽象与实现分离&#xff0c;使他们可以独立变化&#xff0c;即用组合关系来代替继承关系实现&#xff0c;从而降低抽象与实现两个可变…

相参雷达(CSDN_0004_20220909)

文章编号&#xff1a;CSDN_0004_20220909 雷达信号处理中的一个基本操作是对样本进行积累&#xff0c;以提高SNR。积累的方式包括相参积累和非相参积累。相参积累是对复数信号&#xff08;既包括幅度又包括相位&#xff09;相加积累&#xff1b;非相参积累是对信号的幅度&#…

【时间复杂度与空间复杂度】衡量算法的标准,这篇文章让大家更深刻的理解时间复杂度和空间复杂度

前言&#xff1a; 大家好&#xff0c;我是良辰丫&#xff0c;今天和大家一起讨论一下时间复杂度与空间复杂度&#xff0c;往往来说&#xff0c;这两者是衡量算法好坏的标准&#xff0c;举个简单的例子&#xff0c;你想吃核桃了&#xff0c;用牙能弄开&#xff0c;用夹子也能弄开…

SAP灵活工作流场景配置及Demo测试

首先确保对应流程模板处于激活状态,并且事件已经激活 1. 在Fiori app 管理工作流中配置流程场景 地址&#xff1a;/sap/bc/ui2/flp?sap-client100&sap-languageZH#Workflow-showList 选择创建的灵活工作流模板&#xff0c;点击添加&#xff0c;开始配置场景 维护基本属性及…

JavaSE学习day2_02, IDEA的使用(重点)

4. idea 4.1 什么是idea&#xff1f; 是Java的集成开发工具&#xff0c;该工具把编写代码&#xff0c;编译&#xff0c;运行&#xff0c;调试等都集中在一起了。目前绝大多数企业编程用的执行环境. 特点&#xff1a; 自动保存、自动编译。 我们在使用的时候主要注重于两步…

SpringCloud微服务!!

目录 1.系统架构的演变 2.微服务简介 1.什么是微服务&#xff1f; 2.实现微服务的技术方案有哪些&#xff1f; 3.什么是SpringCloud? 4.微服务技术点【重点】 4.1服务治理、服务注册、服务发现 4.2 Eureka注册中心 4.2.1 Eureka介绍 4.2.2 Eureka 使用入门 4.2.3 Eureka的…

13_1、Java的IO流之File类的使用

一、File类的理解1、File的对象代表着一个文件或者一个文件目录。2、File类在java.io包下。3、File类中涉及文件或文件目录相关的创建、删除、重命名、修改时间、文件大小等方法&#xff0c;并未涉及到对文件内部的内容的读取、写入等操作&#xff0c;如果需要对文件的内容进行…

2023年玩兔年小游戏《兔兔保卫萝卜战》赢新年祝福「钱兔无量」

PS&#xff1a;粉丝可以免费领源码&#xff0c;私信我或者评论666即可~~~~~~~~ 导读 | 世界杯虽已闭幕&#xff0c;但其带给我们的精彩&#xff0c;仿佛就在昨天&#xff0c;想一想&#xff0c;还是有一种爽劲&#xff0c;不知道大家是否也这样&#xff1f;转眼就到了2023年&a…

Java框架:Mybatis

文章目录一、Mybatis概述1.1概念1.2优点与缺点1.3MyBatis和Hibernate的区别1.4Mybatis的核心对象1.5Mybatis执行流程三、Mybatis的快速使用3.1开发环境3.2 创建一个maven项目3.3添加Maven依赖3.4MySQL创建user表3.5创建数据源database.properties文件3.6编写mybatis-config.xml…

H13-531云计算HCIE V2.0——1~400常错题和知识点总结

1~100 35、FusionStorage Block无法是被配置RAID的磁盘,一定要将RAID信息删除后, Fusionstrage block才能识别到这些磁盘? 错误 61、Ceilometer监控通过在计算节点部署Compute服务 84.&#xff08;多选&#xff09;在配置 FusionSphere OpenStack 时&#xff0c;可以用来实…

商务BD干多了,做一个无情的微信发消息机器人帮我发消息吧

1. 有没有那种做微信的伙伴&#xff0c;每天需要定点定时发消息&#xff1f; 2. 有没有那种做电商商务的朋友&#xff0c;每天需要发消息提醒达人商务们&#xff1f; 3. 有没有那种需要定时定点打卡&#xff0c;需要提醒自己要干啥的兄弟姐妹&#xff1f;** 那么有没有大冤种去…

如何获取电脑软件图标和app图标

如何获取电脑软件图标和app图标大家在写博客或者作图的时候经常会需要找到电脑软件图标或者app图标&#xff0c;如果从网上找有的图标并不清楚&#xff0c;今天给大家分享下&#xff0c;怎么快速的获取电脑软件图标和app图标&#xff0c;得到的图标也比较清楚。电脑软件图标获取…

【操作系统】操作系统的Buffer和Cache

文章目录1.Buffer和Cache的区别2.磁盘和文件写入操作案例3.磁盘和文件读取操作案例4.Cache和Buffer的命中案例1.Buffer和Cache的区别 &#xff08;1&#xff09;什么是Buffer Buffer指Linux内存的 Buffer cache&#xff08;缓冲区&#xff09;。Buffer为了让不同的速度的设备…

【迅为iMX6Q】开发板 Linux 5.15.71 SD卡 启动

开发环境 win10 64位VMware Workstation Pro 16ubuntu 22.04【迅为imx6q】开发板&#xff0c; 2G DDR linux-imx 下载 使用 NXP 官方提供的 linux-imx&#xff0c;代码地址为&#xff1a; https://github.com/nxp-imx/linux-imx 使用 git 下载 linux-imx&#xff0c; git cl…

Linux应用编程---6.无名管道

Linux应用编程—6.无名管道 6.1 pipe()函数使用详情 ​ 管道是进程之间进行通讯的一种方式。管道有两种&#xff0c;分别是&#xff1a;无名管道和有名管道。先看无名管道。管道创建函数是pipe()&#xff0c;在Linux终端输入man pipe。 图1 pipe()函数详情NAMEpipe, pipe2 - …

Mathorcup数学建模竞赛第六届-【妈妈杯】B题:小区车位分布的优化设计与评价(附一等奖获奖论文、C++和matlab代码)

赛题描述 随着现代社会经济的快速发展,房地产成为国家经济发展中重要的经济增长点之一。而小区内汽车停车位的分布对于小区居民的上下班出行影响很大。请建立数学模型,解决下列问题: 问题1:分析评判小区汽车停车位分布是否合理的几个关键指标,建立评判车位分布合理的数学…

mybatis官方文档之第一个mybatis程序实操

mysql数据库准备工作&#xff1a; 首先&#xff0c;我们需要在mysql数据库中&#xff0c;建立数据库和数据表&#xff1a; //创建数据库 create database my_batis; //创建表 create table students(id int not null,name varchar(30) default null,pwd varchar(30) default …

用移动激光扫描来估计树干直径的分割和树干校准法

Paper题目&#xff1a;Mobile Laser Scanning for Estimating Tree Stem Diameter Using Segmentation and Tree Spine Calibration Abstract 移动激光扫描 (MLS) 可以通过使用自动推导出树干中心位置和树干直径的算法来提高森林清查效率。在这项工作中&#xff0c;我们提出了…