TiDB扩容与缩容

AI 摘要 / TL;DR

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拓扑结构如下:

NameHost ipService
Ti1192.168.37.132Tidb,pd
Ti2192.168.37.128Tikv1
Ti3192.168.37.129Tikv2
Ti4192.168.37.130Tikv3

[

扩容

]

1、扩容tidb/tikv(可使用同样的步骤添加 TiKV 节点,tikv不演示)扩容tidb节点(IP:192.168.37.131)

  1. 编辑 inventory.ini 文件,添加节点信息:

  1. 初始化新增节点:

ansible-playbookbootstrap.yml -l 192.168.37.131

  1. 部署新增节点:

ansible-playbookdeploy.yml -l 192.168.37.131

  1. 启动新节点服务:

ansible-playbookstart.yml -l  192.168.37.131

  1. 更新 Prometheus 配置并重启:

ansible-playbookrolling_update_monitor.yml --tags=prometheus

  1. 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

可以看到新扩容tidb节点已添加到tidb集群,tidb扩容成功。

2、扩容pd

  1. 编辑 inventory.ini 文件,添加节点信息:

本次添加pd节点(192.168.37.133)

  1. 初始化新增节点:

ansible-playbookbootstrap.yml -l 192.168.37.133

  1. 部署新增节点:

ansible-playbookdeploy.yml -l 192.168.37.133

  1. 登录新增的 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集群里面。

  1. 滚动升级整个集群(耗时很长,按照我的机器配置添加一个节点,需要10分钟左右):

ansible-playbookrolling_update.yml

  1. 启动监控服务:

ansible-playbookstart.yml -l 192.168.37.133

  1. 更新 Prometheus 配置并重启:

ansible-playbookrolling_update_monitor.yml --tags=prometheus

  1. 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

从监控面班可以看到,pd已扩容成功。

[

缩容

]

1、缩容tidb

移除tidb节点(192.168.37.131)

  1. 停止节点上的服务

ansible-playbookstop.yml -l 192.168.37.131

  1. 编辑 inventory.ini 文件,移除节点信息(这两个位置)

  1. 更新 Prometheus 配置并重启:

ansible-playbookrolling_update_monitor.yml --tags=prometheus

  1. 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

192.168.37.131节点信息已没有了,缩容成功。

2、缩容tikv

缩容tikv(192.168.37.131)

  1. 使用 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

  1. 使用 Grafana 或者 pd-ctl 检查节点是否下线成功

/home/tidb/tidb-ansible/resources/bin/pd-ctl-u "http://192.168.37.132:2379" -d store delete 1

  1. 下线成功后,停止节点(192.168.37.131)上的服务

ansible-playbookstop.yml -l 192.168.37.131

  1. 编辑 inventory.ini 文件,移除节点信息

注释掉要缩容的tikv节点

  1. 更新 Prometheus 配置并重启

ansible-playbookrolling_update_monitor.yml --tags=prometheus

  1. 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

查看监控列表发现192.168.37.131已缩容。

3、缩容pd

缩容pd(192.168.37.133)

  1. 使用 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

  1. 使用 pd-ctl 检查节点是否下线成功(PD 下线会很快,结果中没有192.168.37.133节点信息即为下线成功)

/home/tidb/tidb-ansible/resources/bin/pd-ctl -u"http://192.168.37.132:2379" -d member

  1. 下线成功后,停止192.168.37.133上的服务

ansible-playbook stop.yml -l 192.168.37.133

  1. 编辑 inventory.ini 文件,移除节点信息

把192.168.37.133注释掉

  1. 滚动升级整个集群

ansible-playbookrolling_update.yml

  1. 更新 Prometheus 配置并重启

ansible-playbookrolling_update_monitor.yml --tags=prometheus

  1. 打开浏览器访问监控平台:http://192.168.37.132:3000,监控整个集群和新增节点的状态

192.168.37.133的PD已缩容。