跳到主要内容

Compute Group 管理:创建、授权与扩缩容

Compute Group(3.0.2 之前版本称为"计算集群/Compute Cluster")是存算分离架构下实现不同负载之间物理隔离的机制。一个或多个 BE 节点组成一个 Compute Group,多个 Compute Group 通过共享存储层访问同一份数据。

compute_group

核心特点

  • BE 节点本地无状态,数据存储在共享存储上
  • 多个 Compute Group 共享同一份数据,无需额外副本
  • 增减 Compute Group 无需数据迁移,只需查询时缓存预热

与 Resource Group 相比,Compute Group 的优势如下:

维度Compute GroupResource Group
存储成本数据在共享存储中,Compute Group 数量不受副本限制,成本不随组数增加增加副本数意味着存储成本线性增长
扩展灵活性新增 Compute Group 只需缓存预热,无需数据迁移新增副本需迁移大量数据
隔离彻底性共享存储层保证多副本,单个 Compute Group 内 BE 宕机不影响导入BE 宕机可能导致导入失败
注意

3.0.2 之前的版本中,Compute Group 称为计算集群(Compute Cluster)。

查看 Compute Group

查看当前仓库下所有 Compute Group:

SHOW COMPUTE GROUPS;

添加 Compute Group

使用 ADD BACKEND 命令添加 BE 节点并指定所属 Compute Group。

指定 Compute Group

ALTER SYSTEM ADD BACKEND 'host:9050' PROPERTIES ("tag.compute_group_name" = "new_group");

不指定 Compute Group(默认加入 default_compute_group):

ALTER SYSTEM ADD BACKEND 'host:9050';

管理 Compute Group 访问权限

授予访问权限

将指定 Compute Group 的使用权限授予某个用户:

GRANT USAGE_PRIV ON COMPUTE GROUP {compute_group_name} TO {user};

撤销访问权限

撤销指定用户对某个 Compute Group 的使用权限:

REVOKE USAGE_PRIV ON COMPUTE GROUP {compute_group_name} FROM {user};

设置默认 Compute Group

设置与查看默认 Compute Group

操作命令权限要求
为当前用户设置默认 Compute GroupSET PROPERTY 'default_compute_group' = '{clusterName}';无需额外权限
为其他用户设置默认 Compute GroupSET PROPERTY FOR {user} 'default_compute_group' = '{clusterName}';需要 Admin 权限
查看当前用户默认 Compute GroupSHOW PROPERTY;无需额外权限
查看其他用户默认 Compute GroupSHOW PROPERTY FOR {user};需要相关查看权限

返回结果中 default_compute_group 字段的值即为当前默认 Compute Group。

权限说明

Admin 用户(如 CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin"):

  • 可为自身及其他用户设置默认 Compute Group
  • 可查看自身及其他用户的 PROPERTY

普通用户(如 CREATE USER jack1 IDENTIFIED BY '123456'):

  • 只能为自身设置默认 Compute Group
  • 只能查看自身的 PROPERTY
  • 无法执行 SHOW COMPUTE GROUPS(该操作需要 GRANT ADMIN 权限)

常见问题

Q: 执行数据读写时报错**

当前用户未配置默认 Compute Group。执行 use @cluster 指定当前会话的 Compute Group,或使用 SET PROPERTY 设置默认值。

Q: 已设置默认 Compute Group,但读写仍报错**

之前指定的 Compute Group 已被删除。执行 use @cluster 重新指定,或用 SET PROPERTY 更新默认设置。

默认 Compute Group 自动选择机制

当用户未明确设置默认 Compute Group 时,系统会自动选取一个满足以下条件的 Compute Group:

  • 存在 Active BE 节点
  • 当前用户具有使用权限

同一会话期间,默认 Compute Group 保持不变。跨会话时,以下情况会导致系统重新自动选择:

触发情况是否必定更改
用户失去上次所选 Compute Group 的使用权限必定更改
有 Compute Group 被添加或移除必定更改
上次所选 Compute Group 不再具有 Active BE可能更改

切换 Compute Group

在存算分离架构中,可在同一语句中指定数据库和 Compute Group:

USE { [catalog_name.]database_name[@compute_group_name] | @compute_group_name }

若数据库或 Compute Group 名称包含保留关键字,需用反引号(`)将对应名称括起来。

Compute Group 扩缩容

通过添加或删除 BE 节点实现 Compute Group 的弹性扩缩容:

  • 扩容ALTER SYSTEM ADD BACKEND 将新 BE 加入指定 Compute Group
  • 缩容ALTER SYSTEM DECOMMISSION BACKEND 从 Compute Group 中下线 BE

详细操作参考存算分离相关操作