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 的雙向增量同步,同步過程中可以防止循環(huán)復(fù)制
分庫(kù)分表到合庫(kù)的同步:MySQL 分庫(kù)分表 --> 合庫(kù)的同步,可以指定源表和目標(biāo)表的對(duì)應(yīng)關(guān)系
在線數(shù)據(jù)變換:同步過程中,可支持對(duì)進(jìn)行數(shù)據(jù)變換
Gravity是摩拜單車數(shù)據(jù)庫(kù)團(tuán)隊(duì)自研的一套數(shù)據(jù)復(fù)制組件,目前已經(jīng)穩(wěn)定支撐了摩拜單車公司數(shù)百條同步通道,TPS 50000/s,
80線延遲小于50ms。使用go語(yǔ)言編寫,具有如下特點(diǎn):
1.多數(shù)據(jù)源(MySQL, MongoDB, TiDB, PostgreSQL)
2.支持異構(gòu)(不同的庫(kù)、表、字段之間同步),支持分庫(kù)分表到合表的同步。
3.支持雙活&多活,復(fù)制過程將流量打標(biāo),避免循環(huán)復(fù)制。
4.管理節(jié)點(diǎn)高可用,故障恢復(fù)不會(huì)丟失數(shù)據(jù)
5.支持filter plugin (語(yǔ)句過濾,類型過濾,column過濾等多維度的過濾)。
6.支持傳輸過程進(jìn)行數(shù)據(jù)轉(zhuǎn)換。
- 一鍵全量+增量遷移數(shù)據(jù)。
- 輕量級(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 的雙向增量同步,同步過程中可以防止循環(huán)復(fù)制。
4.分庫(kù)分表到合庫(kù)的同步:MySQL 分庫(kù)分表--> 合庫(kù)的同步,可以指定源表和目標(biāo)表的對(duì)應(yīng)關(guān)系。
5.數(shù)據(jù)清洗: 同步過程中,可通過filter plugin 將數(shù)據(jù)自定義轉(zhuǎn)換。
6.數(shù)據(jù)歸檔: MySQL→ 歸檔庫(kù) ,同步鏈路中過濾掉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ó)用戶有專門的網(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 下載并添加依賴到go.mod文件中
go build, go test
2.3 查看module下的所有依賴
go list -m all
2.4 更新穩(wěn)定版依賴
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 將依賴復(fù)制到項(xiàng)目路徑的vendor文件夾中
go mod vendor
2.8 忽略cache里的包,只使用vendor目錄里的依賴進(jìn)行編譯
go build -mod=vendor
2.9 校驗(yàn)依賴并查看是否有修改
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
注釋:
由于還是老的模式組織目錄結(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)能訪問的代理地址:https://goproxy.cn
執(zhí)行命令:go env -w GOPROXY=https://goproxy.cn
重新執(zhí)行命令,完美通過
##查看幫助信息:
# ./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
三、問題解決
#執(zhí)行make命令時(shí),由于一些依賴包需要翻墻才能下載到,所以go在這里自動(dòng)下載相應(yīng)的包或依賴包時(shí),會(huì)出現(xiàn)timeout問題,無法下載或加載依賴包。。最終導(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ì)通過這個(gè)環(huán)境變量設(shè)置的代理地址,而不再是以前的直接從代碼庫(kù)下載。 https://goproxy.io是官方提供公用的代理服務(wù)。
通過設(shè)置該環(huán)境變量:export GOPROXY=https://goproxy.io 后即可正常下載墻外的源碼包了:
也可以通過置空這個(gè)環(huán)境變量來關(guān)閉,export GOPROXY=
需要Go version >= 1.11。
原文鏈接:https://blog.csdn.net/eagle89/article/details/128605003
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7145瀏覽量
89584 -
數(shù)據(jù)同步
+關(guān)注
關(guān)注
0文章
17瀏覽量
8188
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
InterBase和Firebird數(shù)據(jù)訪問組件介紹
![InterBase和Firebird<b class='flag-5'>數(shù)據(jù)</b>訪問<b class='flag-5'>組件</b>介紹](https://file1.elecfans.com/web3/M00/07/03/wKgZO2eR2EuAbog3AAAcpcQhbhU048.png)
hyper v 復(fù)制,hyper v 復(fù)制如何操作
![hyper v <b class='flag-5'>復(fù)制</b>,hyper v <b class='flag-5'>復(fù)制</b>如何操作](https://file1.elecfans.com/web3/M00/06/E2/wKgZPGeQpAWAXHLFAARe0OcazbI987.png)
適用于Oracle的SSIS數(shù)據(jù)流組件:提供快速導(dǎo)入及導(dǎo)出功能
![適用于Oracle的SSIS<b class='flag-5'>數(shù)據(jù)</b>流<b class='flag-5'>組件</b>:提供快速導(dǎo)入及導(dǎo)出功能](https://file1.elecfans.com/web3/M00/06/10/wKgZO2eHIyOAWDiYAAArGEaDZDs798.png)
Devart SSIS數(shù)據(jù)流組件
![Devart SSIS<b class='flag-5'>數(shù)據(jù)</b>流<b class='flag-5'>組件</b>](https://file1.elecfans.com/web3/M00/04/E1/wKgZPGd5-CaABr-aAABNeh49qWQ078.png)
亞馬遜云科技發(fā)布全新數(shù)據(jù)中心組件
PW系列工控電腦復(fù)制機(jī):效率與精度雙重提升
![PW系列工控電腦<b class='flag-5'>復(fù)制</b>機(jī):效率與精度雙重提升](https://file1.elecfans.com/web2/M00/0C/E9/wKgaomc9m3aATv3iAASn0ef0iWg290.png)
分布式服務(wù)高可用實(shí)現(xiàn):復(fù)制
![分布式服務(wù)高可用實(shí)現(xiàn):<b class='flag-5'>復(fù)制</b>](https://file1.elecfans.com//web2/M00/0B/56/wKgaomcgVhmARo0zAABMR5JibOY332.png)
數(shù)據(jù)光端機(jī)的安裝步驟
邏輯組件包括哪些配件
射頻電纜組件測(cè)試使用方法和注意事項(xiàng)
如何實(shí)現(xiàn)Python復(fù)制文件操作
PSoC Creator 4.4某些組件不可用,為什么?
光伏組件指的是什么 光伏組件安裝注意事項(xiàng)
HarmonyOS開發(fā)案例:【 switch、chart組件的使用】
![HarmonyOS開發(fā)案例:【 switch、chart<b class='flag-5'>組件</b>的使用】](https://file1.elecfans.com/web2/M00/DA/C9/wKgaomYqUkCASTM3AC07e8OTJaw686.jpg)
評(píng)論