当前位置: 代码迷 >> 综合 >> Doris decommission be节点卡住
  详细解决方案

Doris decommission be节点卡住

热度:80   发布时间:2023-11-28 01:09:35.0

问题

在Doris 0.13.15 预编译版本中

Doris decommission三个 be节点卡住

alter system decommission backend "be_host-1:9050"
alter system decommission backend "be_host-2:9050"
alter system decommission backend "be_host-3:9050"

卡住
在这里插入图片描述

分析

查看源码,需要调整catalog_trash_expire_second参数
其余参数可以查看《Doris FE配置中文描述》
这个参数的意义在于提供了一个保护机制,删除数据库(表/分区)后,可以在这个catalog_trash_expire_second时间内使用 RECOVER stmt 恢复它。
此参数指定了最大数据保留时间。 一段时间后,数据将被永久删除

这个是保护用的,怕有人删除了数据后悔来不及恢复数据
所以
因为有人删除了表的原因,导致由于一些表的分区被删除了,但是还在回收区导致的be decommission卡死

源码分析

在这里插入图片描述
在这里插入图片描述

erasePartition()方法中的isExpire()里就是通过这个参数进行判断是否可以删除分区,当然他必须大于一个最小的删除延迟时间minEraseLatency(10min)

解决

将参数
catalog_trash_expire_second(默认值86400,1天)
设置小点,等待待回收的分区数据过期后,decommission即可完毕

后续问题

将参数调整小后,下线的三个节点中,有2个已经下线成功,但是还有一个be节点卡在了剩余tablet 为2个的状态
在这里插入图片描述

解决办法

CANCEL DECOMMISSION BACKEND "be_host-1:9050";

等待show proc ‘/statistic’;中不健康的tablet降为0后再次下线,当然你也可以尝试 不用等待不健康tablet降为0后执行执行下线命令

alter system decommission backend "be_host-1:9050"