暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note243:OceanBase社区版中,如何通过调整资源规格实现租户扩缩容?

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/


租户扩容或缩容本质上是提高或降低租户的服务能力,包括计算能力和存储容量,可以通过提高单节点的服务能力达成,也可以通过增加服务节点达成。本文介绍如何通过调大或者调小租户的资源规格(Unit Config)来达到单节点的服务能力的提升或降低,实现租户的扩容或缩容。

前提条件

在进行租户的扩容和缩容操作前,需要进行以下操作:

  • 由于空闲的资源池会被计算为占用的资源,故在扩容前,如果有租户被删除,建议与租户对应的资源池也一并删除,以便释放资源。

    删除资源池的相关操作,参见 删除资源池

  • 进行租户缩容前,建议进行一轮转储以便释放租户正在使用的内存。

    手动触发转储的相关操作,参见 手动触发转储

  • 查看集群中资源的分配情况,了解集群中资源的使用情况。

    查看集群节点的资源总量和分配状态的相关操作,参见 查看集群的资源信息

注意事项

在调大资源规格时,无论是通过修改资源配置还是切换资源配置,调整后的资源总量都必须满足以下要求:

Sum(min_cpu) <= CPU_CAPACITY;
Sum(max_cpu) <= CPU_CAPACITY * resource_hard_limit;
Sum(memory_size) <= MEM_CAPACITY;
Sum(log_disk_size) <= LOG_DISK_CAPACITY;

其中:

  • CPU_CAPACITY:表示 CPU 总的容量。

  • MEM_CAPACITY:表示内存总的容量。

  • LOG_DISK_CAPACITY:表示日志盘总的容量。

  • resource_hard_limit:是一个配置项的值。

    在分配 Unit 时,系统会根据配置项 resource_hard_limit 的值来分配 CPU 资源。该配置项的默认值为 100 ,表示不允许超卖,取值范围为 [0, 10000]

    更多配置项 resource_hard_limit 的说明信息,参见 resource_hard_limit

调整资源规格

在通过调大和调小租户资源规格进行扩容和缩容时,有以下两种场景:

  • 当前租户配置了独立的资源规格,可以直接修改租户的资源规格。

  • 多个租户使用了相同的资源规格,需要切换租户的资源规格。

获取租户所使用的资源规格 ID

确认租户是否使用了独立的资源规格,可以执行以下语句,获取待操作的租户所使用的资源规格 ID:

  1. 使用 root 用户登录集群的 sys 租户。

    obclient -h172.30.xxx.xxx -P2883 -uroot@sys -pxxxx -A
    
  2. 查询待操作的租户所属的资源配置 ID。

    obclient> SELECT a.TENANT_NAME, b.UNIT_CONFIG_ID  FROM oceanbase.DBA_OB_TENANTS a,oceanbase.DBA_OB_RESOURCE_POOLS b WHERE b.TENANT_ID=a.TENANT_ID;
    +----------------+----------------+
    | TENANT_NAME    | UNIT_CONFIG_ID |
    +----------------+----------------+
    | sys            |              1 |
    | midas0_3790    |           1008 |
    | midas0_3790    |           1008 |
    | midas0_3790    |           1007 |
    | mq_t1          |           1006 |
    | oracle_tenant1 |           1003 |
    +----------------+----------------+
    6 rows in set
    

根据查询结果,如果当前租户对应的 UNIT_CONFIG_ID 与其他租户相同,则表示有多个租户使用了相同的资源规格。

如果当前租户中对应的 UNIT_CONFIG_ID 与其他租户均不相同,则表示该租户使用了独立的资源规格,例如租户 mq_t1 所对应的 UNIT_CONFIG_ID 与其他租户的都不一样,所以租户 mq_t1 使用了独立的资源规格。

租户配置了独立的资源规格的场景

如果待操作的租户配置了独立的资源规格,可以直接通过修改租户的 unit_config 来完成租户的扩容和缩容。

示例:

下面以调整租户 mq_t1 的资源规格,调大 CPU 资源为例进行说明。

  1. 使用 root 用户登录到集群的 sys 租户。

    obclient -h172.30.xxx.xxx -P2883 -uroot@sys -pxxxx -A
    
  2. 进入 oceanbase 数据库。

    obclient>USE oceanbase;
    
  3. 查询待操作租户所使用的 UNIT_CONFIG_ID

    obclient> SELECT a.TENANT_NAME, b.UNIT_CONFIG_ID  FROM oceanbase.DBA_OB_TENANTS a,oceanbase.DBA_OB_RESOURCE_POOLS b WHERE b.TENANT_ID=a.TENANT_ID;
    +----------------+----------------+
    | TENANT_NAME    | UNIT_CONFIG_ID |
    +----------------+----------------+
    | sys            |              1 |
    | midas0_3790    |           1008 |
    | midas0_3790    |           1008 |
    | midas0_3790    |           1007 |
    | mq_t1          |           1006 |
    | oracle_tenant1 |           1003 |
    +----------------+----------------+
    6 rows in set
    
  4. 查询待操作租户的资源规格详情。

    obclient> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_ID='1006';
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    | UNIT_CONFIG_ID | NAME           | CREATE_TIME                | MODIFY_TIME                | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT |
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    |           1006 | S2_unit_config | 2022-11-03 17:13:29.021410 | 2022-11-03 17:13:29.021410 |       3 |       3 | 12884901888 |   38654705664 |    30000 |    30000 |           3 |
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    1 row in set
    
  5. 调整资源规格。

    调大 S2_unit_config 配置。

    obclient> ALTER RESOURCE UNIT S2_unit_config MAX_CPU 5, MIN_CPU 5;
    
  6. 查询租户当前的资源规格,确认是否修改成功。

    obclient> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_ID='1006';
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    | UNIT_CONFIG_ID | NAME           | CREATE_TIME                | MODIFY_TIME                | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT |
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    |           1006 | S2_unit_config | 2022-11-03 17:13:29.021410 | 2023-01-12 10:28:57.606507 |       5 |       5 | 12884901888 |   38654705664 |    30000 |    30000 |           3 |
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    1 row in set
    

根据查询结果,查看 MAX_CPU 与 MIN_CPU 已改成对应值,则表示执行成功。

多个租户使用了相同的资源规格的场景

如果多个租户共用了同一个资源规格,则不能通过简单的调大和调小资源规格来实现租户的扩容和缩容。因为一旦修改,将导致使用相同资源规格的所有租户同时进行了扩容或缩容。

此场景下,需要先创建独立的资源规格后,再为租户切换资源规格。

同样以租户 mq_t1 为例,示例如何调整 CPU 资源。

  1. 使用 root 用户登录到集群的 sys 租户。

    obclient -h172.30.xxx.xxx -P2883 -uroot@sys -pxxxx -A
    
  2. 进入oceanbase 数据库。

    obclient>use oceanbase;
    
  3. 查询待操作租户所使用的 UNIT_CONFIG_ID 和 RESOURCE_POOL_NAME

    obclient> SELECT a.TENANT_NAME, b.NAME RESOURCE_POOL_NAME, b.UNIT_CONFIG_ID  FROM oceanbase.DBA_OB_TENANTS a,oceanbase.DBA_OB_RESOURCE_POOLS b WHERE b.TENANT_ID=a.TENANT_ID;
    +----------------+---------------------+----------------+
    | TENANT_NAME    | RESOURCE_POOL_NAME  | UNIT_CONFIG_ID |
    +----------------+---------------------+----------------+
    | sys            | sys_pool            |              1 |
    | midas0_3790    | midas0_3790_pool_z3 |           1008 |
    | midas0_3790    | midas0_3790_pool_z2 |           1008 |
    | midas0_3790    | midas0_3790_pool_z1 |           1007 |
    | mq_t1          | mq_pool_01          |           1006 |
    | oracle_tenant1 | oracle_pool_01      |           1003 |
    +----------------+---------------------+----------------+
    6 rows in set
    
  4. 查询待操作租户的资源规格详情。

    obclient> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_ID='1006';
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    | UNIT_CONFIG_ID | NAME           | CREATE_TIME                | MODIFY_TIME                | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT |
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    |           1006 | S2_unit_config | 2022-11-03 17:13:29.021410 | 2023-01-12 10:28:57.606507 |       5 |       5 | 12884901888 |   38654705664 |    30000 |    30000 |           3 |
    +----------------+----------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    1 row in set
    
  5. 创建一个独立的新资源规格,新资源规格各项资源值为待修改的目标值。

    创建比当前资源规格高的 new_S2_unit_config

    obclient> CREATE RESOURCE UNIT new_S2_unit_config MAX_CPU = 5, MIN_CPU = 5, MEMORY_SIZE = '12884901888',LOG_DISK_SIZE = '38654705664',MAX_IOPS = 30000, MIN_IOPS  = 30000, IOPS_WEIGHT=3;
    
  6. 调整待操作租户的资源池使用新资源规格。

    obclient> ALTER RESOURCE POOL mq_pool_01 unit='new_S2_unit_config';
    
  7. 查询租户当前的资源规格,确认是否修改成功。

    obclient> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_ID='1006';
    +----------------+--------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    | UNIT_CONFIG_ID | NAME               | CREATE_TIME                | MODIFY_TIME                | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT |
    +----------------+--------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    |           1006 | new_S2_unit_config | 2022-12-03 17:13:29.021410 | 2022-12-03 17:13:29.021410 |       5 |       5 | 12884901888 |   38654705664 |    30000 |    30000 |           3 |
    +----------------+--------------------+----------------------------+----------------------------+---------+---------+-------------+---------------+----------+----------+-------------+
    1 row in set
    

更多信息

  • 通过 oceanbase.GV$OB_SERVERS 视图查询资源上限值。

    关于 oceanbase.GV$OB_SERVERS 视图的详细介绍,参见 GV$OB_SERVERS

    示例如下:

    obclient> SELECT * FROM oceanbase.GV$OB_SERVERS;
    +-------------+----------+--------------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
    | SVR_IP      | SVR_PORT | ZONE         | SQL_PORT | CPU_CAPACITY | CPU_CAPACITY_MAX | CPU_ASSIGNED | CPU_ASSIGNED_MAX | MEM_CAPACITY | MEM_ASSIGNED | LOG_DISK_CAPACITY | LOG_DISK_ASSIGNED | LOG_DISK_IN_USE | DATA_DISK_CAPACITY | DATA_DISK_IN_USE | DATA_DISK_HEALTH_STATUS | MEMORY_LIMIT | DATA_DISK_ABNORMAL_TIME | SSL_CERT_EXPIRED_TIME |
    +-------------+----------+--------------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
    | xx.xx.xx.47  |     2882 | sa128_obv4_1 |     2881 |           51 |               51 |          6.5 |              6.5 | 161061273600 |  19327352832 |       96569655296 |       57982058496 |      8858370048 |      1030284640256 |       8258584576 | NORMAL                  | 214748364800 | NULL                    | NULL                  |
    | xx.xx.xx.158 |     2882 | sa128_obv4_3 |     2881 |           51 |               51 |           19 |               22 | 182536110080 |  81604378624 |      386345730048 |      176093659136 |     65431142400 |      4249937248256 |      49568284672 | NORMAL                  | 214748364800 | NULL                    | NULL                  |
    | xx.xx.xx.43  |     2882 | sa128_obv4_1 |     2881 |           51 |               51 |           19 |               22 | 161061273600 |  81604378624 |      386345730048 |      176093659136 |     76705431552 |      4249937248256 |      49572478976 | NORMAL                  | 214748364800 | NULL                    | NULL                  |
    | xx.xx.xx.106 |     2882 | sa128_obv4_2 |     2881 |           51 |               51 |           19 |               22 | 161061273600 |  81604378624 |      386345730048 |      176093659136 |     65431142400 |      4249937248256 |      49729765376 | NORMAL                  | 214748364800 | NULL                    | NULL                  |
    | xx.xx.xx.81  |     2882 | sa128_obv4_2 |     2881 |           51 |               51 |          6.5 |              6.5 | 161061273600 |  19327352832 |       96569655296 |       57982058496 |      8858370048 |      1030284640256 |       8269070336 | NORMAL                  | 214748364800 | NULL                    | NULL                  |
    | xx.xx.xx.19  |     2882 | sa128_obv4_3 |     2881 |           51 |               51 |            5 |                5 | 182536110080 |  12884901888 |       96569655296 |       38654705664 |      5838471168 |      1030284640256 |       5649727488 | NORMAL                  | 214748364800 | NULL                    | NULL                  |
    +-------------+----------+--------------+----------+--------------+------------------+--------------+------------------+--------------+--------------+-------------------+-------------------+-----------------+--------------------+------------------+-------------------------+--------------+-------------------------+-----------------------+
    6 rows in set
    
  • 通过 oceanbase.GV$OB_UNITS 视图查询集群中所有租户的资源分配情况。

    关于 oceanbase.GV$OB_UNITS 视图的详细介绍,参见 GV$OB_UNITS

    示例如下:

    obclient> select SVR_IP,SVR_PORT,UNIT_ID,TENANT_ID,MAX_CPU,MIN_CPU,ceil(MEMORY_SIZE/1024/1024/1024) MEMORY_SIZE_G,MAX_IOPS,MIN_IOPS,IOPS_WEIGHT,ceil(LOG_DISK_SIZE/1024/1024/1024) LOG_DISK_SIZE_G,ceil(LOG_DISK_IN_USE/1024/1024/1024) LOG_DISK_IN_USE_G,ceil(DATA_DISK_IN_USE/1024/1024/1024) DATA_DISK_IN_USE_G,STATUS,CREATE_TIME  from oceanbase.GV$OB_UNITS;
    +--------------+----------+---------+-----------+---------+---------+---------------+----------+----------+-------------+-----------------+-------------------+--------------------+--------+----------------------------+
    | SVR_IP       | SVR_PORT | UNIT_ID | TENANT_ID | MAX_CPU | MIN_CPU | MEMORY_SIZE_G | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT | LOG_DISK_SIZE_G | LOG_DISK_IN_USE_G | DATA_DISK_IN_USE_G | STATUS | CREATE_TIME                |
    +--------------+----------+---------+-----------+---------+---------+---------------+----------+----------+-------------+-----------------+-------------------+--------------------+--------+----------------------------+
    | xx.xx.xx.43  |     2882 |       1 |         1 |       5 |       2 |            32 |    10000 |    10000 |           1 |              32 |                26 |                 11 | NORMAL | 2022-11-03 15:36:31.693272 |
    | xx.xx.xx.43  |     2882 |    1001 |      1001 |    NULL |    NULL |             4 |     NULL |     NULL |        NULL |              10 |                 8 |                 16 | NORMAL | 2022-11-03 17:33:15.340453 |
    | xx.xx.xx.43  |     2882 |    1001 |      1002 |      12 |      12 |            29 |    60000 |    60000 |           6 |              87 |                37 |                 21 | NORMAL | 2022-11-03 17:33:15.340453 |
    | xx.xx.xx.43  |     2882 |    1007 |      1007 |    NULL |    NULL |             2 |     NULL |     NULL |        NULL |               4 |                 0 |                  0 | NORMAL | 2023-01-04 23:50:57.990761 |
    | xx.xx.xx.43  |     2882 |    1007 |      1008 |       5 |       5 |            11 |    30000 |    30000 |           3 |              33 |                 2 |                  1 | NORMAL | 2023-01-04 23:50:57.990761 |
    | xx.xx.xx.158 |     2882 |       3 |         1 |       5 |       2 |            32 |    10000 |    10000 |           1 |              32 |                26 |                 11 | NORMAL | 2022-11-03 15:36:31.690365 |
    | xx.xx.xx.158 |     2882 |    1003 |      1001 |    NULL |    NULL |             4 |     NULL |     NULL |        NULL |              10 |                 8 |                 16 | NORMAL | 2022-11-03 17:33:15.344035 |
    | xx.xx.xx.158 |     2882 |    1003 |      1002 |      12 |      12 |            29 |    15000 |    15000 |           1 |              87 |                26 |                 21 | NORMAL | 2022-11-03 17:33:15.344035 |
    | xx.xx.xx.158 |     2882 |    1009 |      1007 |    NULL |    NULL |             2 |     NULL |     NULL |        NULL |               4 |                 0 |                  0 | NORMAL | 2023-01-04 23:50:57.998665 |
    | xx.xx.xx.158 |     2882 |    1009 |      1008 |       5 |       5 |            11 |    30000 |    30000 |           3 |              33 |                 2 |                  1 | NORMAL | 2023-01-04 23:50:57.998665 |
    | xx.xx.xx.47  |     2882 |    1004 |      1007 |    NULL |    NULL |             2 |     NULL |     NULL |        NULL |               4 |                 3 |                  6 | NORMAL | 2023-01-04 18:32:08.216823 |
    | xx.xx.xx.47  |     2882 |    1004 |      1008 |       5 |       5 |            11 |    30000 |    30000 |           3 |              33 |                 3 |                  1 | NORMAL | 2023-01-04 18:32:08.216823 |
    | xx.xx.xx.47  |     2882 |    1010 |      1009 |    NULL |    NULL |             1 |     NULL |     NULL |        NULL |               2 |                 2 |                  3 | NORMAL | 2023-01-06 16:52:53.867318 |
    | xx.xx.xx.47  |     2882 |    1010 |      1010 |     1.5 |     1.5 |             5 |    15000 |    15000 |           1 |              17 |                 2 |                  1 | NORMAL | 2023-01-06 16:52:53.867318 |
    | xx.xx.xx.19  |     2882 |    1006 |      1007 |    NULL |    NULL |             2 |     NULL |     NULL |        NULL |               4 |                 3 |                  5 | NORMAL | 2023-01-04 18:32:08.217376 |
    | xx.xx.xx.19  |     2882 |    1006 |      1008 |       5 |       5 |            11 |    30000 |    30000 |           3 |              33 |                 3 |                  1 | NORMAL | 2023-01-04 18:32:08.217376 |
    | xx.xx.xx.81  |     2882 |    1005 |      1007 |    NULL |    NULL |             2 |     NULL |     NULL |        NULL |               4 |                 3 |                  6 | NORMAL | 2023-01-04 18:32:08.217390 |
    | xx.xx.xx.81  |     2882 |    1005 |      1008 |       5 |       5 |            11 |    30000 |    30000 |           3 |              33 |                 3 |                  1 | NORMAL | 2023-01-04 18:32:08.217390 |
    | xx.xx.xx.81  |     2882 |    1011 |      1009 |    NULL |    NULL |             1 |     NULL |     NULL |        NULL |               2 |                 2 |                  3 | NORMAL | 2023-01-06 16:52:53.867944 |
    | xx.xx.xx.81  |     2882 |    1011 |      1010 |     1.5 |     1.5 |             5 |    15000 |    15000 |           1 |              17 |                 2 |                  1 | NORMAL | 2023-01-06 16:52:53.867944 |
    | xx.xx.xx.106 |     2882 |       2 |         1 |       5 |       2 |            32 |    10000 |    10000 |           1 |              32 |                26 |                 11 | NORMAL | 2022-11-03 15:36:31.689252 |
    | xx.xx.xx.106 |     2882 |    1002 |      1001 |    NULL |    NULL |             4 |     NULL |     NULL |        NULL |              10 |                 8 |                 16 | NORMAL | 2022-11-03 17:33:15.344232 |
    | xx.xx.xx.106 |     2882 |    1002 |      1002 |      12 |      12 |            29 |    15000 |    15000 |           1 |              87 |                26 |                 21 | NORMAL | 2022-11-03 17:33:15.344232 |
    | xx.xx.xx.106 |     2882 |    1008 |      1007 |    NULL |    NULL |             2 |     NULL |     NULL |        NULL |               4 |                 0 |                  0 | NORMAL | 2023-01-04 23:50:57.995715 |
    | xx.xx.xx.106 |     2882 |    1008 |      1008 |       5 |       5 |            11 |    30000 |    30000 |           3 |              33 |                 2 |                  1 | NORMAL | 2023-01-04 23:50:57.995715 |
    +--------------+----------+---------+-----------+---------+---------+---------------+----------+----------+-------------+-----------------+-------------------+--------------------+--------+----------------------------+
    25 rows in set


欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论