0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Gravity數(shù)據(jù)復(fù)制組件的安裝

麥辣雞腿堡 ? 來(lái)源:CSDN博客 ? 作者:jerry-89 ? 2023-01-22 15:48 ? 次閱讀

Gravity 是一款數(shù)據(jù)復(fù)制組件,提供全量、增量數(shù)據(jù)同步,以及向消息隊(duì)列發(fā)布數(shù)據(jù)更新。

DRC 的設(shè)計(jì)目標(biāo)是:

支持多種數(shù)據(jù)源和目標(biāo)的,可靈活定制的數(shù)據(jù)復(fù)制組件
支持基于 Kubernetes 的 PaaS 平臺(tái),簡(jiǎn)化運(yùn)維任務(wù)

使用場(chǎng)景

大數(shù)據(jù)總線:發(fā)送 MySQL Binlog,Mongo Oplog 的數(shù)據(jù)變更到 kafka 供下游消費(fèi)
單向數(shù)據(jù)同步:MySQL --> MySQL 的全量、增量同步
雙向數(shù)據(jù)同步:MySQL <--> MySQL 的雙向增量同步,同步過(guò)程中可以防止循環(huán)復(fù)制
分庫(kù)分表到合庫(kù)的同步:MySQL 分庫(kù)分表 --> 合庫(kù)的同步,可以指定源表和目標(biāo)表的對(duì)應(yīng)關(guān)系
在線數(shù)據(jù)變換:同步過(guò)程中,可支持對(duì)進(jìn)行數(shù)據(jù)變換

image.png

Gravity是摩拜單車(chē)數(shù)據(jù)庫(kù)團(tuán)隊(duì)自研的一套數(shù)據(jù)復(fù)制組件,目前已經(jīng)穩(wěn)定支撐了摩拜單車(chē)公司數(shù)百條同步通道,TPS 50000/s,

80線延遲小于50ms。使用go語(yǔ)言編寫(xiě),具有如下特點(diǎn):

1.多數(shù)據(jù)源(MySQL, MongoDB, TiDB, PostgreSQL)

2.支持異構(gòu)(不同的庫(kù)、表、字段之間同步),支持分庫(kù)分表到合表的同步。

3.支持雙活&多活,復(fù)制過(guò)程將流量打標(biāo),避免循環(huán)復(fù)制。

4.管理節(jié)點(diǎn)高可用,故障恢復(fù)不會(huì)丟失數(shù)據(jù)

5.支持filter plugin (語(yǔ)句過(guò)濾,類(lèi)型過(guò)濾,column過(guò)濾等多維度的過(guò)濾)。

6.支持傳輸過(guò)程進(jìn)行數(shù)據(jù)轉(zhuǎn)換。

  1. 一鍵全量+增量遷移數(shù)據(jù)。
  2. 輕量級(jí),穩(wěn)定高效,容易部署。

9.支持基于Kubernetes 的PaaS 平臺(tái),簡(jiǎn)化運(yùn)維任務(wù)。

使用場(chǎng)景:

1.大數(shù)據(jù)總線:發(fā)送MySQL Binlog,Mongo Oplog,TiDB Binlog 的增量數(shù)據(jù)到 Kafka供下游消費(fèi)。

2.單向數(shù)據(jù)同步:MySQL → MySQL&TiDB 的全量、增量同步。

3.雙向數(shù)據(jù)同步:MySQL ? MySQL 的雙向增量同步,同步過(guò)程中可以防止循環(huán)復(fù)制。

4.分庫(kù)分表到合庫(kù)的同步:MySQL 分庫(kù)分表--> 合庫(kù)的同步,可以指定源表和目標(biāo)表的對(duì)應(yīng)關(guān)系。

5.數(shù)據(jù)清洗: 同步過(guò)程中,可通過(guò)filter plugin 將數(shù)據(jù)自定義轉(zhuǎn)換。

6.數(shù)據(jù)歸檔: MySQL→ 歸檔庫(kù) ,同步鏈路中過(guò)濾掉delete 語(yǔ)句。

Gravity 的設(shè)計(jì)初衷是要將多種數(shù)據(jù)源聯(lián)合到一起,互相打通,讓業(yè)務(wù)設(shè)計(jì)上更靈活,數(shù)據(jù)復(fù)制、數(shù)據(jù)轉(zhuǎn)換變的更容易,

能夠幫助大家更容易的將業(yè)務(wù)平滑遷移到TiDB 上面。

一、安裝配置golang

golang 針對(duì)中國(guó)用戶(hù)有專(zhuān)門(mén)的網(wǎng)站:

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/

設(shè)置環(huán)境變量:

# vim /etc/profile

export PATH=$PATH:/usr/local/go/bin

# source  /etc/profile

版本驗(yàn)證:

# go version

go version go1.12 linux/amd64

2 命令

2.1 指定module的根目錄并生成go.mod文件

go mod init example.com/hello

2.2 下載并添加依賴(lài)到go.mod文件中

go build, go test

2.3 查看module下的所有依賴(lài)

go list -m all

2.4 更新穩(wěn)定版依賴(lài)

go get rsc.io/sampler

2.5 更新為指定版本依賴(lài)

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 清理無(wú)用的依賴(lài)

go mod tidy

2.7 將依賴(lài)復(fù)制到項(xiàng)目路徑的vendor文件夾中

go mod vendor

2.8 忽略cache里的包,只使用vendor目錄里的依賴(lài)進(jìn)行編譯

go build -mod=vendor

2.9 校驗(yàn)依賴(lài)并查看是否有修改

go mod verify

二、安裝配置gravity

1.前提條件:安裝部署好golang的環(huán)境變量:

2.下載gravity的代碼:

下載地址:https://github.com/moiot/gravity/releases

選擇需要的版本

# wget https://github.com/moiot/gravity/archive/v0.9.61.tar.gz

注釋?zhuān)?
由于還是老的模式組織目錄結(jié)構(gòu),需要把項(xiàng)目放在 ${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=

 注:解決方法:

換一個(gè)國(guó)內(nèi)能訪問(wèn)的代理地址:https://goproxy.cn

執(zhí)行命令:go env -w GOPROXY=https://goproxy.cn

重新執(zhí)行命令,完美通過(guò)

##查看幫助信息:

# ./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")

 

##版本查詢(xún):

# ./bin/gravity -V

Release Version (gravity): 0.0.1+git.

Git Commit Hash:

Git Branch:

UTC Build Time: 2019-07-26 02:58:06

三、問(wèn)題解決

#執(zhí)行make命令時(shí),由于一些依賴(lài)包需要翻墻才能下載到,所以go在這里自動(dòng)下載相應(yīng)的包或依賴(lài)包時(shí),會(huì)出現(xiàn)timeout問(wèn)題,無(wú)法下載或加載依賴(lài)包。。最終導(dǎo)致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)

解決方法:

設(shè)置以下環(huán)境變量:

export GOPROXY=https://goproxy.io

然后在執(zhí)行make命令。

 

原因:

設(shè)置了GOPROXY環(huán)境變量,下載源代碼時(shí)將會(huì)通過(guò)這個(gè)環(huán)境變量設(shè)置的代理地址,而不再是以前的直接從代碼庫(kù)下載。 https://goproxy.io是官方提供公用的代理服務(wù)。

通過(guò)設(shè)置該環(huán)境變量:export GOPROXY=https://goproxy.io 后即可正常下載墻外的源碼包了:

也可以通過(guò)置空這個(gè)環(huán)境變量來(lái)關(guān)閉,export GOPROXY=

需要Go version >= 1.11。

原文鏈接:https://blog.csdn.net/eagle89/article/details/128605003
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6760

    瀏覽量

    88619
  • 數(shù)據(jù)同步
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    8147
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    配置MySQL主從復(fù)制和讀寫(xiě)分離

    配置MySQL主從復(fù)制和讀寫(xiě)分離
    的頭像 發(fā)表于 10-23 11:44 ?72次閱讀
    配置MySQL主從<b class='flag-5'>復(fù)制</b>和讀寫(xiě)分離

    如何實(shí)現(xiàn)Python復(fù)制文件操作

    Python 中有許多“開(kāi)蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會(huì)看到一些用 Python 實(shí)現(xiàn)文件復(fù)制的特殊方法。下面我們開(kāi)始學(xué)習(xí)這九種不同的方法來(lái)實(shí)現(xiàn) Python 復(fù)制文件操作。
    的頭像 發(fā)表于 07-18 14:53 ?316次閱讀

    光伏組件指的是什么 光伏組件安裝注意事項(xiàng)

    光伏組件,也稱(chēng)為太陽(yáng)能電池板,是一種利用光伏效應(yīng)將太陽(yáng)光轉(zhuǎn)換成電能的裝置。
    的頭像 發(fā)表于 05-21 17:37 ?1760次閱讀

    軟通動(dòng)力天鶴數(shù)據(jù)復(fù)制服務(wù)系統(tǒng)V1.0獲得華為技術(shù)認(rèn)證書(shū)

    近日,軟通動(dòng)力自主研發(fā)的“天鶴數(shù)據(jù)復(fù)制服務(wù)系統(tǒng)V1.0”成功通過(guò)華為云GaussDB各項(xiàng)兼容性測(cè)試驗(yàn)證,正式獲得華為云授予的HUAWEI COMPATIBLE技術(shù)認(rèn)證證書(shū)。這標(biāo)志著軟通動(dòng)力數(shù)據(jù)
    的頭像 發(fā)表于 01-23 09:56 ?685次閱讀
    軟通動(dòng)力天鶴<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>復(fù)制</b>服務(wù)系統(tǒng)V1.0獲得華為技術(shù)認(rèn)證書(shū)

    鴻蒙開(kāi)發(fā)OpenHarmony組件復(fù)用案例

    概述 在開(kāi)發(fā)應(yīng)用時(shí),有些場(chǎng)景下的自定義組件具有相同的組件布局結(jié)構(gòu),僅有狀態(tài)變量等承載數(shù)據(jù)的差異。這樣的組件緩存起來(lái),需要使用到該組件時(shí)直接復(fù)
    發(fā)表于 01-15 17:37

    VISA共享組件怎么安裝

    用戶(hù)更好地管理和控制不同設(shè)備間的通信。本文將詳細(xì)介紹VISA共享組件安裝步驟,并提供安裝過(guò)程中需要特別注意的事項(xiàng)。 第一部分:準(zhǔn)備工作 確認(rèn)系統(tǒng)要求:在安裝VISA共享
    的頭像 發(fā)表于 01-04 14:33 ?1127次閱讀

    ad復(fù)制元件怎么保持編號(hào)不變

    復(fù)制AD(AutoCAD)元件時(shí),如果要保持編號(hào)不變,可以按照以下步驟進(jìn)行操作: 創(chuàng)建一個(gè)元件庫(kù):首先,你需要?jiǎng)?chuàng)建一個(gè)元件庫(kù),將你要復(fù)制的原始元件添加到庫(kù)中。你可以使用AD軟件的“設(shè)計(jì)中心”或“內(nèi)容
    的頭像 發(fā)表于 12-27 17:07 ?6298次閱讀

    Quest:將數(shù)據(jù)復(fù)制到云端時(shí)需要考慮的問(wèn)題有哪些

    災(zāi)難恢復(fù)和數(shù)據(jù)彈性:云數(shù)據(jù)復(fù)制在地理上分散的數(shù)據(jù)中心提供冗余和數(shù)據(jù)備份。
    的頭像 發(fā)表于 11-21 17:01 ?296次閱讀

    mysql主從復(fù)制數(shù)據(jù)不一致怎么辦

    MySQL主從復(fù)制是一種常用的數(shù)據(jù)復(fù)制技術(shù),用于實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步和分布式部署。然而,在實(shí)際應(yīng)用中,主從復(fù)制過(guò)程中出現(xiàn)
    的頭像 發(fā)表于 11-16 14:35 ?2069次閱讀

    mysql主從復(fù)制 混合類(lèi)型的復(fù)制

    MySQL主從復(fù)制是一種常用的數(shù)據(jù)復(fù)制技術(shù),可以實(shí)現(xiàn)數(shù)據(jù)從一個(gè)MySQL服務(wù)器(主服務(wù)器)復(fù)制到另一個(gè)MySQL服務(wù)器(從服務(wù)器)。在主從
    的頭像 發(fā)表于 11-16 14:20 ?499次閱讀

    mysql主從復(fù)制的原理

    MySQL主從復(fù)制是一種數(shù)據(jù)庫(kù)復(fù)制技術(shù),它允許將一個(gè)MySQL數(shù)據(jù)庫(kù)的更新操作自動(dòng)復(fù)制到其他MySQL數(shù)
    的頭像 發(fā)表于 11-16 14:18 ?432次閱讀

    mysql主從復(fù)制主要有幾種模式

    MySQL主從復(fù)制是MySQL數(shù)據(jù)庫(kù)中常用的一種數(shù)據(jù)復(fù)制方式,用于實(shí)現(xiàn)數(shù)據(jù)的備份、負(fù)載均衡、故障恢復(fù)等目的。主從
    的頭像 發(fā)表于 11-16 14:15 ?1094次閱讀

    mysql如何實(shí)現(xiàn)主從復(fù)制的具體流程

    主從復(fù)制是MySQL數(shù)據(jù)庫(kù)中常用的數(shù)據(jù)復(fù)制技術(shù)之一,它的主要目的是將一個(gè)數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)
    的頭像 發(fā)表于 11-16 14:10 ?667次閱讀

    mysql主從復(fù)制三種模式

    MySQL主從復(fù)制是一種常見(jiàn)的數(shù)據(jù)同步方式,它可以實(shí)現(xiàn)將一個(gè)數(shù)據(jù)庫(kù)的更改同步到其他多個(gè)數(shù)據(jù)庫(kù)的功能。主從復(fù)制可以提高
    的頭像 發(fā)表于 11-16 14:04 ?1347次閱讀

    軟通動(dòng)力天鶴數(shù)據(jù)復(fù)制服務(wù),企業(yè)數(shù)據(jù)復(fù)制的穩(wěn)健之選

    2022年數(shù)據(jù)庫(kù)使用情況調(diào)查報(bào)告,數(shù)據(jù)遷移難度大是用戶(hù)面臨的最大挑戰(zhàn)。 隨著國(guó)產(chǎn)數(shù)據(jù)庫(kù)遷移的加速到來(lái),能夠?qū)崿F(xiàn)數(shù)據(jù)平滑無(wú)縫遷移的數(shù)據(jù)
    的頭像 發(fā)表于 11-14 18:45 ?324次閱讀