TiDB扩容与缩容
TiDB扩容与缩容 来源: https://www.ucloud.cn/yun/130143.html 作者: IT那活儿 发布日期: 发布于2023 01 11 13:20 TiDB扩容与缩容 使用TiDB Ansible 扩容缩容TiDB 集群,可以在不影响线上服务的情况下进行扩容和缩容。本文带大家走进TiDB的扩
来源: https://www.ucloud.cn/yun/130143.html 作者: IT那活儿 发布日期: 发布于2023-01-11 13:20
TiDB扩容与缩容
使用TiDB Ansible 扩容缩容TiDB 集群,可以在不影响线上服务的情况下进行扩容和缩容。本文带大家走进TiDB的扩缩容场景实验。
当前tidb拓扑结构如下:
| Name | Host ip | Service |
| Ti1 | 192.168.37.132 | Tidb,pd |
| Ti2 | 192.168.37.128 | Tikv1 |
| Ti3 | 192.168.37.129 | Tikv2 |
| Ti4 | 192.168.37.130 | Tikv3 |
[
扩容
]
1、扩容tidb/tikv(可使用同样的步骤添加 TiKV 节点,tikv不演示)扩容tidb节点(IP:192.168.37.131)
- 编辑 inventory.ini 文件,添加节点信息:

- 初始化新增节点:
ansible-playbookbootstrap.yml -l 192.168.37.131
- 部署新增节点:
ansible-playbookdeploy.yml -l 192.168.37.131
- 启动新节点服务:
ansible-playbookstart.yml -l 192.168.37.131
- 更新 Prometheus 配置并重启:
ansible-playbookrolling_update_monitor.yml --tags=prometheus
- 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

可以看到新扩容tidb节点已添加到tidb集群,tidb扩容成功。
2、扩容pd
- 编辑 inventory.ini 文件,添加节点信息:
本次添加pd节点(192.168.37.133)

- 初始化新增节点:
ansible-playbookbootstrap.yml -l 192.168.37.133
- 部署新增节点:
ansible-playbookdeploy.yml -l 192.168.37.133
- 登录新增的 PD 节点,编辑启动脚本:{deploy_dir}/scripts/run_pd.sh
D1:移除--initial-cluster="xxxx" 配置,注意这里不能在行开头加注释符#。
D2:添加 --join="http://192.168.37.132:2379" ,IP地址(192.168.37.132)可以是集群内现有PD IP 地址中的任意一个。

D3: 在新增PD 节点中手动启动PD 服务:
{deploy_dir}/scripts/start_pd.sh
D4: 使用pd-ctl 检查新节点是否添加成功:
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d member

可以看到pd节点已添加pd集群里面。
- 滚动升级整个集群(耗时很长,按照我的机器配置添加一个节点,需要10分钟左右):
ansible-playbookrolling_update.yml
- 启动监控服务:
ansible-playbookstart.yml -l 192.168.37.133
- 更新 Prometheus 配置并重启:
ansible-playbookrolling_update_monitor.yml --tags=prometheus
- 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

从监控面班可以看到,pd已扩容成功。
[
缩容
]
1、缩容tidb
移除tidb节点(192.168.37.131)
- 停止节点上的服务
ansible-playbookstop.yml -l 192.168.37.131
- 编辑 inventory.ini 文件,移除节点信息(这两个位置)

- 更新 Prometheus 配置并重启:
ansible-playbookrolling_update_monitor.yml --tags=prometheus
- 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

192.168.37.131节点信息已没有了,缩容成功。
2、缩容tikv
缩容tikv(192.168.37.131)
- 使用 pd-ctl 从集群中移除节点
A1:查看192.168.37.131节点的store id
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d store (通过pdip接口)

A2:从集群中移除192.168.37.131节点
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d store delete 1

- 使用 Grafana 或者 pd-ctl 检查节点是否下线成功
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d store delete 1

- 下线成功后,停止节点(192.168.37.131)上的服务
ansible-playbookstop.yml -l 192.168.37.131
- 编辑 inventory.ini 文件,移除节点信息
注释掉要缩容的tikv节点

- 更新 Prometheus 配置并重启
ansible-playbookrolling_update_monitor.yml --tags=prometheus
- 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

查看监控列表发现192.168.37.131已缩容。
3、缩容pd
缩容pd(192.168.37.133)
- 使用 pd-ctl 从集群中移除节点
A1:查看node2 节点的name
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d member

A2:从集群中移除node2,假如name 为pd2
/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d member delete namepd_ti5

- 使用 pd-ctl 检查节点是否下线成功(PD 下线会很快,结果中没有192.168.37.133节点信息即为下线成功)
/home/tidb/tidb-ansible/resources/bin/pd-ctl -u"http://192.168.37.132:2379" -d member

- 下线成功后,停止192.168.37.133上的服务
ansible-playbook stop.yml -l 192.168.37.133
- 编辑 inventory.ini 文件,移除节点信息
把192.168.37.133注释掉

- 滚动升级整个集群
ansible-playbookrolling_update.yml
- 更新 Prometheus 配置并重启
ansible-playbookrolling_update_monitor.yml --tags=prometheus
- 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

192.168.37.133的PD已缩容。