TiCDC 独立部署
TiCDC 当前支持以下两种部署方式:
- 混合部署:将 TiCDC 作为组件与平凯数据库集群一起部署,或在现有平凯数据库集群中新增 TiCDC 组件。详情请参见 混合部署 TiCDC。
- 独立部署:将 TiCDC 作为独立集群部署,即使用 TiUP 在不依赖平凯数据库集群的情况下部署 TiCDC,并使用独立的 etcd 管理元数据使其与上游平凯数据库集群解耦。
本文介绍独立部署模式下的软硬件环境要求,以及如何安装部署 TiCDC 集群,以及如何对 TiCDC 集群进行运维操作。
注意:在独立部署场景下,建议同时部署 TiGateway。TiGateway 的部署方式请参考 TiGateway 部署。若需要实现如下两点功能,则必须借助 TiGateway:
- 上下游网络隔离时的数据同步
- 独立部署的 TiCDC 对上游 PD 组件因扩缩容等因素带来的实例变更动态感知
软件和硬件环境推荐配置
在生产环境中,TiCDC 硬件配置推荐如下:
| CPU | 内存 | 硬盘 | 网络 | TiCDC 集群实例数量(生产环境最低要求) |
|---|---|---|---|---|
| 16 核+ | 64 GB+ | 500 GB+ SSD 类型硬盘 | 万兆网卡(2 块最佳) | 2 |
软件配置推荐及更多信息参见平凯数据库软件和硬件环境建议配置。
推荐部署架构

通过 tiup cm 部署独立部署的 TiCDC 和元数据组件 etcd,并按需部署监控组件 Prometheus、Alertmanager 和 Grafana,部署使用拓扑中,需要根据接入方式在配置中填写上游信息,上游信息可以是上游 PD 地址或 TiGateway 地址及状态地址。具体填写方式请参见下文“配置参数说明”。
注意:若上游通过 TiGateway 接入,例如需要支持上下游网络隔离时的数据同步,或需要让独立部署的 TiCDC 动态感知上游 PD 组件因扩缩容等因素带来的实例变更,请参考 TiGateway 部署 中的“推荐部署架构”一节。
使用 TiUP 独立部署 TiCDC
独立部署 TiCDC 需要使用独立部署 TiCDC 安装包,联系客户经理获取软件包。
-
获取软件包并了解组件组成
ticdc-standalone-{version}-linux-{arch}.tar.gz内部包含:- cm: 用于独立部署 TiCDC 等组件的管理组件,其角色类似
tiup cluster和tiup dm,我们可以用tiup cm命令来部署独立部署 TiCDC 和元数据组件 etcd,以及监控组件 Prometheus、Alertmanager、Grafana 等,具体安装部署方式将在下文中描述。 - etcd:用于存储 TiCDC 的元数据
- cdc:独立部署 TiCDC 的二进制组件
- prometheus:用于独立部署 TiCDC 的自监控
- alertmanager:用于独立部署 TiCDC 的自监控
- grafana:用于独立部署 TiCDC 的自监控
- node_exporter:用于独立部署 TiCDC 的自监控
- blackbox_exporter:用于独立部署 TiCDC 的自监控
获取到软件包后,请找一台原先未安装
tiup的机器安装软件包,避免镜像源干扰tar xzvf ticdc-standalone-{version}-linux-{arch}.tar.gz && \ sh ticdc-standalone-{version}-linux-{arch}/local_install.sh && \ source ~/.bash_profilelocal_install.sh脚本会自动执行 tiup mirror set ticdc-standalone-{version}-linux-{arch} 命令将当前镜像地址设置为 ticdc-standalone-{version}-linux-{arch}。 - cm: 用于独立部署 TiCDC 等组件的管理组件,其角色类似
-
编写一个名为
topology.yaml的配置文件,包含 TiCDC 组件、etcd 组件和按需部署的监控组件。下面是一个示例:注意
- 独立部署场景下,Changefeed 等 TiCDC 集群元数据存储在这里配置的独立 etcd 集群中。
- 这里的 etcd 为常规 etcd 集群。生产环境建议部署 3 个 etcd 节点。etcd 基于多数派仲裁(quorum)保持一致性,3 节点集群可以在 1 个节点故障时继续提供服务,并在高可用与资源成本之间取得较好的平衡。
- 若需要支持上下游网络隔离时的数据同步,或需要让独立部署的 TiCDC 动态感知上游 PD 组件因扩缩容等因素带来的实例变更,建议同时部署 TiGateway,并在 TiCDC 配置中填写
tigateway和tigateway-status,而不是pd。相关topology.yaml配置请参考 TiGateway 部署 中的“2. 部署下游 TiCDC 独立集群”小节。 - 为简洁起见,下面示例将上游接入配置统一写在
server_configs.cdc下;实际也可以按实例写在cdc_servers[].config下。
global: user: "tidb" ssh_port: 22 deploy_dir: "/cm-deploy" data_dir: "/cm-data" monitored: node_exporter_port: 9700 blackbox_exporter_port: 9715 server_configs: cdc: pd: "10.0.1.4:2379,10.0.1.5:2379,10.0.1.6:2379" etcd_servers: - host: 10.0.2.4 - host: 10.0.2.5 - host: 10.0.2.6 cdc_servers: - host: 10.0.2.7 - host: 10.0.2.8 - host: 10.0.2.9 monitoring_servers: - host: 10.0.2.7 grafana_servers: - host: 10.0.2.7 alertmanager_servers: - host: 10.0.2.7 -
在 TiUP 中控机上执行类似下面的命令进行部署:
执行
tiup cm deploy命令的用户需要是root用户,或者具备 sudo 免密权限的用户。该要求与使用 TiUP 部署平凯数据库集群时相同。tiup cm deploy <cm-cluster-name> <version> ./topology.yaml -u root -p tiup cm start <cm-cluster-name>
使用 TiUP 变更 TiCDC 集群配置
本节介绍如何使用 TiUP 的 tiup cm edit-config 命令来修改 TiCDC 的配置。在以下例子中,假设需要把 TiCDC 的 gc-ttl 从默认值 86400 修改为 172800,即 48 小时。
-
执行
tiup cm edit-config命令,注意将<cm-cluster-name>替换成实际的集群名:tiup cm edit-config <cm-cluster-name> -
在 vi 编辑器页面,修改各个
cdc_servers实例下的config配置:server_configs: cdc: gc-ttl: 172800以上把各个 TiCDC 节点的
gc-ttl的值设置为 48 小时。 -
执行
tiup cm reload -R cdc命令重新加载配置。
配置参数说明
对于监控组件部分与平凯数据库里的配置方式相同,不再赘述,这里仅说明 etcd 和 TiCDC 的配置参数。
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/cm-deploy"
data_dir: "/cm-data"
server_configs: {}
etcd_servers:
- host: 127.0.0.1
# name: "etcd-1"
# client_port: 2379
# peer_port: 2380
# deploy_dir: "/cm-deploy/etcd-2379"
# data_dir: "/cm-data/etcd-2379"
# log_dir: "/cm-deploy/etcd-2379/log"
cdc_servers:
- host: 127.0.0.1
# port: 8300
# deploy_dir: "/cm-deploy/cdc-8300"
# data_dir: "/cm-data/cdc-8300"
# log_dir: "/cm-deploy/cdc-8300/log"
config:
## 请注意 pd 或者 tigateway/tigateway-status 至少一种一组需要填写
## 若不依赖 tigateway,请直接填写 pd 地址即可
## 若依赖 tigateway 请勿填写 pd 改为填写 tigateway/tigateway-status
pd: "10.0.1.11:2379"
# tigateway: "10.0.1.23:1080"
# tigateway-status: "10.0.1.23:8000"
## 当需要使用外部 etcd 作为存储时填写
# etcd: "127.0.0.2:2379"
## 当需要多组 TiCDC 集群使用同一个 etcd 集群时填写
# cluster-id: "cdc-cluster-id"
monitoring_servers:
- host: 127.0.0.1
grafana_servers:
- host: 127.0.0.1
alertmanager_servers:
- host: 127.0.0.1上面的独立部署 TiCDC 拓扑示例中:
- global:
- user: 可以自定义,默认为
tidb,无需预先创建,无需预先配置 SSH 互信;该要求与使用 TiUP 部署平凯数据库集群时相同。 - deploy_dir:默认情况下,部署目录以
/cm-deploy为根目录。实际部署时,建议根据目标机器的挂盘情况规划deploy_dir。 - data_dir:默认情况下,数据目录以
/cm-data为根目录。实际部署时,建议根据目标机器的挂盘情况规划data_dir。
- user: 可以自定义,默认为
- etcd_servers:
- host:服务器主机地址
- name:etcd 节点名称(可选)
- client_port:客户端连接端口,默认 2379
- peer_port:节点间通信端口,默认 2380
- deploy_dir:部署目录
- data_dir:数据存储目录
- log_dir:日志目录
- cdc_servers:
- host:服务器主机地址
- port: TiCDC 服务端口,默认 8300
- deploy_dir:部署目录
- data_dir:数据存储目录
- log_dir:日志目录
- config.pd: 当集群不需要使用 TiGateway 作为上下游之间的网关时,即上下游网络没有无法连通的问题时,需要显示指定 pd 地址,请注意此时不能填写 tigateway 和 tigateway-status 字段。建议独立部署的 TiCDC 使用一起部署的 etcd_servers 或者指定外部共用 config.etcd,若均无指定将使用 pd 的 etcd,为了避免冲突,也请设置 config.cluster-id
- config.tigateway: TiGateway 代理地址,格式为 ip:port
- config.tigateway-status: TiGateway 状态监控地址,用于 HTTP 请求状态和数据
- config.etcd: 用户可设置外部的 etcd 用于存储,此时即便在 TiCDC 独立部署拓扑中部署了 etcd,TiCDC 也将使用这里显示配置的外部 etcd 来使用
- config.cluster-id: 当多套 TiCDC 集群要使用同一个 etcd 存储数据时,必须要填写该字段用于区分在 etcd 内的存储位置
其它 TiUP 运维命令
- 展示 TiCDC 独立部署集群拓扑
tiup cm display <cm-cluster-name> - 扩容 TiCDC 独立部署集群节点,例如 TiCDC、etcd 以及 Prometheus 监控组件等
scale-out-cdc.yaml
tiup cm scale-out <cm-cluster-name> scale-out-cdc.yaml -u <username> -pcdc_servers: - host: 127.0.0.2 config: tigateway: "10.0.1.23:1080" tigateway-status: "10.0.1.23:8000" - 缩容 TiCDC 独立部署集群节点,例如 TiCDC、etcd 以及 Prometheus 监控组件等
tiup cm scale-in <cm-cluster-name> -N 127.0.0.2:8300 - 终止和启动 TiCDC 独立部署集群节点
tiup cm stop <cm-cluster-name> -R cdc tiup cm start <cm-cluster-name> -R cdc tiup cm restart <cm-cluster-name> -R cdc - 销毁 TiCDC 独立部署服务
tiup cm destroy <cm-cluster-name>
使用 TiCDC 命令行工具来查看集群状态
执行以下命令来查看 TiCDC 集群运行状态,注意需要将 v<CLUSTER_VERSION> 替换为 TiCDC 集群版本,例如 v7.1.8-5.2:
tiup cdc:v<CLUSTER_VERSION> cli capture list --server=http://10.0.10.25:8300[
{
"id": "806e3a1b-0e31-477f-9dd6-f3f2c570abdd",
"is-owner": true,
"address": "127.0.0.1:8300",
"cluster-id": "default"
},
{
"id": "ea2a4203-56fe-43a6-b442-7b295f458ebc",
"is-owner": false,
"address": "127.0.0.1:8301",
"cluster-id": "default"
}
]id:表示服务进程的 ID。is-owner:表示该服务进程是否为 owner 节点。address:该服务进程对外提供接口的地址。cluster-id:该 TiCDC 的集群 ID,默认值为default。