问题
在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"