对租户内资源的扩容还可以通过调大资源池中的 UNIT_NUM 来实现。当前版本暂不支持通过调小资源池中的 UNIT_NUM 来进行缩容。
前提条件
在进行租户的扩容操作前,需要进行以下操作:
由于空闲的资源池会被计算为占用的资源,故在扩容前,如果有租户被删除,建议与租户对应的资源池也一并删除,以便释放资源。
删除资源池的相关操作请参见 删除资源池。
查看集群中资源的分配情况,了解集群中资源的使用情况。
查看集群节点的资源总量和分配状态的相关操作请参见 查看集群的资源信息。
注意
调大资源池的
UNIT_NUM时,修改后的UNIT_NUM数量要小于或等于 Zone 内可用的 OBServer 数量。
通过 SQL 语句修改租户的 UNIT_NUM
您可以通过调大租户的 UNIT_NUM 来进行租户的扩容。
背景信息
假设当前集群中共包含 3 个可用区 z1、z2、z3,每个 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 来提高租户的服务能力,以满足新的业务需求。
使用
root用户登录到数据库的sys租户。进入
oceanbase数据库。obclient>USE oceanbase;执行以下语句,获取当前租户的资源配置信息。
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。执行以下语句,调大
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 setoceanbase.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 setoceanbase.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




