tidb-in-action

1.3.2 基于 TiDB Operator 的集群扩缩容

本节介绍如何对基于 TiDB Operator 部署的 TiDB 集群进行水平和垂直扩缩容。

1. 环境准备

2. 水平扩缩容

水平扩缩容原理

TiDB 集群水平扩缩容操作指的是通过增加或减少节点的数量,来达到集群扩缩容的目的。扩缩容 TiDB 集群时,会按照填入的 replicas 值,对 PD、TiKV、TiDB 进行顺序扩缩容操作。扩容操作按照节点编号由小到大增加节点,缩容操作按照节点编号由大到小删除节点。

水平扩缩容操作步骤

(1) 修改集群的 value.yaml 文件中的 pd.replicastidb.replicastikv.replicas 至期望值(本例中为 3、3、4)。

(2) 执行 helm upgrade 命令进行扩缩容:

```shell
# helm upgrade test /home/charts/tidb-cluster -f /home/charts/tidb-cluster/values.yaml
Release "test" has been upgraded. Happy Helming!
LAST DEPLOYED: Sun Mar  8 15:39:57 2020
NAMESPACE: dba-test
STATUS: DEPLOYED
```

(3) 查看集群水平扩缩容状态:

```shell
# watch kubectl get po -n dba-test
```

当所有组件的 Pod 数量都达到了预设值(本例中为 3 个 PD 节点、3 个 TiDB 节点、4 个 TiKV 节点),并且都进入  `Running` 状态后,水平扩缩容完成。

```shell
NAME                              READY   STATUS    RESTARTS   AGE
test-discovery-668b48577c-zw4jh   1/1     Running   0          116m
test-monitor-86797cd996-9ggfh     3/3     Running   0          116m
test-pd-0                         1/1     Running   0          116m
test-pd-1                         1/1     Running   0          116m
test-pd-2                         1/1     Running   1          116m
test-tidb-0                       2/2     Running   0          112m
test-tidb-1                       2/2     Running   0          112m
test-tidb-2                       2/2     Running   0          2m52s
test-tikv-0                       1/1     Running   0          114m
test-tikv-1                       1/1     Running   0          114m
test-tikv-2                       1/1     Running   0          114m
test-tikv-3                       1/1     Running   0          2m52s
```

注意:

3. 垂直扩缩容

垂直扩缩容原理

垂直扩缩容操作指的是通过增加或减少节点的资源限制,来达到集群扩缩容的目的。垂直扩缩容本质上是按照节点编号由大到小的顺序,滚动升级节点的过程。

垂直扩缩容操作步骤

(1) 修改 values.yaml 文件中的 tidb.resourcestikv.resourcespd.resources 至期望值。

(2) 执行 helm upgrade 命令进行升级:

```shell
# helm upgrade test /home/charts/tidb-cluster -f /home/charts/tidb-cluster/values.yaml
Release "test" has been upgraded. Happy Helming!
LAST DEPLOYED: Sun Mar  8 15:57:03 2020
NAMESPACE: dba-test
STATUS: DEPLOYED
```

(3) 查看升级进度:

```shell
# watch kubectl -n <namespace> get pod -o wide
```

当所有 Pod 都重建完毕进入 `Running` 状态后,垂直扩缩容完成。

注意: