【TiDB 使用环境】生产环境
【TiDB 版本】v7.1.1
【操作系统】linux
【部署方式】 物理机 64c+250G
【集群数据量】8台服务器
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】中控机及中控机上的tikv节点整个文件系统出问题,如何恢复?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】
机房第三方承包的,那边反馈没法恢复,最后选择了重装系统。数据全丢了,由于中控机在上面,无法操作扩缩容命令。有啥办法恢复?
参照这个操作一下。
仅供参考:
如何从PD恢复TiUP所需的拓扑文件
在TiDB集群中,PD(Placement Driver)作为集群的元数据管理和调度中心,存储了集群的拓扑信息。当您需要从现有集群恢复TiUP所需的拓扑文件(topology.yaml)时,可以通过以下步骤从PD中提取信息并重建拓扑文件。
PD与TiUP的关系
TiUP是TiDB的集群管理工具,负责部署、配置和维护TiDB集群。TiUP使用YAML格式的拓扑文件(topology.yaml)作为集群结构的权威配置蓝图,定义了集群中各组件的部署位置、配置和资源分配。而PD作为TiDB集群的调度中心,存储了集群的实时状态信息,包括各组件的地址、状态和配置。TiUP依赖PD提供的调度信息来确定组件(如TiKV和TiFlash)的运行状态。
从PD提取集群信息的步骤
1. 获取集群组件信息
首先,使用PD Control工具连接到PD并获取集群组件信息:
# 连接到PD
tiup ctl:v<CLUSTER_VERSION> pd -u http://<pd_ip>:<pd_port>
# 在PD Control中执行以下命令
>> store
>> member
>> config show
这些命令将显示TiKV存储节点、PD成员节点以及当前的PD配置信息。
2. 获取TiDB节点信息
可以通过查询TiDB的系统表获取TiDB节点信息:
SELECT * FROM information_schema.CLUSTER_INFO;
或者通过PD的API获取:
curl http://<pd_ip>:<pd_port>/pd/api/v1/stores
curl http://<pd_ip>:<pd_port>/pd/api/v1/members
3. 收集配置文件信息
使用Diag Client工具收集各组件的配置文件:
tiup diag collect --include=config <cluster-name>
这将收集所有组件的配置文件,包括PD、TiDB、TiKV等。
4. 提取拓扑关系
通过PD的API获取集群的拓扑关系:
curl http://<pd_ip>:<pd_port>/pd/api/v1/config/replicate
这将显示复制配置,包括副本数量和位置标签等信息。
构建TiUP拓扑文件
1. 生成基础拓扑模板
首先生成一个基础的拓扑模板:
tiup cluster template > topology.yaml
2. 根据收集的信息填充拓扑文件
编辑生成的topology.yaml文件,根据从PD和其他组件收集的信息填充以下部分:
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb-deploy" # 从收集的配置中获取
data_dir: "/tidb-data" # 从收集的配置中获取
pd_servers:
- host: 10.0.1.4 # PD节点IP,从member信息获取
- host: 10.0.1.5
- host: 10.0.1.6
tidb_servers:
- host: 10.0.1.1 # TiDB节点IP,从CLUSTER_INFO获取
- host: 10.0.1.2
- host: 10.0.1.3
tikv_servers:
- host: 10.0.1.7 # TiKV节点IP,从store信息获取
- host: 10.0.1.8
- host: 10.0.1.9
# 如果有TiFlash节点
tiflash_servers:
- host: 10.0.1.10
# 监控相关配置
monitoring_servers:
- host: 10.0.1.11
grafana_servers:
- host: 10.0.1.11
alertmanager_servers:
- host: 10.0.1.11
3. 添加组件特定配置
根据收集的配置信息,添加组件特定的配置:
server_configs:
pd:
replication.location-labels: ["zone","dc","rack","host"] # 从PD配置获取
replication.max-replicas: 3 # 从PD配置获取
tikv:
server.grpc-compression-type: "none" # 从TiKV配置获取
tidb:
log.slow-threshold: 300 # 从TiDB配置获取
验证拓扑文件
使用TiUP验证拓扑文件的正确性:
tiup cluster check topology.yaml
官方工具支持
目前,TiDB官方没有提供直接从PD恢复拓扑文件的工具。PD Recover工具主要用于恢复PD集群本身,而不是重建TiUP拓扑文件。重建拓扑文件需要手动收集信息并构建。
最佳实践建议
- 定期备份拓扑文件:在部署或修改集群后,保存最新的拓扑文件。
- 使用版本控制:将拓扑文件纳入版本控制系统,记录每次变更。
- 记录集群变更:每次使用
tiup cluster scale-out
或scale-in
时,更新拓扑文件副本。 - 使用TiUP显示命令:通过
tiup cluster display <cluster-name>
查看当前集群状态,辅助重建拓扑文件。
注意事项
- 重建的拓扑文件可能无法包含所有原始部署时的自定义配置,特别是一些非默认参数。
- 对于PD微服务模式(如TSO、Scheduling服务),需要特别注意配置
pd_mode: "ms"
参数。 - 重建的拓扑文件主要用于集群管理,不应用于重新部署现有集群,以避免数据丢失。
多谢多谢
好的,多谢
搞定后做个定期备份到异地机房吧。
https://docs.pingcap.com/zh/tidb/stable/tiup-component-cluster-meta-backup/#tiup-cluster-meta-backup
或者
https://docs.pingcap.com/zh/tidb/stable/tiup-cluster/#迁移中控机与备份
好的好的
生产中控机最好装2个,装一个后tar到另外一个机器上
已经搞定,感谢各位指导!
感谢tidb售后朱文轩同学指导!
大致恢复过程我写一下。
- 手动安装同版本的tiup工具。
- 在/home/tidb/.tiup/storage/cluster/clusters/tidb集群名/路径下,生成一份meta.yaml文件,这个要和原来的配置文件保持一致。
- 将meta.yaml文件里对应有问题节点配置注释掉,不然会报端口冲突。
- 检查集群存在的潜在风险,执行tiup cluster check scale-out.yml --cluster --user tidb。
- 执行扩容命令:tiup cluster scale-out scale-out.yml
好的,吃一堑,长一智,多谢!
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。