tikv 一个节点10月16号因为磁盘问题挂了,一直没有发现,今天发现后磁盘问题解决了,然后启动这个节点日志一直在刷如下

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:3.0 tidb-ansible
  • 【问题描述】:tikv 一个节点10月16号因为磁盘问题挂了,一直没有发现,今天发现后磁盘问题解决了,然后启动这个节点日志一直在刷如下

从报错的情况看应该是落后了太多 raft log 日志无法,无法正常 apply 日志追上之前的数据了。

建议可以通过缩容并重新扩容的方式恢复这个节点。

好的
谢谢

缩容后,那个节点挂掉之前的备份数据需要删除后再扩容吗?
有丢数据的风险吗?

如果设置的副本是是 3 副本,且只有一个 tikv 节点异常的话,数据不会丢失的。

副本数量是PD节点的属性 max-replicas 这个吗?
我的tikv节点有3个 1个PD 一个tidb,

那应该没什么问题

噢,刚刚查看了 副本是3个, 就是缩容再扩容的时候,这个节点上原先的数据需要删除吗?不删除会不会导致均衡数据出错,或者之前的数据在缩容再扩容后就已经成为了垃圾数据,

先通过缩容下线 tikv 节点,看能够下线成功。下线完成之后,需要清理数据目录以及部署目录。之后再重新扩容节点。

https://docs.pingcap.com/zh/tidb/stable/scale-tidb-using-ansible#缩容-tikv-节点

副本数量 这个属性在哪里查看?

pd-ctl 执行 config show all ,max-replicas 设置的就是副本数量
https://docs.pingcap.com/zh/tidb/stable/pd-control/#下载安装包

现在我三个tikv节点根据提示 下线一个节点,但是那个tikv节点节点一直是Offline,查看别人的帖子说是三个tikv节点不能进行缩容,但是现在我已经执行了delete 节点命令,现在该怎么办

下线 store 的时候会在别的节点上补 region 副本出来,保持 region 副本数满足 max-replicas 设置。
因为默认 pd 不会将同一 region 的两个副本调度到同一个 TiKV 实例上。所以当三个 TiKV 节点的集群下线节点时,一直无法在别的 store 上创建出需要的副本。状态会一直卡在 offline 状态。

可以在缩容的机器上,更换部署及数据目录,并更换 TiKV 的端口地址(否则扩容的时候会报地址冲突)。直接扩容一个新的节点。扩容节点之后,旧节点可以强制缩容掉。

意思是我现在可以先不管卡在offline状态的tikv节点,先直接扩容,扩容之后再处理offline状态的tikv节点,
到时候旧节点如何强制缩容呢?

强制下线的话,可以

  1. 直接停止 TiKV 进程
  2. 将下线 store 的状态修改为 Tombstone:
    store_id 可以通过 pd-ctl 执行 store 命令得到
    curl -X POST 'http://{pd_ip}:{pd_port}/pd/api/v1/store/{store_id}/state?state=Tombstone'
  3. 删除缩容节点的数据目录

需要注意的是通过 api 方式修改节点状态强制下线是非常规手段,可以正常下线节点的情况下都应该通过正常下线流程进行下线节点。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。