一、故障下线tikv节点
例如,如果要移除一个 TiKV 节点(node9),IP 地址为 172.168.10.9,可以进行如下操作:
1、使用 pd-ctl 从集群中移除节点:
1)查看 node9 节点的 store id:/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.168.10.1:2379" -d store
2)从集群中移除 node9,假如 store id 为 10:/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.168.10.1:2379" -d store delete 10
2、使用 Grafana 或者 pd-ctl 检查节点是否下线成功(下线需要一定时间,下线节点的状态变为 Tombstone 就说明下线成功了):/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.168.10.1:2379" -d store 10
可以去监控平台http://172.168.10.3:3000 看leader为0,region数量为0,也是判断的标识。
3、下线成功后,停止 node9 上的服务:ansible-playbook stop.yml -l 172.168.10.9
4、编辑 inventory.ini 文件,移除节点信息:
[tikv_servers]
172.168.10.6
172.168.10.7
172.168.10.8
#172.168.10.9 # 注释被移除节点
[monitored_servers]
172.168.10.2
172.168.10.3
172.168.10.6
172.168.10.7
172.168.10.8
#172.168.10.9 # 注释被移除节点
5、更新 Prometheus 配置并重启:ansible-playbook rolling_update_monitor.yml --tags=prometheus
6、打开浏览器访问监控平台:http://172.168.10.3:3000,监控整个集群的状态,可以看到这个tikv节点已经不在界面里面了。
二、故障tikv节点上线
tikv节点修复后,因为是腾讯云修复的,sa给的是和故障之前一模一样的cvm,上面的应用软件以及环境都是一模一样的,包括ip地址以及其它各种配置都是一样的,但是因为tidb集群的分布式特性,这个tikv节点上的数据已经没有用了,所以需要卸载掉tikv应用,然后重新安装tikv节点,之后将tikv加入tidb集群,新的数据会自然而然打到这个tikv节点上面。
1、停止所有业务应用,情况原来的tidb的目录
停止tikv应用,ansible-playbook start.yml -l 172.168.10.9(这一步也许需要也许不需要执行)
清空tidb目录:rm -rf /data0/tidb
2、开始安装部署tikv节点
因为系统环境以及ssh都是保持原样的,所有基础配置都可以忽略,直接进入tikv安装部署环节:
ansible-playbook local_prepare.yml -l 172.168.10.9
ansible-playbook bootstrap.yml -l 172.168.10.9
ansible-playbook deploy.yml -l 172.168.10.9
ansible-playbook start.yml -l 172.168.10.9