意外情况 - 主控机程序丢失,.tiup 目录被删除并无法恢复

【版本】

tidb-4.0

【问题描述】

使用tiup安装的数据库, 因为某些原因主控机被意外格式化、或者主控机损坏,导致原有的tiup 工具丢失、不可恢复

【期望结果】

用新的一台主机,做为主控机并安装新的tiup工具, 如何让新的tiup工具管理原有旧的数据库集群

你好

确认下当前集群环境

  1. 该集群是否是 tidb-ansible 导入的。
  2. 目前是否有当前正在运行集群的完整 topology 文件,(完整指的是 display 可以看到的完整集群信息,非 deploy 使用的部署文件,如果期间没有进行过扩缩容,那两者等同),如果没有可否将其手动还原下。
  1. 该集群是否时 tidb-ansible 导入的。
    答: 是直接使用 tiup 安装的新集群

  2. 目前是否有当前正在运行集群的完整 topology 文件,(display 可以看到的完整集群信息),如果没有可否将其手动还原下。
    答: topology 文件已经丢失,并且没有备份, (如何手动还原 topology 文件这个不会呢)

这个意思是,手写一份完整的 topo 文件,和 deploy 时一样,譬如你有几个 tikv pd tidb tiflash 是否有 pump drainer cdc,之类的,参数类的可以先不写,最后可以根据 tidb.log 中的参数信息进行补齐,主要是节点信息和目录

这个是可以做到的,没有问题, 然后接下来我要怎么做呢

ok,感谢配合。

确认下当前环境是否为正式环境?

当前环境 非正式环境, 但也希望老师能给出 正式环境的解决方案, 只怕万一正式环境出问题束手无策,感谢老师

嗯,ok,

明确下本次恢复的目的,是恢复 .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 等参数的编写。
2 个赞

请问老师,是不是修改这个文件,把对应的(pd、kv、tidb)的文件都修改成其他的名字
image

赞,理解正确,是的。解释如下:

如果是ansible导入的,恢复教程不通用吗

目前没有测试过,meta 文件存储路径不同,可以尝试下,看用此方法是否可以对 tidb-ansible 导入的集群进行恢复。

好的,谢谢

ok,如果有测试,可以将步骤和问题整理下,回复下帖子,我们可以一起 review 。

需要将所有相关的二进制文件都做备份吗?
image

建议全部备份,.old 是升级后的旧的 binary,理论上不会被用到

直接对文件夹mv可以不?
image

额。简单测试下呗。mv 的目的上面写了。

pump节点已经下线了,需要把topology中相关的配置先去掉吗?
因为reload之后,pump实例都会重新上线

开新帖说明下你的情况吧