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

OceanBase管理数据库通过修改UNIT_NUM

2023-10-03
294

对租户内资源的扩容还可以通过调大资源池中的 UNIT_NUM 来实现。当前版本暂不支持通过调小资源池中的 UNIT_NUM 来进行缩容。

前提条件

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

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

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

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

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

注意

调大资源池的 UNIT_NUM 时,修改后的 UNIT_NUM 数量要小于或等于 Zone 内可用的 OBServer 数量。

通过 SQL 语句修改租户的 UNIT_NUM

您可以通过调大租户的 UNIT_NUM 来进行租户的扩容。

背景信息

假设当前集群中共包含 3 个可用区 z1z2z3,每个 Zone 内包含 3 台 OBServer。在集群中创建一个普通租户 MySQL,其资源分配情况如下:

obclient> CREATE RESOURCE UNIT unit1 MAX_CPU 6, MIN_CPU 6, MEMORY_SIZE '36G', MAX_IOPS 1024, MIN_IOPS 1024, IOPS_WEIGHT=0, LOG_DISK_SIZE '2G';

obclient> CREATE RESOURCE POOL pool1 UNIT 'unit1', UNIT_NUM 1, ZONE_LIST ('z1','z2','z3');

obclient> CREATE TENANT MySQL resource_pool_list=('pool1');

调大 UNIT_NUM

随着业务量的不断变大,每个 Zone 上 1 个 Unit 已经无法承载当前的业务量,因此需要考虑调大 UNIT_NUM 来提高租户的服务能力,以满足新的业务需求。

  1. 使用 root 用户登录到数据库的 sys 租户。

  2. 进入 oceanbase 数据库。

    obclient>USE oceanbase;
    
  3. 执行以下语句,获取当前租户的资源配置信息。

    obclient> SELECT a.TENANT_NAME, b.RESOURCE_POOL_ID,b.NAME resource_pool_name,b.UNIT_CONFIG_ID,b. UNIT_COUNT FROM oceanbase.DBA_OB_TENANTS a,oceanbase.DBA_OB_RESOURCE_POOLS b WHERE b.TENANT_ID=a.TENANT_ID;
    +-------------+------------------+--------------------+----------------+------------+
    | TENANT_NAME | RESOURCE_POOL_ID | resource_pool_name | UNIT_CONFIG_ID | UNIT_COUNT |
    +-------------+------------------+--------------------+----------------+------------+
    | sys         |                1 | sys_pool           |              1 |          1 |
    | MySQL       |             1001 | pool1              |           1001 |          1 |
    | Oracle      |             1002 | pool002            |           1002 |          1 |
    +-------------+------------------+--------------------+----------------+------------+
    3 rows in set
    
    obclient> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE UNIT_CONFIG_ID='1001';
    +----------------+-------+---------+---------+-------------+---------------+----------+----------+-------------+
    | UNIT_CONFIG_ID | NAME  | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT |
    +----------------+-------+---------+---------+-------------+---------------+----------+----------+-------------+
    |           1001 | unit1 |       6 |       6 | 38654705664 |    2147483648 |     1024 |     1024 |           0 |
    +----------------+-------+---------+---------+-------------+---------------+----------+----------+-------------+
    1 row in set
    

    其中,UNIT_COUNT 表示当前租户所分配的 UNIT_NUM 。

  4. 执行以下语句,调大 UNIT_NUM 的数量。

    说明

    不支持通过指定 unit_id 的方式调大 UNIT_NUM 的数量。

    obclient>ALTER RESOURCE TENANT MySQL UNIT_NUM = 2;
    

    语句执行后,系统会直接在每个 Zone 内添加一个 Unit。

更多信息

在租户的扩容操作中,您可以借助以下内部表或视图来获取租户资源相关的信息:

  • oceanbase.DBA_OB_UNIT_CONFIGS

    DBA_OB_UNIT_CONFIGS 视图记录了当前集群中的所有 unit_config 信息。

    示例:

    obclient> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS;
    +----------------+-----------------+---------+---------+-------------+---------------+----------+----------+-------------+
    | UNIT_CONFIG_ID | NAME            | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT |
    +----------------+-----------------+---------+---------+-------------+---------------+----------+----------+-------------+
    |              1 | sys_unit_config |     2.5 |     2.5 | 17179869184 |   17179869184 |    25000 |    25000 |           2 |
    |           1001 | unit001         |       1 |       1 |  6442450944 |   19327352832 |    10000 |    10000 |           1 |
    |           1002 | unit002         |       1 |       1 |  6442450944 |   19327352832 |    10000 |    10000 |           1 |
    |           1003 | unit003         |       1 |       1 |  6442450944 |   19327352832 |    10000 |    10000 |           1 |
    |           1004 | unit004         |       1 |       1 |  6442450944 |   19327352832 |    10000 |    10000 |           1 |
    |           1005 | unit1           |       6 |       6 | 38654705664 |    2147483648 |     1024 |     1024 |           0 |
    +----------------+-----------------+---------+---------+-------------+---------------+----------+----------+-------------+
    6 rows in set
    
  • oceanbase.GV$OB_UNITS

    GV$OB_UNITS 视图中记录了集群中所有租户的资源分配情况。

    查询示例如下:

    obclient> SELECT * FROM oceanbase.GV$OB_UNITS\G
    *************************** 1. row ***************************
             SVR_IP: xx.xx.xx.xx
          SVR_PORT: 2882
             UNIT_ID: 1
          TENANT_ID: 1
                ZONE: zone1
             MAX_CPU: 2.5
             MIN_CPU: 2.5
       MEMORY_SIZE: 17179869184
          MAX_IOPS: 25000
          MIN_IOPS: 25000
       IOPS_WEIGHT: 2
       LOG_DISK_SIZE: 17179869184
    LOG_DISK_IN_USE: 191441460
    DATA_DISK_IN_USE: 406847488
             STATUS: NORMAL
       CREATE_TIME: 2022-07-19 11:04:39.226231
    *************************** 2. row ***************************
             SVR_IP: xx.xx.xx.xx
          SVR_PORT: 2882
             UNIT_ID: 1001
          TENANT_ID: 1001
                ZONE: zone1
             MAX_CPU: NULL
             MIN_CPU: NULL
       MEMORY_SIZE: 644245094
          MAX_IOPS: NULL
          MIN_IOPS: NULL
       IOPS_WEIGHT: NULL
       LOG_DISK_SIZE: 1932735283
    LOG_DISK_IN_USE: 155042605
    DATA_DISK_IN_USE: 211812352
             STATUS: NORMAL
       CREATE_TIME: 2022-07-19 13:48:36.308843
    *************************** 3. row ***************************
             SVR_IP: xx.xx.xx.xx
          SVR_PORT: 2882
             UNIT_ID: 1001
          TENANT_ID: 1002
                ZONE: zone1
             MAX_CPU: 1
             MIN_CPU: 1
       MEMORY_SIZE: 5798205850
          MAX_IOPS: 10000
          MIN_IOPS: 10000
       IOPS_WEIGHT: 1
       LOG_DISK_SIZE: 17394617549
    LOG_DISK_IN_USE: 154632504
    DATA_DISK_IN_USE: 121634816
             STATUS: NORMAL
       CREATE_TIME: 2022-07-19 13:48:36.308843
    *************************** 4. row ***************************
             SVR_IP: xx.xx.xx.xx
          SVR_PORT: 2882
             UNIT_ID: 1002
          TENANT_ID: 1005
                ZONE: zone1
             MAX_CPU: NULL
             MIN_CPU: NULL
       MEMORY_SIZE: 644245094
          MAX_IOPS: NULL
          MIN_IOPS: NULL
       IOPS_WEIGHT: NULL
       LOG_DISK_SIZE: 1932735283
    LOG_DISK_IN_USE: 152132563
    DATA_DISK_IN_USE: 211812352
             STATUS: NORMAL
       CREATE_TIME: 2022-07-19 13:51:56.627867
    *************************** 5. row ***************************
             SVR_IP: xx.xx.xx.xx
          SVR_PORT: 2882
             UNIT_ID: 1002
          TENANT_ID: 1006
                ZONE: zone1
             MAX_CPU: 1
             MIN_CPU: 1
       MEMORY_SIZE: 5798205850
          MAX_IOPS: 10000
          MIN_IOPS: 10000
       IOPS_WEIGHT: 1
       LOG_DISK_SIZE: 17394617549
    LOG_DISK_IN_USE: 158023991
    DATA_DISK_IN_USE: 134217728
             STATUS: NORMAL
       CREATE_TIME: 2022-07-19 13:51:56.627867
    5 rows in set
    
  • oceanbase.DBA_OB_RESOURCE_POOLS

    DBA_OB_RESOURCE_POOLS 视图中记录了当前集群中所有资源池的资源配置情况。其中,unit_count 表示资源池中某个资源单元的个数。

    查询示例如下:

    obclient> SELECT * FROM oceanbase.DBA_OB_RESOURCE_POOLS;
    +------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
    | RESOURCE_POOL_ID | NAME     | TENANT_ID | CREATE_TIME                | MODIFY_TIME                | UNIT_COUNT | UNIT_CONFIG_ID | ZONE_LIST | REPLICA_TYPE |
    +------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
    |                1 | sys_pool |         1 | 2022-07-19 11:05:18.168896 | 2022-07-19 11:05:18.175708 |          1 |              1 | zone1     | FULL         |
    |             1001 | pool001  |      1002 | 2022-07-19 13:47:55.854548 | 2022-07-19 13:48:36.307978 |          1 |           1001 | zone1     | FULL         |
    |             1002 | pool002  |      1006 | 2022-07-19 13:49:53.869792 | 2022-07-19 13:51:56.626742 |          1 |           1001 | zone1     | FULL         |
    +------------------+----------+-----------+----------------------------+----------------------------+------------+----------------+-----------+--------------+
    3 rows in set
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论