Doris缩容BE节点遇到的坑

使用doris 1.2.4,扩容一点节点后,状态看起来正常,但查询doris时时不时报下面错误:

1105 - RpcException, msg: org.apache.doris.rpc.RpcException: (10.0.60.202)[THRIFT_RPC_ERROR]failed to send brpc batch, error=Host is down, error_text=[E112]Not connected to 10.0.20.102:8060 yet, server_id=34359741324 [R1][E112]Not connected to 10.0.0.2:8060 yet, server_id=34359741324 [R2][E112]Not connected to 10.0.0.2:8060 yet, server_id=34359741324 [R3][E112]Not connected to 10.0.0.2:8060 yet, server_id=34359741324 [R4][E112]Not connected to 10.0.0.2:8060 yet, server_id=34359741324 [R5][E112]Not con

由于不知怎样解决,又是线上环境,赶紧对扩容的节点进行缩容。

由于扩容后的新节点有数据了,要安全缩容,要使用下面的命令

 ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 

如果是下线2个节点:

ALTER SYSTEM DECOMMISSION BACKEND "host1:port", "host2:port";

DECOMMISSION 命令说明:

1、该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。
2、该命令是一个异步操作。执行后,可以通过 SHOW PROC ‘/backends’; 看到该 BE 节点的 SystemDecommissioned 状态为 true。表示该节点正在进行下线。
3、该命令不一定执行成功。比如剩余 BE 存储空间不足以容纳下线 BE 上的数据,或者剩余机器数量不满足最小副本数时,该命令都无法完成,并且 BE 会一直处于 SystemDecommissioned 为 true 的状态。
4、DECOMMISSION 的进度,可以通过 SHOW PROC ‘/backends’; 中的 TabletNum 查看,如果正在进行,TabletNum 将不断减少。
该操作可以通过:
5、CANCEL DECOMMISSION BACKEND “be_host:be_heartbeat_service_port”;
命令取消。取消后,该 BE 上的数据将维持当前剩余的数据量。后续 Doris 重新进行负载均衡。

没想到用了十几个小时, TabletNum 还没有变0,生产系统又需要使用了。

可以看重要表数据副本是否迁移完成。

ADMIN SHOW REPLICA DISTRIBUTION FROM  数据库名.表名

如果大部分表已经迁移完成,doris数据库是多副本,只有1个副本没迁移完成,这时可以考虑强制下线be端。手动修复数据。

#强制缩容
ALTER SYSTEM DROPP BACKEND "be_host:be_heartbeat_service_port"; 

手动修复表

ADMIN REPAIR TABLE  数据库名.表名

关注公众号“大模型全栈程序员”回复“大数据面试”获取800页左右大数据面试宝典 ,回复“大数据”获取多本大数据电子书

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注