【 TiDB 使用环境`】测试环境
【 TiDB 版本】5.4.1
- 故障描述:
测试站,使用了4台虚机,今天网络故障,被强制断电,集体宕机,其中有俩个TIKV,节点虚机直接报废无法启动。
测试环境没有备份只能硬着头皮去恢复测试数据。 - 原虚机各节点分布
192.168.1.110 tidb-server,ti-pd 瘫痪无法启动
192.168.1.111 tipd,监控,ti-pd 正常
192.168.1.112 tikv 瘫痪无法启动
192.168.1.113 tikv 正常
3.恢复过程
-
首先重建虚机使节点服务器正常开机启动
-
恢复过程发现因为网络故障,所有节点ip更换成10.1.1.0段,导致各tidb节点都宕机状态,尝试手动更换IP(修改tikv启动配置文件,修改tiup的meta.yaml等配置文件)启动异常不可行,尝试通过扩缩绒的方式恢复,失败。
-
最后果断重建一个干净的环境,启动一个新的集群。
-
启动集群后,把需要恢复的数据tikv-20160 挂进去,备份原来的(因为数据太大了20个G,我这里就直接挂云硬盘进去)
-
我扩容了一台TIKV,重启集群,PD 处于UP 状态,TIKV处于Disconnected,发现tikv报错 cluster ID 新旧不一致。
-
最后因为 cluster ID 不一致,搜索文档 https://docs.pingcap.com/zh/tidb/v5.4/pd-recover 根据文档去找旧的集群中的cluster ID 与 alloc-id
-
然后在新的集群中 PD Leader 尝试恢复,发现恢复 成功。
-
然后重启集群,tiup cluster restart tidb-test 查看tikv日志,tikv正常启动。新扩容的那台因为是空数据,不知道为什么没有起来。暂时先不管
-
测试数据库连接正常,可以查询插入数据,至此测试数据库算是找回来了。
- 总结
对tidb 一些深入的知识点还是不够熟悉,其次本次数据恢复是在测试环境,后面不太清楚是否有隐患,仅供参考,恢复数据前,一定要备份。