使用 TiUP 部署 DM 集群

概述

TiUP DM 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP DM 组件就可以进行日常的运维工作,包括部署、启动、关闭、销毁、扩缩容、升级 DM 集群以及管理 DM 集群参数。

目前 TiUP 可以支持部署 v2.0 及以上版本的 DM。

前提条件

  • 当 DM 执行全量数据复制任务时,每个 DM-worker 只绑定一个上游数据库。DM-worker 首先在上游导出全部数据,然后将数据导入下游数据库。因此,DM-worker 的主机空间需要容纳所有要导出的上游表,具体存储路径在后续创建迁移任务时指定。

  • 部署 DM 集群需参照 DM 集群软硬件环境需求,满足相应要求。

  • 从 v8.0.0 开始,如果需要使用加密数据库密码的方式配置 DM 任务,需要提前在 DM-master 存储一个用于加解密数据库密码的密钥文件,且配置 secret-key-path 后才可使用 dmctl encrypt 命令。

安装 TiUP DM 组件

使用普通用户登录中控机,以 tidb 用户为例,后续安装 TiUP 及集群管理操作均通过该用户完成。
安装TiUP请参考此前文章。
在TiUP安装完成后,安装 TiUP DM 组件:

tiup install dm dmctl

编辑初始化配置文件

根据不同的集群拓扑,编辑 TiUP 所需的集群初始化配置文件。
请根据配置文件模板,新建一个配置文件 topology.yaml。如果有其他组合场景的需求,请根据多个模板自行调整。
也可以使用 tiup dm template > topology.yaml 命令快速生成配置文件模板。

以部署 3 个 DM-master、3 个 DM-worker 与 1 个监控组件为例,配置如下:

#全局变量适用于配置中的其他组件。如果组件实例中缺少一个特定值,则相应的全局变量将用作默认值。
global:
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/dm-deploy"
  data_dir: "/dm-data"

server_configs:
  master:
    log-level: info
    # rpc-timeout: "30s"
    # rpc-rate-limit: 10.0
    # rpc-rate-burst: 40
  worker:
    log-level: info

master_servers:
  - host: 10.0.1.11
    name: master1
    ssh_port: 22
    port: 8261
    # peer_port: 8291
    # deploy_dir: "/dm-deploy/dm-master-8261"
    # data_dir: "/dm-data/dm-master-8261"
    # log_dir: "/dm-deploy/dm-master-8261/log"
    # numa_node: "0,1"
    # 下列配置项用于覆盖 `server_configs.master` 的值。
    config:
      log-level: info
      # rpc-timeout: "30s"
      # rpc-rate-limit: 10.0
      # rpc-rate-burst: 40
  - host: 10.0.1.18
    name: master2
    ssh_port: 22
    port: 8261
  - host: 10.0.1.19
    name: master3
    ssh_port: 22
    port: 8261
# 如果不需要确保 DM 集群高可用,则可只部署 1 个 DM-master 节点,且部署的 DM-worker 节点数量不少于上游待迁移的 MySQL/MariaDB 实例数。
# 如果需要确保 DM 集群高可用,则推荐部署 3 个 DM-master 节点,且部署的 DM-worker 节点数量大于上游待迁移的 MySQL/MariaDB 实例数(如 DM-worker 节点数量比上游实例数多 2 个)。
worker_servers:
  - host: 10.0.1.12
    ssh_port: 22
    port: 8262
    # deploy_dir: "/dm-deploy/dm-worker-8262"
    # log_dir: "/dm-deploy/dm-worker-8262/log"
    # numa_node: "0,1"
    # 下列配置项用于覆盖 `server_configs.worker` 的值。
    config:
      log-level: info
  - host: 10.0.1.19
    ssh_port: 22
    port: 8262

monitoring_servers:
  - host: 10.0.1.13
    ssh_port: 22
    port: 9090
    # deploy_dir: "/tidb-deploy/prometheus-8249"
    # data_dir: "/tidb-data/prometheus-8249"
    # log_dir: "/tidb-deploy/prometheus-8249/log"

grafana_servers:
  - host: 10.0.1.14
    port: 3000
    # deploy_dir: /tidb-deploy/grafana-3000

alertmanager_servers:
  - host: 10.0.1.15
    ssh_port: 22
    web_port: 9093
    # cluster_port: 9094
    # deploy_dir: "/tidb-deploy/alertmanager-9093"
    # data_dir: "/tidb-data/alertmanager-9093"
    # log_dir: "/tidb-deploy/alertmanager-9093/log"

注:

  • 不建议在一台主机上运行太多 DM-worker。每个 DM-worker 至少应有 2 核 CPU 和 4 GiB 内存。
  • 需要确保以下组件间端口可正常连通:
    各 DM-master 节点间的 peer_port(默认为 8291)可互相连通。
    各 DM-master 节点可连通所有 DM-worker 节点的 port(默认为 8262)。
    各 DM-worker 节点可连通所有 DM-master 节点的 port(默认为 8261)。
    TiUP 节点可连通所有 DM-master 节点的 port(默认为 8261)。
    TiUP 节点可连通所有 DM-worker 节点的 port(默认为 8262)。

更多 master_servers.host.config 参数说明,请参考 master parameter;更多 worker_servers.host.config 参数说明,请参考 worker parameter

我们在测试机上创建配置文件:

cd /home/tidb/.tiup/bin
vim topologydm.yaml

topologydm.yaml配置文件内容为:

#全局变量适用于配置中的其他组件。如果组件实例中缺少一个特定值,则相应的全局变量将用作默认值。
global:
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/data/tidb/dm-deploy"
  data_dir: "/data/tidb/dm-data"

server_configs:
  master:
    log-level: info
    # rpc-timeout: "30s"
    # rpc-rate-limit: 10.0
    # rpc-rate-burst: 40
  worker:
    log-level: info

master_servers:
  - host: 10.0.8.86
    name: master1
    ssh_port: 22
    port: 8261
    # peer_port: 8291
    # deploy_dir: "/dm-deploy/dm-master-8261"
    # data_dir: "/dm-data/dm-master-8261"
    # log_dir: "/dm-deploy/dm-master-8261/log"
    # numa_node: "0,1"
    # 下列配置项用于覆盖 `server_configs.master` 的值。
    config:
      log-level: info
      # rpc-timeout: "30s"
      # rpc-rate-limit: 10.0
      # rpc-rate-burst: 40
#  - host: 10.0.1.18
#    name: master2
#    ssh_port: 22
#    port: 8261
#  - host: 10.0.1.19
#    name: master3
#    ssh_port: 22
#    port: 8261
# 如果不需要确保 DM 集群高可用,则可只部署 1 个 DM-master 节点,且部署的 DM-worker 节点数量不少于上游待迁移的 MySQL/MariaDB 实例数。
# 如果需要确保 DM 集群高可用,则推荐部署 3 个 DM-master 节点,且部署的 DM-worker 节点数量大于上游待迁移的 MySQL/MariaDB 实例数(如 DM-worker 节点数量比上游实例数多 2 个)。
worker_servers:
  - host: 10.0.8.86
    ssh_port: 22
    port: 8262
    # deploy_dir: "/dm-deploy/dm-worker-8262"
    # log_dir: "/dm-deploy/dm-worker-8262/log"
    # numa_node: "0,1"
    # 下列配置项用于覆盖 `server_configs.worker` 的值。
    config:
      log-level: info
#  - host: 10.0.1.19
#    ssh_port: 22
#    port: 8262

monitoring_servers:
  - host: 10.0.8.86
    ssh_port: 22
    port: 9090
    # deploy_dir: "/tidb-deploy/prometheus-8249"
    # data_dir: "/tidb-data/prometheus-8249"
    # log_dir: "/tidb-deploy/prometheus-8249/log"

grafana_servers:
  - host: 10.0.8.86
    port: 3000
    # deploy_dir: /tidb-deploy/grafana-3000

alertmanager_servers:
  - host: 10.0.8.86
    ssh_port: 22
    web_port: 9093
    # cluster_port: 9094
    # deploy_dir: "/tidb-deploy/alertmanager-9093"
    # data_dir: "/tidb-data/alertmanager-9093"
    # log_dir: "/tidb-deploy/alertmanager-9093/log"

开始部署

命令如下:

tiup dm deploy dm-test ${version} ./topology.yaml --user root [-p] [-i /home/root/.ssh/gcp_rsa]

以上部署命令中:

  • 通过 TiUP DM 部署的集群名称为 dm-test
  • 部署版本为 ${version},可以通过执行 tiup list dm-master 来查看 TiUP 支持的最新版本。
  • 初始化配置文件为 topology.yaml
  • --user root:通过 root 用户登录到目标主机完成集群部署,该用户需要有 ssh 到目标机器的权限,并且在目标机器有 sudo 权限。也可以用其他有 ssh 和 sudo 权限的用户完成部署。
  • -i-p:非必选项,如果已经配置免密登录目标机,则不需填写,否则选择其一即可。-i 为可登录到目标机的 root 用户(或 --user 指定的其他用户)的私钥,也可使用 -p 交互式输入该用户的密码。
  • TiUP DM 使用内置的 SSH 客户端,如需使用系统自带的 SSH 客户端,请参考 TiUP DM 文档中使用中控机系统自带的 SSH 客户端连接集群章节进行设置。

预期日志结尾输出会有 Deployed clusterdm-testsuccessfully 关键词,表示部署成功。

我们测试环境部署命令为:

tiup dm deploy dm-test-86 v8.1.1  ./topologydm.yaml --user root -p

执行后会看到成功的输出:

Cluster `dm-test-86` deployed successfully, you can start it with command: `tiup dm start dm-test-86`

查看 TiUP 管理的集群情况

tiup dm list

TiUP 支持管理多个 DM 集群,该命令会输出当前通过 TiUP DM 管理的所有集群信息,包括集群名称、部署用户、版本、密钥信息等:

Starting component dm: /home/tidb/.tiup/components/dm/v1.16.0/tiup-dm list
Name        User  Version  Path                                             PrivateKey
----        ----  -------  ----                                             ----------
dm-test-86  tidb  v8.1.1   /home/tidb/.tiup/storage/dm/clusters/dm-test-86  /home/tidb/.tiup/storage/dm/clusters/dm-test-86/ssh/id_rsa

检查部署的 DM 集群情况

例如,执行如下命令检查 dm-test-86 集群情况:

tiup dm display dm-test-86

预期输出包括 dm-test 集群中实例 ID、角色、主机、监听端口和状态(由于还未启动,所以状态为 Down/inactive)、目录信息。

Starting component dm: /home/tidb/.tiup/components/dm/v1.16.0/tiup-dm display dm-test-86
Cluster type:       dm
Cluster name:       dm-test-86
Cluster version:    v8.1.1
Deploy user:        tidb
SSH type:           builtin
Grafana URL:        http://10.0.8.86:3000
ID              Role          Host       Ports      OS/Arch       Status  Data Dir                              Deploy Dir
--              ----          ----       -----      -------       ------  --------                              ----------
10.0.8.86:9093  alertmanager  10.0.8.86  9093/9094  linux/x86_64  Down    /data/tidb/dm-data/alertmanager-9093  /data/tidb/dm-deploy/alertmanager-9093
10.0.8.86:8261  dm-master     10.0.8.86  8261/8291  linux/x86_64  Down    /data/tidb/dm-data/dm-master-8261     /data/tidb/dm-deploy/dm-master-8261
10.0.8.86:8262  dm-worker     10.0.8.86  8262       linux/x86_64  N/A     /data/tidb/dm-data/dm-worker-8262     /data/tidb/dm-deploy/dm-worker-8262
10.0.8.86:3000  grafana       10.0.8.86  3000       linux/x86_64  Up      -                                     /data/tidb/dm-deploy/grafana-3000
10.0.8.86:9090  prometheus    10.0.8.86  9090       linux/x86_64  Up      /data/tidb/dm-data/prometheus-9090    /data/tidb/dm-deploy/prometheus-9090
Total nodes: 5

我们发现3000和9090端口已经在启用,因为我们的Tidb cluster的监控也在这台上,因此不能使用相同的端口,直接启动会造成冲突。销毁集群后,将配置文件端口号改为3001和9091,然后重新部署dm集群。(销毁命令见文末)

启动集群

tiup dm start dm-test-86

可以看到输出:

Starting component dm: /home/tidb/.tiup/components/dm/v1.16.0/tiup-dm start dm-test-86
Starting cluster dm-test-86...
+ [ Serial ] - SSHKeySet: privateKey=/home/tidb/.tiup/storage/dm/clusters/dm-test-86/ssh/id_rsa, publicKey=/home/tidb/.tiup/storage/dm/clusters/dm-test-86/ssh/id_rsa.pub
+ [Parallel] - UserSSH: user=tidb, host=10.0.8.86
+ [Parallel] - UserSSH: user=tidb, host=10.0.8.86
+ [Parallel] - UserSSH: user=tidb, host=10.0.8.86
+ [Parallel] - UserSSH: user=tidb, host=10.0.8.86
+ [Parallel] - UserSSH: user=tidb, host=10.0.8.86
+ [ Serial ] - StartCluster
Starting component dm-master
        Starting instance 10.0.8.86:8261
        Start instance 10.0.8.86:8261 success
Starting component dm-worker
        Starting instance 10.0.8.86:8262
        Start instance 10.0.8.86:8262 success
Starting component prometheus
        Starting instance 10.0.8.86:9090
        Start instance 10.0.8.86:9090 success
Starting component grafana
        Starting instance 10.0.8.86:3000
        Start instance 10.0.8.86:3000 success
Starting component alertmanager
        Starting instance 10.0.8.86:9093
        Start instance 10.0.8.86:9093 success
Started cluster `dm-test-86` successfully

验证集群运行状态

通过以下 TiUP 命令检查集群状态:

tiup dm display dm-test-86

在输出结果中,如果 Status 状态信息为 Up,说明集群状态正常。
我这里输出为:

Starting component dm: /home/tidb/.tiup/components/dm/v1.16.0/tiup-dm display dm-test-86
Cluster type:       dm
Cluster name:       dm-test-86
Cluster version:    v8.1.1
Deploy user:        tidb
SSH type:           builtin
Grafana URL:        http://10.0.8.86:3000
ID              Role          Host       Ports      OS/Arch       Status     Data Dir                              Deploy Dir
--              ----          ----       -----      -------       ------     --------                              ----------
10.0.8.86:9093  alertmanager  10.0.8.86  9093/9094  linux/x86_64  Up         /data/tidb/dm-data/alertmanager-9093  /data/tidb/dm-deploy/alertmanager-9093
10.0.8.86:8261  dm-master     10.0.8.86  8261/8291  linux/x86_64  Healthy|L  /data/tidb/dm-data/dm-master-8261     /data/tidb/dm-deploy/dm-master-8261
10.0.8.86:8262  dm-worker     10.0.8.86  8262       linux/x86_64  Free       /data/tidb/dm-data/dm-worker-8262     /data/tidb/dm-deploy/dm-worker-8262
10.0.8.86:3000  grafana       10.0.8.86  3000       linux/x86_64  Up         -                                     /data/tidb/dm-deploy/grafana-3000
10.0.8.86:9090  prometheus    10.0.8.86  9090       linux/x86_64  Up         /data/tidb/dm-data/prometheus-9090    /data/tidb/dm-deploy/prometheus-9090
Total nodes: 5

通过http://10.0.8.86:3000/访问grafana查看,我们测试环境改为3001端口。

关闭及销毁:

关闭:

tiup dm stop dm-test-86

销毁:

tiup dm  destroy dm-test-86
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容