# 练习-1: 对 TiDB 集群进行扩容和缩容

## 练习目的
在本次练习中，我们对现有的 TiDB 数据库集群进行扩容操作（加入一个 TiKV 节点），之后进行缩容操作（减少一个 TiKV 节点）。

## 前提条件
+ 注意，您的实验环境（包括 IP，端口号，用户名，密码和目录）可能和手册不同。
+ 可以连接到实验用虚拟机。
+ TiDB 数据库之前部署完毕。

## 步骤
-----------------------------------------------
#### 1. 查询现有的数据库集群，查看 TiKV 节点数量：
```
 $ tiup cluster display tidb-test
```

-----------------------------------------------
#### 2. 编辑扩容文件
```
 $ vi scale-out-tikv.yaml
```
+ 添加以下内容，其中，加入 TiKV 节点 IP 地址为：172.31.0.250，端口号：20160。注意：您的环境可能和实验手册不同。
```
tikv_servers: 
- host: 172.31.0.250
ssh_port: 22
port: 20160
status_port: 20180
deploy_dir: /tidb-deploy/tikv-20160
data_dir: /tidb-data/tikv-20160
log_dir: /tidb-deploy/tikv-20160/log
```
-----------------------------------------------
#### 3. 执行以下命令，进行扩容操作:
```
 $ tiup cluster scale-out tidb-test scale-out-tikv.yaml -uroot -p
```

-----------------------------------------------
#### 4. 查看集群状态，发现新的 TiKV 节点已经加入:
```
 $ tiup cluster display tidb-test
```

-----------------------------------------------
#### 5. 扩容成功后，我们进行缩容操作
```
 $ tiup cluster scale-in tidb-test --node 172.31.0.250:20160
```

-----------------------------------------------
#### 6. 查询所容后的集群状态，发现执行缩容的节点 Status 已经变为 Tombstone，代表节点已经下线：
```
 $ tiup cluster display tidb-test
```

-----------------------------------------------
#### 7. 执行 tiup cluster prune tidb-test , 清理节点信息：
```
 $ tiup cluster prune tidb-test
```
-----------------------------------------------
#### 8. 查询集群状态，发现之前扩容的节点已经消失：
```
 $ tiup cluster display tidb-test
```


-----------------------------------------------
## 输出样例

-----------------------------------------------
#### 步骤 1 输出参考
```
 $ tiup cluster display tidb-test
tiup is checking updates for component cluster ...

Starting component `cluster`: /root/.tiup/components/cluster/v1.10.1/tiup-cluster display tidb-test
Cluster type:       tidb
Cluster name:       tidb-test
Cluster version:    v6.1.0
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://172.31.0.112:2379/dashboard
Grafana URL:        http://172.31.0.250:3000
ID                  Role          Host          Ports                            OS/Arch       Status  Data Dir                      Deploy Dir
--                  ----          ----          -----                            -------       ------  --------                      ----------
172.31.0.250:9093   alertmanager  172.31.0.250  9093/9094                        linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
172.31.0.250:3000   grafana       172.31.0.250  3000                             linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
172.31.0.112:2379   pd            172.31.0.112  2379/2380                        linux/x86_64  Up|UI   /tidb-data/pd-2379            /tidb-deploy/pd-2379
172.31.0.250:2379   pd            172.31.0.250  2379/2380                        linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
172.31.0.253:2379   pd            172.31.0.253  2379/2380                        linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
172.31.0.250:9090   prometheus    172.31.0.250  9090/12020                       linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
172.31.0.106:4000   tidb          172.31.0.106  4000/10080                       linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
172.31.0.45:9000    tiflash       172.31.0.45   9000/8123/3930/20170/20292/8234  linux/x86_64  Up      /tidb-data/tiflash-9000       /tidb-deploy/tiflash-9000
172.31.0.215:20160  tikv          172.31.0.215  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
172.31.0.34:20160   tikv          172.31.0.34   20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
172.31.0.85:20160   tikv          172.31.0.85   20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
Total nodes: 11
```


-----------------------------------------------
#### 步骤 4 输出参考
```
 $ tiup cluster display tidb-test
tiup is checking updates for component cluster ...
Starting component `cluster`: /root/.tiup/components/cluster/v1.10.2/tiup-cluster display tidb-test
Cluster type:       tidb
Cluster name:       tidb-test
Cluster version:    v6.1.0
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://172.31.0.112:2379/dashboard
Grafana URL:        http://172.31.0.250:3000
ID                  Role          Host          Ports                            OS/Arch       Status  Data Dir                              Deploy Dir
--                  ----          ----          -----                            -------       ------  --------                              ----------
172.31.0.250:9093   alertmanager  172.31.0.250  9093/9094                        linux/x86_64  Up      /tidb-data/alertmanager-9093          /tidb-deploy/alertmanager-9093
172.31.0.250:3000   grafana       172.31.0.250  3000                             linux/x86_64  Up      -                                     /tidb-deploy/grafana-3000
172.31.0.112:2379   pd            172.31.0.112  2379/2380                        linux/x86_64  Up|UI   /tidb-data/pd-2379                    /tidb-deploy/pd-2379
172.31.0.250:2379   pd            172.31.0.250  2379/2380                        linux/x86_64  Up|L    /tidb-data/pd-2379                    /tidb-deploy/pd-2379
172.31.0.253:2379   pd            172.31.0.253  2379/2380                        linux/x86_64  Up      /tidb-data/pd-2379                    /tidb-deploy/pd-2379
172.31.0.250:9090   prometheus    172.31.0.250  9090/12020                       linux/x86_64  Up      /tidb-data/prometheus-9090            /tidb-deploy/prometheus-9090
172.31.0.106:4000   tidb          172.31.0.106  4000/10080                       linux/x86_64  Up      -                                     /tidb-deploy/tidb-4000
172.31.0.45:9000    tiflash       172.31.0.45   9000/8123/3930/20170/20292/8234  linux/x86_64  Up      /tidb-data/tiflash-9000               /tidb-deploy/tiflash-9000
172.31.0.215:20160  tikv          172.31.0.215  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160                 /tidb-deploy/tikv-20160
172.31.0.250:20160  tikv          172.31.0.250  20160/20180                      linux/x86_64  Up      /data/deploy/install/data/tikv-20160  /data/deploy/install/deploy/tikv-20160
172.31.0.34:20160   tikv          172.31.0.34   20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160                 /tidb-deploy/tikv-20160
172.31.0.85:20160   tikv          172.31.0.85   20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160                 /tidb-deploy/tikv-20160
Total nodes: 12
```

-----------------------------------------------
#### 步骤 6 输出参考
```
 $ tiup cluster display tidb-test
tiup is checking updates for component cluster ...
Starting component `cluster`: /root/.tiup/components/cluster/v1.10.2/tiup-cluster display tidb-test
Cluster type:       tidb
Cluster name:       tidb-test
Cluster version:    v6.1.0
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://172.31.0.112:2379/dashboard
Grafana URL:        http://172.31.0.250:3000
ID                  Role          Host          Ports                            OS/Arch       Status     Data Dir                              Deploy Dir
--                  ----          ----          -----                            -------       ------     --------                              ----------
172.31.0.250:9093   alertmanager  172.31.0.250  9093/9094                        linux/x86_64  Up         /tidb-data/alertmanager-9093          /tidb-deploy/alertmanager-9093
172.31.0.250:3000   grafana       172.31.0.250  3000                             linux/x86_64  Up         -                                     /tidb-deploy/grafana-3000
172.31.0.112:2379   pd            172.31.0.112  2379/2380                        linux/x86_64  Up|UI      /tidb-data/pd-2379                    /tidb-deploy/pd-2379
172.31.0.250:2379   pd            172.31.0.250  2379/2380                        linux/x86_64  Up|L       /tidb-data/pd-2379                    /tidb-deploy/pd-2379
172.31.0.253:2379   pd            172.31.0.253  2379/2380                        linux/x86_64  Up         /tidb-data/pd-2379                    /tidb-deploy/pd-2379
172.31.0.250:9090   prometheus    172.31.0.250  9090/12020                       linux/x86_64  Up         /tidb-data/prometheus-9090            /tidb-deploy/prometheus-9090
172.31.0.106:4000   tidb          172.31.0.106  4000/10080                       linux/x86_64  Up         -                                     /tidb-deploy/tidb-4000
172.31.0.45:9000    tiflash       172.31.0.45   9000/8123/3930/20170/20292/8234  linux/x86_64  Up         /tidb-data/tiflash-9000               /tidb-deploy/tiflash-9000
172.31.0.215:20160  tikv          172.31.0.215  20160/20180                      linux/x86_64  Up         /tidb-data/tikv-20160                 /tidb-deploy/tikv-20160
172.31.0.250:20160  tikv          172.31.0.250  20160/20180                      linux/x86_64  Tombstone  /data/deploy/install/data/tikv-20160  /data/deploy/install/deploy/tikv-20160
172.31.0.34:20160   tikv          172.31.0.34   20160/20180                      linux/x86_64  Up         /tidb-data/tikv-20160                 /tidb-deploy/tikv-20160
172.31.0.85:20160   tikv          172.31.0.85   20160/20180                      linux/x86_64  Up         /tidb-data/tikv-20160                 /tidb-deploy/tikv-20160
Total nodes: 12
```

-----------------------------------------------
#### 步骤 8 输出参考
```
 $ tiup cluster display tidb-test
tiup is checking updates for component cluster ...
Starting component `cluster`: /root/.tiup/components/cluster/v1.10.2/tiup-cluster display tidb-test
Cluster type:       tidb
Cluster name:       tidb-test
Cluster version:    v6.1.0
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://172.31.0.112:2379/dashboard
Grafana URL:        http://172.31.0.250:3000
ID                  Role          Host          Ports                            OS/Arch       Status  Data Dir                      Deploy Dir
--                  ----          ----          -----                            -------       ------  --------                      ----------
172.31.0.250:9093   alertmanager  172.31.0.250  9093/9094                        linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
172.31.0.250:3000   grafana       172.31.0.250  3000                             linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
172.31.0.112:2379   pd            172.31.0.112  2379/2380                        linux/x86_64  Up|UI   /tidb-data/pd-2379            /tidb-deploy/pd-2379
172.31.0.250:2379   pd            172.31.0.250  2379/2380                        linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
172.31.0.253:2379   pd            172.31.0.253  2379/2380                        linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
172.31.0.250:9090   prometheus    172.31.0.250  9090/12020                       linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
172.31.0.106:4000   tidb          172.31.0.106  4000/10080                       linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
172.31.0.45:9000    tiflash       172.31.0.45   9000/8123/3930/20170/20292/8234  linux/x86_64  Up      /tidb-data/tiflash-9000       /tidb-deploy/tiflash-9000
172.31.0.215:20160  tikv          172.31.0.215  20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
172.31.0.34:20160   tikv          172.31.0.34   20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
172.31.0.85:20160   tikv          172.31.0.85   20160/20180                      linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
Total nodes: 11
```