PingKai Logo下载

TiCDC 独立部署

TiCDC 当前支持以下两种部署方式:

  • 混合部署:将 TiCDC 作为组件与平凯数据库集群一起部署,或在现有平凯数据库集群中新增 TiCDC 组件。详情请参见 混合部署 TiCDC。
  • 独立部署:将 TiCDC 作为独立集群部署,即使用 TiUP 在不依赖平凯数据库集群的情况下部署 TiCDC,并使用独立的 etcd 管理元数据使其与上游平凯数据库集群解耦。

本文介绍独立部署模式下的软硬件环境要求,以及如何安装部署 TiCDC 集群,以及如何对 TiCDC 集群进行运维操作。

软件和硬件环境推荐配置

在生产环境中,TiCDC 硬件配置推荐如下:

CPU内存硬盘网络TiCDC 集群实例数量(生产环境最低要求)
16 核+64 GB+500 GB+ SSD 类型硬盘万兆网卡(2 块最佳)2

软件配置推荐及更多信息参见平凯数据库软件和硬件环境建议配置。

推荐部署架构

TiCDC Standalone Architecture

通过 tiup cm 部署独立部署的 TiCDC 和元数据组件 etcd,并按需部署监控组件 Prometheus、Alertmanager 和 Grafana,部署使用拓扑中,需要根据接入方式在配置中填写上游信息,上游信息可以是上游 PD 地址或 TiGateway 地址及状态地址。具体填写方式请参见下文“配置参数说明”。

使用 TiUP 独立部署 TiCDC

独立部署 TiCDC 需要使用独立部署 TiCDC 安装包,联系客户经理获取软件包。

  1. 获取软件包并了解组件组成

    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_profile

    local_install.sh 脚本会自动执行 tiup mirror set ticdc-standalone-{version}-linux-{arch} 命令将当前镜像地址设置为 ticdc-standalone-{version}-linux-{arch}。

  2. 编写一个名为 topology.yaml 的配置文件,包含 TiCDC 组件、etcd 组件和按需部署的监控组件。下面是一个示例:

    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
  3. 在 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 小时。

  1. 执行 tiup cm edit-config 命令,注意将 <cm-cluster-name> 替换成实际的集群名:

    tiup cm edit-config <cm-cluster-name>
  2. 在 vi 编辑器页面,修改各个 cdc_servers 实例下的 config 配置:

    server_configs:
      cdc:
        gc-ttl: 172800

    以上把各个 TiCDC 节点的 gc-ttl 的值设置为 48 小时。

  3. 执行 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。
  • 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 运维命令

  1. 展示 TiCDC 独立部署集群拓扑
    tiup cm display <cm-cluster-name>
  2. 扩容 TiCDC 独立部署集群节点,例如 TiCDC、etcd 以及 Prometheus 监控组件等
    tiup cm scale-out <cm-cluster-name> scale-out-cdc.yaml -u <username> -p
    scale-out-cdc.yaml
    cdc_servers:
      - host: 127.0.0.2
        config:
          tigateway: "10.0.1.23:1080"
          tigateway-status: "10.0.1.23:8000"
  3. 缩容 TiCDC 独立部署集群节点,例如 TiCDC、etcd 以及 Prometheus 监控组件等
    tiup cm scale-in <cm-cluster-name> -N 127.0.0.2:8300
  4. 终止和启动 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
  5. 销毁 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。