gravity使用教程03

下面以本地 MySQL 实例的同步和数据订阅为例说明 gravity 使用方法。

MySQL 环境准备

参考 MySQL 环境准备 准备一下 MySQL 环境。

MySQL 源端和目标端创建需要同步的表

CREATE TABLE `test`.`test_source_table` (
  `id` int(11),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `test`.`test_target_table` (
  `id` int(11),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

编译(可选,可以直接用 docker)

首先,配置好 Go 语言环境 并编译

git clone https://github.com/moiot/gravity.git

cd gravity && make

Gravity 使用了 go mod,中国大陆地区用户建议设置 export GOPROXY=https://goproxy.io 或其他代理。
将代码克隆到 GOPATH 路径下的用户需要设置 export GO111MODULE=on

MySQL 到 MySQL 同步

创建如下配置文件 config.toml

# name 必填
name = "mysql2mysqlDemo"

# 内部用于保存位点、心跳等事项的库名,默认为 _gravity
internal-db-name = "_gravity"

#
# Input 插件的定义,此处定义使用 mysql
#
[input]
type = "mysql"
mode = "stream"
[input.config.source]
host = "127.0.0.1"
username = "root"
password = ""
port = 3306

#
# Output 插件的定义,此处使用 mysql
#
[output]
type = "mysql"
[output.config.target]
host = "127.0.0.1"
username = "root"
password = ""
port = 3306

# 路由规则的定义
[[output.config.routes]]
match-schema = "test"
match-table = "test_source_table"
target-schema = "test"
target-table = "test_target_table"

MySQL 到 Kafka

创建如下配置文件 config.toml

name = "mysql2kafkaDemo"

#
# Input 插件的定义,此处定义使用 mysql
#
[input]
type = "mysql"
mode = "stream"
[input.config.source]
host = "127.0.0.1"
username = "root"
password = ""
port = 3306

#
# Output 插件的定义,此处使用 mysql
#
[output]
type = "async-kafka"
[output.config.kafka-global-config]
broker-addrs = ["127.0.0.1:9092"]
mode = "async"

# kafka 路由的定义
[[output.config.routes]]
match-schema = "test"
match-table = "test_source_table"
dml-topic = "test"

启动 gravity

从编译完的程序

bin/gravity -config mysql2mysql.toml

从 docker

docker run -v ${PWD}/config.toml:/etc/gravity/config.toml -d --net=host moiot/gravity:latest

监控

Gravity 使用 PrometheusGrafana 实现监控功能。
在运行端口(默认8080)上提供了 Prometheus 标准的指标抓取路径/metrics
在源码路径deploy/grafana下提供了 Grafana dashboard 供导入。

原文地址:https://www.cnblogs.com/carry00/p/14095442.html