1.TiOps 简介

    1.1 背景

    1.2 介绍

    TiOps 是一款部署、运维 TiDB 的命令行工具,通过简单易用的操作命令来提升 TiDB 的运维效率。

    2.功能说明

    2.1 集群初始化

    在初次使用 TiOps 部署 TiDB 集群之前,需要进行相关的系统初始化操作,其中包括:中控机初始化、打通节点之间的网络 (SSH) 配置、部署节点初始化。

    2.2 集群日常运维

    提供 TiDB 集群常见的部署、运维管理操作,其中包括:集群/角色/组件的部署、启动、停止、重启、扩容、缩容、升级、销毁、修改配置、重新加载配置、查询集群状态等功能。

    3.准备工作

    基本要求

    • 操作系统:仅支持 CentOS 7.3 及以上 Linux 操作系统 (建议使用 el7 系列最新版)
    • 软件源:系统需已安装 epel-release 包,或通过其他方式添加了 EPEL 源
    • 磁盘空间:中控机执行用户的 目录可用空间 > 10GB
    • 网络:中控机有互联网访问,且与部署机处在同一网络环境中

    (1)、在中控机上安装第三方包管理库

    (2)、安装 TiOps

    当前只提供 rpm 包,后续会考虑使用 tiup ,通过指定 nightly 等参数来进行下载安装。

    为方便实验,这里就写提供一个 v0.2.0 的下载链接。

    1. wget https://download.pingcap.org/tiops-v0.2.0-1.el7.x86_64.rpm
    2. yum localinstall -y tiops-v0.2.0-1.dev.el7.x86_64.rpm

    (3)、测试 TiOps 安装是否成功

    在命令行输入:tiops -h 后,输出如下内容即表示 TiOps 已经安装成功。

    1. tiops -h
    2. usage: tiops [-h] [-v]
    3. {bootstrap-local,bootstrap-ssh,bootstrap-host,deploy,start,stop,restart,upgrade,display,destroy,reload,edit-config,scale-out,scale-in,exec,quickdeploy,version}
    4. ...
    5. positional arguments:
    6. tidb cluster commands
    7. bootstrap-local init localhost
    8. bootstrap-ssh init ssh for cluster hosts
    9. bootstrap-host init environment for cluster hosts
    10. deploy create tidb cluster
    11. start start tidb cluster
    12. stop stop tidb cluster
    13. restart restart tidb cluster
    14. upgrade upgrade tidb cluster
    15. display display tidb cluster
    16. destroy destroy tidb cluster
    17. reload reload tidb cluster
    18. edit-config edit tidb cluster configuration
    19. scale-out scale out tidb cluster
    20. scale-in scale in tidb cluster
    21. exec run shell command on host in the tidb cluster
    22. quickdeploy deploy a tidb cluster in demo mode
    23. version show TiOps version and exit
    24. optional arguments:
    25. -h, --help show this help message and exit
    26. -v, --verbose Print verbose output.

    (4)、初始化中控机

    命令:
    1. tiops bootstrap-local

    (5)、初始化中控机器与目标机器之间的网络

    指定目标机器 IP 和用户名,然后会在目标机器上创建运行 TiDB 服务的用户,并赋予 sudo 权限。

    命令:
    1. tiops bootstrap-ssh -H 10.9.1.1,10.9.1.2,10.9.1.3 -u root -d tidb
    参数说明:
    1. -H |--host hosts:必选参数,目机机器 IP 地址列表,多个 IP 之间采用 `,` 分割;也可直接传一个由多 IP 地址组成的文件,文件中每一行是一个 IP 地址,可参考 /usr/share/tiops/hosts.yaml.example
    2. -u | --user 必选参数,目标机器的用户名,默认: root
    3. -p | --password 可选参数,目标机器用户名的密码
    4. -d |--deploy-user 必选参数,目标机器上运行 TiDB 服务的用户
    5. -s | --ssh-port 可选参数,目标机器上 SSH 通信的端口号,默认: 22
    6. -f | --forks 可选参数,并发执行数量,默认:5
    注意事项:
    • 因为中控机与目标机器之间通过 ssh 通信,所以 TiOps 工具需要打通中控机与目标机器之间的免密码通信。
    • 目标机器的用户名除 root 外,也可以是具有 root 权限的普通用户。
    • 传入的密码若包含特殊字符,可以将密码字符串用单引号包起来。

    (6)、初始化目标机器

    根据传入的参数,检查、修改目标机器配置、NTP 服务、防火墙、时区、Swap、irqbalance 等。

    命令:
    1. tiops bootstrap-host -H 10.9.1.1,10.9.1.2,10.9.1.3 -d tidb
    参数说明:
    1. -H |--host hosts:必选参数,目机机器 IP 地址列表,多个 IP 之间采用 `,` 分割;也可直接传一个由多 IP 地址组成的文件,文件中每一行是一个 IP 地址,可参考 /usr/share/tiops/hosts.yaml.example
    2. -d |--deploy-user 必选参数,目标机器上运行 TiDB 服务的用户
    3. -s | --ssh-port 可选参数,目标机器上 SSH 通信的端口号,默认: 22
    4. --enable-check-ntp 可选参数,是否检查 NTP 服务,默认: disable
    5. --ntp-server 可选参数,用户的 NTP 服务,可传多个 NTP 地址,逗号分割。example: 10.0.0.10 or 10.0.0.10,10.0.0.11
    6. --timezone 可选参数,设置服务时区,默认: Asia/Shanghai
    7. --enable-swap 可选参数,是否开启 swap,默认:disable
    8. --disable-irqbalance 可选参数,是否开启 irqbalance,默认:enable
    9. --enable-checks 可选参数,是否做环境检查,默认:disable
    10. -f | --forks 可选参数,并发执行数量,默认:5
    注意事项:
    • 一定要指定上一步你所创建的运行 TiDB 服务的用户

    (7)、配置、修改集群拓扑信息

    通过如下命令,可查看 TiOps 拓扑配置文件示例。

    注意事项:

    • pd_servers、tidb_servers、tikv_servers、monitoring_server、grafana_server 为必配项。
    • 配置时除必须配置 IP 外,还可以配置 data_dirdeploy_dirport 等配置项,详细的配置项可以参考/usr/share/tiops/topology.yaml.example.full

    4.TiOps 部署

    4.1 准备集群所需拓扑文件

    根据实际情况来规划集群的拓扑信息,一般可以直接用 /usr/share/tiops/topology.yaml.example/usr/share/tiops/topology.yaml.example.full 来进行对应修改。

    命令:

    1. cp /usr/share/tiops/topology.yaml.example topology.yaml
    1. vim topology.yaml

    将 pd_servers、tidb_servers、tikv_servers、monitoring_server、grafana_server 填上提前准备好的 IP 地址,详细信息如下:

    1. ---
    2. pd_servers:
    3. - ip: 10.9.1.1
    4. - ip: 10.9.1.2
    5. - ip: 10.9.1.3
    6. tidb_servers:
    7. - ip: 10.9.1.1
    8. - ip: 10.9.1.2
    9. tikv_servers:
    10. - ip: 10.9.1.1
    11. - ip: 10.9.1.2
    12. - ip: 10.9.1.3
    13. monitoring_server:
    14. - ip: 10.9.1.1
    15. grafana_server:
    16. - ip: 10.9.1.1

    4.2 部署集群

    (1)、部署

    命令:

    1. tiops deploy -c mai -T topology.yaml -d tidb

    参数说明:

    5.TiOps 运维

    5.1 启动集群/角色/节点

    命令:

    1. tiops start -c mai

    当输出 Finished start. 后,可以使用 mysql client 来验证 TiDB 集群是否运行成功。

    1. mysql -h 10.9.1.1 -P4000 -u root

    输出类似 Server version: 5.7.25-TiDB-v3.0.9 MySQL Community Server (Apache License 2.0) 的字符串,即表示当前 TiDB 已经连接成功。

    参数说明:

    1. -c | --cluster_name name 必选参数,集群名称
    2. -t | --tidb-version 可选参数,TiDB 的版本号,默认: 3.0.5
    3. -d | --deploy-user 必选参数,目标机器上运行 TiDB 服务的用户
    4. --enable-check-cpu 可选参数,检查 CPU vcores 数量是否符合要求,默认:disable
    5. --enable-check-mem 可选参数,检查 Memory Size 是否符合要求,默认:disable
    6. --enable-check-disk 可选参数,检查 Disk Available Space 是否符合要求 ,默认:disable
    7. --enable-check-iops 可选参数,检查数据盘 IOPS 以及 latency 是否符合要求,默认:disable
    8. --enable-check-all 可选参数,检查 CPUMemoryDiskIOPS 是否符合要求,默认:disable
    9. --enable-firewall:可选参数,目标机器是否开启防火墙,默认:disable
    10. --enable-check-config:可选参数,检查配置文件是否合法,默认:disable
    11. --local-pkg 可选参数,若无外网,可将安装包拷贝中控机本地,通过此参数指相关路径进行离线安装
    12. -f | --forks 可选参数,并发执行数量,默认:5

    注意事项:

    • 集群不是第一次启动的时候才可以根据节点 ID 启动
    • 慎重使用按照角色启动

    5.2 重启集群/角色/节点

    命令:

    1. tiops restart -c mai

    TiOps 将会先停止 grafana, blackbox_exporter, node_exporter, prometheus, tidb, tikv, pd 等组件,然后再启动它们。

    参数说明:

    1. -c | --cluster_name cluster_name 必选参数,集群名称
    2. -r | --role role 可选参数,按照 TiDB 服务的角色类型,分别启动,取值:"pd", "tikv", "pump", "tidb", "drainer", "monitoring", "monitored", "grafana", "alertmanager"
    3. -n | --node-id node_id 可选参数,根据节点 ID 启动服务,节点 ID 可通过 display 命令获得
    4. -f | --forks 可选参数,并发执行数量,默认:5

    5.3 停止集群/角色/节点

    命令:

    1. tiops stop -c mai

    TiOps 将会停止 grafana, blackbox_exporter, node_exporter, prometheus, tidb, tikv, pd 等组件。

    参数说明:

    1. -r | --role role 可选参数,按照 TiDB 服务的角色类型,分别启动,取值:"pd", "tikv", "pump", "tidb", "drainer", "monitoring", "monitored", "grafana", "alertmanager"
    2. -n | --node-id node_id 可选参数,根据节点 ID 启动服务,节点 ID 可通过 display 命令获得
    3. -f | --forks 可选参数,并发执行数量,默认:5

    5.4 销毁集群

    命令:

    1. tiops destroy -c mai

    参数说明:

    1. -c | --cluster_name cluster_name 必选参数,集群名称
    2. -f | --forks 可选参数,并发执行数量,默认:5

    注意事项:

    • 销毁集群会删除整个集群的数据。

    5.5 版本升级

    命令:

    1. tiops upgrade -c mai -d tidb

    参数说明:

    1. -c | --cluster_name cluster_name 必选参数,集群名称
    2. -r | --role role 可选参数,按照 TiDB 服务的角色类型,分别启动,取值:"pd", "tikv", "pump", "tidb", "drainer", "monitoring", "monitored", "grafana", "alertmanager"
    3. -n | --node-id node_id 可选参数,根据节点 ID 启动服务,节点 ID 可通过 display 命令获得
    4. --force 可选参数,常规情况是滚动升级,设置此参数,升级时会强制停机、重启
    5. --local-pkg 可选参数,若无外网,可将安装包拷贝中控机本地,通过此参数指相关路径进行离线安装
    6. --enable-check-config:可选参数,检查配置文件是否合法,默认:disable
    7. -f | --forks 可选参数,并发执行数量,默认:5

    5.6 扩容

    命令:

    1. tiops scale-out -c mai -T topology.yaml

    参数说明:

    5.7 缩容或者下线节点

    命令:

    1. tiops scale-in -c mai

    参数说明:

    1. -c | --cluster_name name 必选参数,集群名称
    2. -n | --node-id nodes 可选参数,根据节点 ID 启动服务,节点 ID 可通过 display 命令获得
    3. -f | --forks 并发执行数量,默认:5

    5.8 重新加载配置文件

    命令:

    1. tiops reload -c mai

    参数说明:

    1. -c | --cluster_name cluster_name 必选参数,集群名称
    2. -r | --role role 可选参数,按照 TiDB 服务的角色类型,分别启动,取值:"pd", "tikv", "pump", "tidb", "drainer", "monitoring", "monitored", "grafana", "alertmanager"
    3. -n | --node-id node_id 可选参数,根据节点 ID 启动服务,节点 ID 可通过 display 命令获得
    4. -f | --forks 可选参数,并发执行数量,默认:5

    5.9 编辑配置文件

    命令:

    1. tiops edit-config -c mai

    参数说明:

    1. -c | --cluster_name cluster_name 必选参数,集群名称

    注意事项:

    • 编辑配置需要 reload 配置才会生效。

    5.10 查看集群详细信息

    命令:

    查看集群/角色/节点的详细信息。

    1. tiops display -c mai

    参数说明:

    1. -c | --cluster_name cluster_name 必选参数,集群名称
    2. -r | --role role 可选参数,按照 TiDB 服务的角色类型,分别启动,取值:"pd", "tikv", "pump", "tidb", "drainer", "monitoring", "monitored", "grafana", "alertmanager"
    3. -n | --node-id node_id 可选参数,根据节点 ID 启动服务,节点 ID 可通过 display 命令获得
    4. --status 可选参数,输出节点状态详细信息

    输出说明:

    当设置 --status 参数时,会输出 TiDB 各个组件当前的简单状态信息,

    1. TiDB cluster mai, version 3.0.9
    2. Node list:
    3. ID Role Host Ports Status Data Dir Deploy Dir
    4. f5961fad Monitoring 10.9.1.1 9090/9091 - /home/tidb/data/mai/monitoring-f5961fad /home/tidb/deploy/mai/monitoring-f5961fad
    5. eb57cedb PD 10.9.1.1 2379/2380 Health /home/tidb/data/mai/pd-eb57cedb /home/tidb/deploy/mai/pd-eb57cedb
    6. hb6289b2 PD 10.9.1.2 2379/2380 Health|L /home/tidb/data/mai/pd-hb6289b2 /home/tidb/deploy/mai/pd-hb6289b2
    7. dd25d798 PD 10.9.1.3 2379/2380 Health /home/tidb/data/mai/pd-dd25d798 /home/tidb/deploy/mai/pd-dd25d798
    8. dded5656 TiDB 10.9.1.1 4000/10080 Up - /home/tidb/deploy/mai/tidb-dded5656
    9. dedfd1cb TiDB 10.9.1.2 4000/10080 Up - /home/tidb/deploy/mai/tidb-dedfd1cb
    10. jbab8302 Monitored 10.9.1.1 9100/9115 - - /home/tidb/deploy/mai/monitored-jbab8302
    11. db46f98f Monitored 10.9.1.2 9100/9115 - - /home/tidb/deploy/mai/monitored-db46f98f
    12. h1f9fce0 Monitored 10.9.1.3 9100/9115 - - /home/tidb/deploy/mai/monitored-h1f9fce0
    13. g0418cd7 TiKV 10.9.1.1 20160/20180 Up /home/tidb/data/mai/tikv-g0418cd7 /home/tidb/deploy/mai/tikv-g0418cd7
    14. c7e55608 TiKV 10.9.1.2 20160/20180 Up /home/tidb/data/mai/tikv-c7e55608 /home/tidb/deploy/mai/tikv-c7e55608
    15. hf2c6bb4 TiKV 10.9.1.3 20160/20180 Up /home/tidb/data/mai/tikv-hf2c6bb4 /home/tidb/deploy/mai/tikv-hf2c6bb4
    16. i701ff8d Grafana 10.9.1.1 3000 - - /home/tidb/deploy/mai/grafana-i701ff8d

    它的一些状态含义解释如下:

    1. TiDB:它的值有 Up/Down
    2. PD 健康状态:它的值有 Health/Unhealth,如果 PD 的状态接口请求失败则为 Down; 其中,PD Leader 会在状态后标记 L
    3. TiKV Store 状态:它的值有 Up/Offline/Tombstone 等,如果 TiKV 的状态接口请求失败则为 Down
    4. Pump Node 状态:如果 Pump 的状态接口请求失败则为 Down
    5. Drainer Node 状态,如果 Drainer 的状态接口请求失败则为 Down

    若 Status 列显示为 - ,则表示该组件尚不支持实时状态显示。

    5.11 查看 TiOps 版本信息

    命令:

    1. tiops version

    显示 TiOps 命令行工具的版本号。

    5.12 quickdeploy

    命令:

    快速部署一个集群。

    1. tiops quickdeploy -c mai -d tidb -H 10.9.1.1,10.9.1.2,10.9.1.3 -T topology.yaml

    参数说明:

    6.其他