TiDB·常见问题·Kubernetes 上的 TiDB 集群常见异常

旗开得胜夜 2022-03-17 12:02:18

本文介绍 TiDB 集群运行过程中常见异常以及处理办法。

TiKV Store 异常进入 Tombstone 状态

正常情况下,当 TiKV Pod 处于健康状态时(Pod 状态为 Running),对应的 TiKV Store 状态也是健康的(Store 状态为 UP)。但并发进行 TiKV 组件的扩容和缩容可能会导致部分 TiKV Store 异常并进入 Tombstone 状态。此时,可以按照以下步骤进行修复:

  1. 查看 TiKV Store 状态:

    Copy
    kubectl get -n ${namespace} tidbcluster ${cluster_name} -ojson | jq '.status.tikv.stores'
  2. 查看 TiKV Pod 运行状态:

    Copy
    kubectl get -n ${namespace} po -l app.kubernetes.io/component=tikv
  3. 对比 Store 状态与 Pod 运行状态。假如某个 TiKV Pod 所对应的 Store 处于 Offline 状态,则表明该 Pod 的 Store 正在异常下线中。此时,可以通过下面的命令取消下线进程,进行恢复:

    1. 打开到 PD 服务的连接:

      Copy
      kubectl port-forward -n ${namespace} svc/${cluster_name}-pd ${local_port}:2379 &>/tmp/portforward-pd.log &
    2. 上线对应 Store:

      Copy
      curl -X POST http://127.0.0.1:2379/pd/api/v1/store/${store_id}/state?state=Up
  4. 假如某个 TiKV Pod 所对应的 lastHeartbeatTime 最新的 Store 处于 Tombstone 状态 ,则表明异常下线已经完成。此时,需要重建 Pod 并绑定新的 PV 进行恢复:

    1. 将该 Store 对应 PV 的 reclaimPolicy 调整为 Delete

      Copy
      kubectl patch $(kubectl get pv -l app.kubernetes.io/instance=${cluster_name},tidb.pingcap.com/store-id=${store_id} -o name) -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}
    2. 删除 Pod 使用的 PVC:

      Copy
      kubectl delete -n ${namespace} pvc tikv-${pod_name} --wait=false
    3. 删除 Pod,等待 Pod 重建:

      Copy
      kubectl delete -n ${namespace} pod ${pod_name}

    Pod 重建后,会以在集群中注册一个新的 Store,恢复完成。

·····

关于正方面的内容,如果想了解更多的话,我整理了一下,大家可以看看这个:https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/exceptions 

...全文
233 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-云原生 发布问题, 以便更快地解决您的疑问

87

社区成员

发帖
与我相关
我的任务
社区描述
Tidb开发者
其他 企业社区
社区管理员
  • csdnsqst0014
  • kikokingzz
  • karina17
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

社区初立,为了鼓励小友们在社区中积极互动,现在有一个活动如下:

试试用AI创作助手写篇文章吧