【向StoneDB迁移数据】数据迁移同步工具-Gravity
Gravity 介紹
GitHub:https://github.com/moiot/gravity Gravity 是由摩拜公司使用go語言開發的一款數據遷移工具(目前 GitHub 上更新不是很頻繁,但是還有開發者在 GitHub 上回答 issues),提供全量、增量數據同步,以及向消息隊列發布數據更新,支持 ECS、Docker、K8S 部署,推薦使用 K8S 部署。 DRC 的設計目標是:
- 支持多種數據源和目標的,可靈活定制的數據復制組件。
- 支持基于 Kubernetes 的 PaaS 平臺,簡化運維任務。
使用場景
大數據總線:發送 MySQL Binlog,MongoDB Oplog 的數據變更到 Kafka 供下游消費。
單向數據同步:MySQL --> MySQL 的全量、增量同步。
雙向數據同步:MySQL <--> MySQL 的雙向增量同步,同步過程中可以防止循環復制。
分庫分表到合庫的同步:MySQL 分庫分表 --> 合庫的同步,可以指定源表和目標表的對應關系。
在線數據變換:同步過程中,可支持對進行數據變換。
功能列表
數據源支持情況
數據源狀態 MySQL Binlog ? MySQL 全量 ? Mongo Oplog ? TiDB Binlog 開發中 PostgreSQL WAL 開發中 數據輸出支持情況
數據輸出狀態 Kafka ? MySQL/TiDB ? MongoDB 開發中 數據變換支持情況
數據變換狀態 數據過濾 ? 重命令列 ? 刪除列 ?
架構介紹請參考:https://github.com/moiot/gravity/blob/master/docs/2.0/00-arch.md.
使用限制
源端 僅支持 binlog-format=row。
配置文件示例詳解
# name 必填 名詞隨機 name = "mysql2mysqlDemo"# 內部用于保存位點、心跳等事項的庫名,默認為 _gravity,源端會自動生成 internal-db-name = "_gravity"# # Input 插件的定義,此處定義使用 mysql # [input] #同步的數據庫類型 type = "mysql" #同步任務類型。增量:stream,全量:batch,全量+增量:replication mode = "replication" [input.config.source] host = "192.168.30.183" username = "zz" password = "********" port = 3307# # Output 插件的定義,此處使用 mysql # [output] type = "mysql" [output.config.target] host = "192.168.30.101" username = "root" password = "********" port = 3306# 路由規則的定義 [[output.config.routes]] match-schema = "zg" match-table = "test_source_table" target-schema = "zg" target-table = "test_target_table部署方案
Docker 部署
docker run -d -p 8080:8080 -v ${PWD}/config.toml:/etc/gravity/config.toml --net=host --name=innodb2stone moiot/gravity:latestK8S 部署
wget https://codeload.github.com/moiot/gravity-operator/tar.gz/refs/tags/v0.3.12 -C gravity-operator-0.3.12.tar.gz tar -zxvf gravity-operator-0.3.12.tar.gzcd gravity-operator/charts/gravity-operator helm install --name gravity-operator ./隨后在k8s管理界面查看是否正常啟動,正常啟動后查看 admin web-server 端口,登錄上去創建同步任務,使用模板進行配置,配置參數和配置文件示例詳解相似。
ECS 部署
需要提前安裝好 go 環境,編譯的時候也比較麻煩,不推薦使用該方法。
git clone https://github.com/moiot/gravity.gitcd gravity && make bin/gravity -config mysql2mysql.toml配置同步任務監控
同步監控添加到 Prometheus,參考添加以下配置。
- job_name: "gravity_innodb2stone" static_configs: - targets: ["192.168.46.150:8080"] labels:instance: innodb2stoneGrafana 圖表展示模板請參考 https://github.com/moiot/gravity/tree/master/deploy/grafana。
總結
以上是生活随笔為你收集整理的【向StoneDB迁移数据】数据迁移同步工具-Gravity的全部內容,希望文章能夠幫你解決所遇到的問題。