# 在线缩容（TiFlash）

__*TiDB 在线缩容*__
__*TiFlash 在线缩容*__

+ 第一步:根据 TiFlash 剩余节点数调整数据表的副本数
  + `alter table <db-name>.<table-name> set tiflash replica 0;`

+ 第二步:确认表的副本已经被删除
  + `SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = '<db_name>' and TABLE_NAME = '<table_name>'`

+ 第三步:查看节点 ID 信息
  + `tiup cluster display <cluster-name>`

+ 第四步:通过 TiUP 缩容 TiFlash 节点
  + `tiup cluster scale-in <cluster-name> --node <node-IP>:<node-Port>`

+ 第五步:检查集群状态
  + `tiup cluster display <cluster-name>`

-------------------------------------------------------------

移除 TiFlash 的时候需要确保 TiFlash 集群剩余节点数大于等于所有数据表的最大副本数,否则需要修改相关表的 TiFlash 副本数。也就是需要清理掉待移除的 TiFlash 上的副本。假设我们需移除一个 IP 地址为 10.0.1.4 的一个 TiFlash 节点。

第一步:根据 TiFlash 剩余节点数调整数据表的副本数
alter table <db-name>.<table-name> set tiflash replica 0;
这一步操作的目的是将表在将要移除的 TiFlash 节点上的副本清理掉。

第二步:确认表的副本确实被删除
SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = '<db_name>' and TABLE_NAME = '<table_name>'
在结果集中找不到相关表说明副本被删除。

第三步:查看节点 ID 信息
tiup cluster display <cluster-name>
根据输出结果,确认要移除的节点。

第四步:通过 TiUP 缩容 TiFlash 节点
tiup cluster scale-in <cluster-name> --node <node-IP>:<node-Port>
其中 --node 参数为需要下线节点的 ID。
预期输出 Scaled cluster <cluster-name> in successfully 信息,表示缩容操作成功。

第五步:检查集群状态
执行如下命令检查节点是否下线成功:
tiup cluster display <cluster-name>

请参考文档:https://docs.pingcap.com/zh/tidb/stable/scale-tidb-using-tiup



