管理 BE 黑名单
本文介绍如何管理 BE 黑名单。
自 v3.3.0 起,StarRocks 支持 BE 黑名单功能,您可以使用该功能禁止在查询执行中使用某些 BE 节点,从而避免因与 BE 节点连接失败而导致的频繁查询失败或其他意外行为。
默认情况下,StarRocks 可以自动管理 BE 黑名单,将失去连接的 BE 节点添加到黑名单中,并在重新建立连接时将其从黑名单中删除。但是,如果 BE 节点是手动加入黑名单的,StarRocks 不会将其从黑名单中移除。
- 只有具有 SYSTEM 级别 BLACKLIST 权限的用户才能使用此功能。
- 每个 FE 节点都保留自己的 BE 黑名单,不会与其他 FE 节点共享。
将 BE 添加到黑名单
您可以使用 ADD BACKEND BLACKLIST 手动将 BE 节点添加到 BE 黑名单。在此语句中,您必须指定要加入黑名单的 BE 节点的 ID。您可以通过执行 SHOW BACKENDS 来获取 BE ID。
示例
-- Obtain BE ID.
SHOW BACKENDS\G
*************************** 1. row ***************************
BackendId: 10001
IP: xxx.xx.xx.xxx
...
-- Add BE to the blacklist.
ADD BACKEND BLACKLIST 10001;
从黑名单中删除 BE
您可以使用 DELETE BACKEND BLACKLIST 手动从 BE 黑名单中删除 BE 节点。在此语句中,您还必须指定 BE 节点的 ID。
示例
DELETE BACKEND BLACKLIST 10001;
查看 BE 黑名单
您可以使用 SHOW BACKEND BLACKLIST 查看 BE 黑名单中的 BE 节点。
示例
SHOW BACKEND BLACKLIST;
+-----------+------------------+---------------------+------------------------------+--------------------+
| BackendId | AddBlackListType | LostConnectionTime | LostConnectionNumberInPeriod | CheckTimePeriod(s) |
+-----------+------------------+---------------------+------------------------------+--------------------+
| 10001 | MANUAL | 2024-04-28 11:52:09 | 0 | 5 |
+-----------+------------------+---------------------+------------------------------+--------------------+
返回以下字段
AddBlackListType
:BE 节点添加到黑名单的方式。MANUAL
表示用户手动加入黑名单。AUTO
表示 StarRocks 自动加入黑名单。LostConnectionTime
:- 对于
MANUAL
类型,它表示 BE 节点手动添加到黑名单的时间。 - 对于
AUTO
类型,它表示上次成功建立连接的时间。
- 对于
LostConnectionNumberInPeriod
:在CheckTimePeriod(s)
内检测到的断开连接次数,这是 StarRocks 检查黑名单中 BE 节点的连接状态的间隔。CheckTimePeriod(s)
:StarRocks 检查黑名单 BE 节点连接状态的间隔。其值被评估为您为 FE 配置项black_host_history_sec
指定的值。单位:秒。
配置 BE 黑名单的自动管理
每次 BE 节点与 FE 节点失去连接,或查询因 BE 节点超时而失败时,FE 节点都会将 BE 节点添加到其 BE 黑名单中。 FE 节点将通过计算 BE 节点在一定时间内的连接失败次数来不断评估黑名单中 BE 节点的连接性。 仅当黑名单 BE 节点的连接失败次数低于预先指定的阈值时,StarRocks 才会将其从黑名单中删除。
您可以使用以下 FE 配置配置 BE 黑名单的自动管理
black_host_history_sec
:用于保留 BE 黑名单中 BE 节点的历史连接失败的时间段。black_host_connect_failures_within_time
:黑名单 BE 节点允许的连接失败阈值。
如果 BE 节点被自动添加到 BE 黑名单,StarRocks 将评估其连接性并判断是否可以将其从 BE 黑名单中删除。 在 black_host_history_sec
内,仅当黑名单 BE 节点的连接失败次数少于 black_host_connect_failures_within_time
中设置的阈值时,才能将其从 BE 黑名单中删除。