一、tiflash缩容前准备
1.在 TiDB 客户端中针对所有副本数大于集群剩余 TiFlash 节点数的表执行
比如只有一个tiflush节点,并且要缩容
alter table <db-name>.<table-name> set tiflash replica 0;
2.查看副本情况
select * from information_schema.tiflash_replica;
如果为空则副本删除完全
二、缩容操作
1.通过scale-in缩容
1.1.执行缩容
tiup cluster scale-in <cluster-name> -N <tidb节点>
2.通过ctl手动缩容
2.1 查询tiflash节点对应的store-id
tiup ctl pd -u <pd-address> store
如下图所示,选择value为tiflash的ID
2.2 执行缩容操作
tiup ctl pd -u <pd-address> store delete 12043
2.3 等待该 TiFlash 节点对应的 store 消失或者 state_name 变成 Tombstone 再关闭 TiFlash 进程
三、错误情况及解决
1.缩容不成功
原因:
可能是没有删除副本,或者没有完全删除副本,或者玄学原因,此时已经不能通过tiflash_replica查看同步副本是否已经完全删除
此时可以通过--force强制缩容
tiup cluster scale-in <cluster-name> -N <tidb节点> --force
此时可以正常缩容,但是再次进行扩容的时候会发现tiflash出现如下状态
2.解决方法
2.1 需要通过如下方式查看
curl http://<pd-ip:pd-port>/pd/api/v1/config/rules/group/tiflash
2.2 有内容的话啊我们需要删除
curl -v -X DELETE http://<pd_ip>:<pd_port>/pd/api/v1/config/rule/tiflash/table-200-r(table-200-r是通过上一条命令查看出来的)
然后便可以重新扩容了
官网链接:https://docs.pingcap.com/zh/tidb/stable/scale-tidb-using-tiup#使用-tiup-扩容缩容-tidb-集群