cp v4题目

在OceanBase V4中,对现存租户进行水平扩缩容时,以下哪些操作是正确的?

A扩缩容前,打开系统负载均衡开关

B扩容前,通过GV$OB_SERVERS视图检查OBServer的资源分配情况

C扩容时,通过ALTER RESOURCE TENANT命令来修改租户的资源单元个数

D缩容时,通过ALTER RESOURCE POOL命令来修改租户的资源单元个数

答案是ABC
疑惑 为什么D不正确呢

ALTER RESOURCE POOL poolname UNIT [=] unitname, UNIT_NUM [=] unitnum;
也可以修改unit_num

2 个赞

@论坛小助手

根据文档库中的信息,以下是对您疑惑的详细解答:

为什么选项 D 不正确?

关于 ALTER RESOURCE POOLALTER RESOURCE TENANT

  • ALTER RESOURCE POOL 命令确实可以修改资源池的 UNIT_NUM 属性(参考 文档片段 7 的标题:通过调整 Unit Number 实现租户扩缩容)。例如:

    ALTER RESOURCE POOL poolname UNIT_NUM = unitnum;
    

    这条命令的作用是直接修改资源池的 UNIT_NUM

  • ALTER RESOURCE TENANT 命令也可以用于修改租户的 UNIT_NUM(参考 文档片段 8 的标题:租户资源水平扩缩容 → 调小 UNIT_NUM 和 文档片段 10 的标题:租户资源水平扩缩容 → 调大 UNIT_NUM)。例如:

    ALTER RESOURCE TENANT tenant_name UNIT_NUM = unitnum;
    

为什么选项 D 不正确?

虽然 ALTER RESOURCE POOL 可以修改资源池的 UNIT_NUM,但在实际操作中,对于已授予租户的资源池,建议通过 ALTER RESOURCE TENANT 来修改租户的 UNIT_NUM。原因如下:

  1. 资源池与租户的关系
    资源池是租户的基础资源单位。当一个资源池被授予给某个租户后,该资源池的配置会直接影响到租户的服务能力。因此,直接修改资源池的 UNIT_NUM 可能会导致租户的资源配置不一致或混乱。

  2. 推荐的操作方式
    根据文档描述,在对租户进行水平扩缩容时,推荐使用 ALTER RESOURCE TENANT 命令来调整租户的 UNIT_NUM(参考 文档片段 8文档片段 10)。这种方式更加直观且明确地针对租户本身进行调整。

  3. 潜在风险
    如果直接通过 ALTER RESOURCE POOL 修改资源池的 UNIT_NUM,可能会导致以下问题:

    • 如果资源池同时被多个租户使用,修改资源池的 UNIT_NUM 会影响所有关联的租户。
    • 配置管理复杂度增加,容易引发误操作。

正确的操作流程

在 OceanBase V4 中,对现存租户进行水平扩缩容时,正确的操作流程包括:

  1. 打开系统负载均衡开关(选项 A):确保集群能够动态调整分区分布和日志流。
  2. 检查 OBServer 的资源分配情况(选项 B):通过视图 GV$OB_SERVERS 检查当前服务器的资源使用情况,避免扩容后资源不足。
  3. 使用 ALTER RESOURCE TENANT 修改租户的 UNIT_NUM(选项 C):这是推荐的方式,直接针对租户进行调整。

总结

选项 D 不正确的原因在于,虽然 ALTER RESOURCE POOL 可以修改资源池的 UNIT_NUM,但在实际操作中,推荐使用 ALTER RESOURCE TENANT 来调整租户的 UNIT_NUM,以避免潜在的风险和配置不一致的问题。

希望以上解答能够解决您的疑惑!如果还有其他问题,请随时提问。

检索到的文档如下:

  1. ALTER RESOURCE POOL
  2. SYS 租户/RS 服务问题
  3. 4500 ~ 4999
  4. 租户资源垂直扩缩容
  5. 使用 obshell 扩容 OceanBase 集群
  6. 通过调整 Unit Number 实现租户扩缩容
  7. 租户资源水平扩缩容
  8. 数据负载均衡概述
2 个赞


资源池不可能被多个租户使用是,一个资源池只能归属一个租户

3 个赞

不能同时修改资源池 pool1 的多个属性,例如以下语句同时修改了 UNITUNIT_NUMZONE 属性,执行将报错。

obclient> ALTER RESOURCE POOL pool1 UNIT='unit2', UNIT_NUM=1, ZONE_LIST=('zone1');
ERROR 1235 (0A000): alter unit_num, resource_unit, zone_list in one cmd not supported

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000035055

是不是很魔幻?

2 个赞

@淇铭

1 个赞

D的这个命令如果创建资源池之后在没有分配给租户之前,这个命令是没问题的,但是分配给租户之后,如果想要缩容需要用 alter resource tenant 的命令来修改unit_num的个数

1 个赞

一个资源池只能属于一个租户,你标红的地方本身就有问题

1 个赞

借用余振兴老师测试,已经分配给租户的,不能再修改pool的unit_num

注意最终解释权啊