在OceanBase V4中,对现存租户进行水平扩缩容时,以下哪些操作是正确的?
A扩缩容前,打开系统负载均衡开关
B扩容前,通过GV$OB_SERVERS视图检查OBServer的资源分配情况
C扩容时,通过ALTER RESOURCE TENANT命令来修改租户的资源单元个数
D缩容时,通过ALTER RESOURCE POOL命令来修改租户的资源单元个数
答案是ABC
ALTER RESOURCE POOL poolname  UNIT [=] unitname, UNIT_NUM [=] unitnum;
         
        
           2 个赞 
         
         
            
       
      
        
          
          
            论坛小助手  
          
              
                2025 年4 月 29 日 17:48
               
              #4 
           
         
        
          根据文档库中的信息,以下是对您疑惑的详细解答:
 
ALTER RESOURCE POOL 和 ALTER RESOURCE TENANT
 
ALTER RESOURCE POOLUNIT_NUM 属性(参考 文档片段 7  的标题:通过调整 Unit Number 实现租户扩缩容)。例如:
ALTER RESOURCE POOL poolname UNIT_NUM = unitnum;
这条命令的作用是直接修改资源池的 UNIT_NUM。
 
ALTER RESOURCE TENANTUNIT_NUM(参考 文档片段 8  的标题:租户资源水平扩缩容 → 调小 UNIT_NUM 和 文档片段 10  的标题:租户资源水平扩缩容 → 调大 UNIT_NUM)。例如:
ALTER RESOURCE TENANT tenant_name UNIT_NUM = unitnum;
 
 
 
虽然 ALTER RESOURCE POOL 可以修改资源池的 UNIT_NUM,但在实际操作中,对于已授予租户的资源池,建议通过 ALTER RESOURCE TENANT 来修改租户的 UNIT_NUM。原因如下:
资源池与租户的关系 UNIT_NUM 可能会导致租户的资源配置不一致或混乱。
 
推荐的操作方式 ALTER RESOURCE TENANT 命令来调整租户的 UNIT_NUM(参考 文档片段 8  和 文档片段 10 )。这种方式更加直观且明确地针对租户本身进行调整。
 
潜在风险 ALTER RESOURCE POOL 修改资源池的 UNIT_NUM,可能会导致以下问题:
如果资源池同时被多个租户使用,修改资源池的 UNIT_NUM 会影响所有关联的租户。 
配置管理复杂度增加,容易引发误操作。 
 
 
 
 
在 OceanBase V4 中,对现存租户进行水平扩缩容时,正确的操作流程包括:
打开系统负载均衡开关 (选项 A):确保集群能够动态调整分区分布和日志流。 
检查 OBServer 的资源分配情况 (选项 B):通过视图 GV$OB_SERVERS 检查当前服务器的资源使用情况,避免扩容后资源不足。 
使用 ALTER RESOURCE TENANT 修改租户的 UNIT_NUM (选项 C):这是推荐的方式,直接针对租户进行调整。 
 
 
选项 D 不正确的原因在于,虽然 ALTER RESOURCE POOL 可以修改资源池的 UNIT_NUM,但在实际操作中,推荐使用 ALTER RESOURCE TENANT 来调整租户的 UNIT_NUM,以避免潜在的风险和配置不一致的问题。
希望以上解答能够解决您的疑惑!如果还有其他问题,请随时提问。
检索到的文档如下:
ALTER RESOURCE POOL SYS 租户/RS 服务问题 4500 ~ 4999 租户资源垂直扩缩容 使用 obshell 扩容 OceanBase 集群 通过调整 Unit Number 实现租户扩缩容 租户资源水平扩缩容 数据负载均衡概述  
         
        
           2 个赞 
         
         
            
       
      
        
        
          
资源池不可能被多个租户使用是,一个资源池只能归属一个租户
        
 
        
           3 个赞 
         
         
            
       
      
        
        
          不能同时修改资源池 pool1 的多个属性,例如以下语句同时修改了 UNIT、UNIT_NUM 与 ZONE 属性,执行将报错。
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 个赞 
         
         
            
       
      
        
          
          
            来轩  
          
              
                2025 年4 月 29 日 21:06
               
              #8 
           
         
        
          D的这个命令如果创建资源池之后在没有分配给租户之前,这个命令是没问题的,但是分配给租户之后,如果想要缩容需要用 alter resource tenant 的命令来修改unit_num的个数
         
        
           1 个赞 
         
         
            
       
      
        
          
          
            来轩  
          
              
                2025 年4 月 29 日 21:09
               
              #9 
           
         
        
          一个资源池只能属于一个租户,你标红的地方本身就有问题
         
        
           1 个赞 
         
         
            
       
      
        
        
          
借用余振兴老师测试,已经分配给租户的,不能再修改pool的unit_num