环境准备
主机名 | IP地址 | 部署服务 |
---|---|---|
study01 | 10.186.65.68 | DTLE、MySQL |
study02 | 10.186.65.71 | DTLE、MySQL |
study03 | 10.186.65.72 | DTLE、MySQL |
Ps:如果不适用容器进行部署,首先安装三台或以上MySQL实例,并开启binlog以及GTID
DTLE概述
dtle (Data-Transformation-le) 是上海爱可⽣信息技术股份有限公司 开发并开源的 CDC ⼯具. 其功能特点是:
-
多种数据传输模式
- ⽀持链路压缩
- ⽀持同构传输和异构传输
- ⽀持跨⽹络边际的传输
-
多种数据处理模式
- ⽀持库/表/⾏级别 数据过滤
-
多种数据通道模式
- ⽀持多对多的数据传输
- ⽀持回环传输
-
多种源/⽬标端
- ⽀持MySQL - MySQL的数据传输
- ⽀持MySQL - Kafka的数据传输
-
集群模式
- 提供可靠的元数据存储
- 可进⾏⾃动任务分配
- ⽀持⾃动故障转移
单向复制/聚合/分散
DTLE支持的常见复制场景如下
-
按数据源/数据目标划分
- 支持1个源端到一个目标端的复制
- 支持多个源端到一个目标端的聚合复制
- 支持一个源端到多个目标的拆分复制
-
按网络类型划分
- 支持网络内部数据传输
- 支持跨网络的数据传输(可使⽤ 链路压缩/链路限流 等功能)
-
按集群规模划分
- 可配置单⼀dtle实例处理单⼀数据通道
- 可配置 dtle集群 处理 多个数据通道
DTLE单项复制
- 下载DTLE的RPM安装包
https://github.com/actiontech/dtle/releases/tag/v3.21.03.0
- 安装RPM包
[root@study01 ~]# rpm -ivh dtle-3.21.03.0.x86_64.rpm --prefix=/data/dtle
- 修改consul配置文件,如果安装时不指定安装路径,默认是在/etc/dtle目录下面
[root@study01 dtle]# pwd
/data/dtle/etc/dtle
[root@study01 dtle]# cat consul.hcl
# Rename for each node
node_name = "consul0" #定义consul名称,多集群名字不能重复
data_dir = "/data/dtle/var/lib/consul"
ui = true
disable_update_check = true
# Address that should be bound to for internal cluster communications
bind_addr = "0.0.0.0"
# Address to which Consul will bind client interfaces, including the HTTP and DNS servers
client_addr = "10.186.65.68" #本机ip地址
advertise_addr = "10.186.65.68" #本机ip地址
ports = {
# Customize if necessary. -1 means disable.
#dns = -1
#server = 8300
#http = 8500
#serf_wan = -1
#serf_lan = 8301
}
limits = {
http_max_conns_per_client = 4096
}
server = true
# For single node
bootstrap_expect = 1 #一台consul
# For 3-node cluster
#bootstrap_expect = 3 #三台consul,部署集群开启
#retry_join = ["127.0.0.1", "127.0.0.2", "127.0.0.3"] # will use default serf port
log_level = "INFO"
log_file = "/data/dtle/var/log/consul/"
- 修改nomad配置文件,如果安装时不指定安装路径,默认是在/etc/dtle目录下面
root@study01 dtle]# ls
consul.hcl nomad.hcl
[root@study01 dtle]# pwd
/data/dtle/etc/dtle
[root@study01 dtle]# cat nomad.hcl
name = "nomad0" # rename for each node 定义nomad名字,部署集群名字不可重复
datacenter = "dc1"
data_dir = "/data/dtle/var/lib/nomad"
plugin_dir = "/data/dtle/usr/share/dtle/nomad-plugin"
log_level = "Info"
log_file = "/data/dtle/var/log/nomad/"
disable_update_check = true
bind_addr = "0.0.0.0" #监听地址
# change ports if multiple nodes run on a same machine
ports {
http = 4646
rpc = 4647
serf = 4648
}
addresses {
# Default to `bind_addr`. Or set individually here.
#http = "127.0.0.1"
#rpc = "127.0.0.1"
#serf = "127.0.0.1"
}
advertise {
http = "10.186.65.68:4646"
rpc = "10.186.65.68:4647"
serf = "10.186.65.68:4648"
}
server {
enabled = true #服务端开启
bootstrap_expect = 1
# Set bootstrap_expect to 3 for multiple (high-availablity) nodes.
# Multiple nomad nodes will join with consul.
}
client {
enabled = true
options = {
"driver.blacklist" = "docker,exec,java,mock,qemu,rawexec,rkt"
}
# Will auto join other server with consul.
}
consul {
# dtle-plugin and nomad itself use consul separately.
# nomad uses consul for server_auto_join and client_auto_join.
# Only one consul can be set here. Write the nearest here,
# e.g. the on