[FAQ] .tiup 等元信息被删除恢复办法

  • 明确下本次恢复的目的,是恢复 .tiup 中的元数据,此为管理集群的基础。有个这些元数据,新的 tiup 将会继续运维以前的集群

恢复步骤

  1. 手写一下最终的集群 topo 文件,
  2. 需要批量将 instance 级别的 bin/{instance}-server 文件 mv ,解释可看 [2]
  3. 根据 tiup 部署集群步骤,进行 deploy 操作,解释可看 [3]

[2] 因为使用已发布的 tiup 进行部署,需要覆盖 instance 级别的 binary 文件,但是对正在运行的服务没有影响,替换过程中可能出现 Text file busy 问题,所以需要手动将所有的 binary 文件都 mv 成 old,或者其他名字(mv tidb-server tidb-server_old),此步骤务必保证操作完全,避免 deploy 出现问题。否则需要重复 2 / 3 步骤。

[3] 由于当前 tiup 并没有集群的元信息,所以 deploy 不会出现目录端口冲突。deploy 会下载指定版本的 binary 文件并覆盖到原集群。(因为目前是非常规 deploy 所以覆盖是可以理解的正常操作,upgrade 会将 bin 目录进行备份)

注意事项

  1. deploy 时 version 要指定正确,需要相同版本
  2. 所有节点的 binary 文件需要 mv
  3. 保证 topology 文件的完整性,与最终集群节点一致。请注意 deploy-dir/data_dir/port/status_port 等参数的编写。

【后续】

  • 建议通过 fsync NFS 等方式备份 .tiup 集群的原信息目录。

【经典案例】

更新一种新的处理办法

思路

~/.tiup/storage/cluster/clusters 中保存了集群的元信息,下一层目录就是集群的名字,里面有较为重要的两个文件「meta.yaml」和「ssh」目录,meta yaml 是该集群的元信息,display 的展示结果;ssh 目录为 reload 等运维命令的连接公钥;如果将它们复制到任意中控机环境都是就可以更换中控机节点

PS:这个方法还可以用于合并 tiup 中控已节约服务器资源,达到统一管理的目的

环境

在 5.20 服务器恢复集群名字为 wearepingcaper 的 tiup 管理

准备工作

  1. 升级 tiup & tiup cluster

tiup update –self && tiup update cluster

  1. 重点:检查新的中控机对所有节点服务器通过 ssh 中的公钥是否有访问权限

    1. 否则需要手动做免密

第一步

在目标中控机创建与原集群名字相同的目录
ssh root@5.20
su - tidb
cd ~/.tiup/storage/cluster/clusters
mkdir wearepingcaper
mv /home/tidb/qh/wearepingcaper_topoloy.yaml ./meta

第三步

验证运维命令是否可用:

  • list
  • display
  • edit-config
  • reload -R grafana
2 个赞