通过调整 Unit Number 实现租户扩缩容
通过调整 Unit Number 实现租户扩缩容
租户扩容和缩容本质上是提高和降低租户的服务能力,包括计算能力和存储容量。可以通过提高单节点的服务能力达成,也可以通过增加服务节点达成。本文介绍如何通过修改 Unit Number,从而增加或减少服务节点,达到租户总服务能力的提升或降低,实现租户的扩容或缩容。
修改 Unit Number 包括调大或调小 Unit Number。从 V4.0.0 版本开始,OceanBase 数据库要求每个 Zone 的 Unit 个数必须保持一致。为了方便统一管理各个 Zone 的 Unit,系统引入了 Unit Group 机制,即不同 Zone 之间相同编号(UNIT_GROUP_ID)的 Unit 属于同一个 Unit Group。调大或调小 Unit Number 本质上是以 Unit Group 为单位创建和删除 Unit。
前提条件
在进行租户的扩容和缩容操作前,需要进行以下操作:
-
开启租户内的负载均衡,实现分区在服务节点上的均衡。
租户内的负载均衡由租户级配置项
enable_rebalance控制。该配置项在系统租户下用于控制是否进行租户间的负载均衡;用户租户下用于控制是否进行租户内均衡。默认值为true,设置后不需要重启 OBServer 节点,立即生效。开启租户内的负载均衡的语句如下:
-
系统租户开启指定租户内的负载均衡
ALTER SYSTEM SET enable_rebalance = true TENANT = 'tenant_name';该语句仅将用户租户下配置项
enable_rebalance的值设置为true。示例:
ALTER SYSTEM SET enable_rebalance = true TENANT = 'oracle'; -
系统租户开启租户间的负载均衡,同时开启所有租户内的负载均衡
ALTER SYSTEM SET enable_rebalance = true TENANT = ALL;该语句表示系统租户下和用户租户下配置项
enable_rebalance的值均为true。 -
用户租户开启本租户内的负载均衡
ALTER SYSTEM SET enable_rebalance = true;
更多配置项 enable_rebalance 的详细说明,请参见 enable_rebalance。
-
-
由于空闲的资源池会被计算为占用的资源,故在扩容前,如果有租户被删除,建议与租户对应的资源池也一并删除,以便释放资源。
删除资源池的相关操作,参见 删除资源池。
-
进行租户缩容前,建议进行一轮转储以便释放租户正在使用的内存。
手动触发转储的相关操作,参见 手动触发转储。
调大 Unit Number
下面以调大租户 mq_t1 的 Unit Number 为例来介绍操作方法。
-
使用
root用户登录到集群的sys租户。obclient -h172.30.xxx.xxx -P2883 -uroot@sys#obdemo -pxxxx -A -
进入
oceanbase数据库。use oceanbase; -
查看租户
mq_t1信息,获取其TENANT_ID。SELECT * FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';查询结果如下:
+-----------+-------------+-------------+----------------------------+----------------------------+-------------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+----------+------------+ | TENANT_ID | TENANT_NAME | TENANT_TYPE | CREATE_TIME | MODIFY_TIME | PRIMARY_ZONE | LOCALITY | PREVIOUS_LOCALITY | COMPATIBILITY_MODE | STATUS | IN_RECYCLEBIN | LOCKED | TENANT_ROLE | SWITCHOVER_STATUS | SWITCHOVER_EPOCH | SYNC_SCN | REPLAYABLE_SCN | READABLE_SCN | RECOVERY_UNTIL_SCN | LOG_MODE | ARBITRATION_SERVICE_STATUS | UNIT_NUM | COMPATIBLE | +-----------+-------------+-------------+----------------------------+----------------------------+-------------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+----------+------------+ | 1004 | mq_t1 | USER | 2023-07-01 19:16:39.739258 | 2023-07-01 19:17:35.326317 | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | NULL | ORACLE | NORMAL | NO | NO | PRIMARY | NORMAL | 0 | 1688363370009667411 | 1688363370009667411 | 1688363370009667411 | 4611686018427387903 | NOARCHIVELOG | DISABLED | 1 | 4.2.0.0 | +-----------+-------------+-------------+----------------------------+----------------------------+-------------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+----------+------------+ 1 row in set查询结果中,
UNIT_NUM的值为1表示租户的 Unit Number 数为1。 -
查看租户
mq_t1所拥有的 Unit。SELECT * FROM oceanbase.DBA_OB_UNITS WHERE TENANT_ID = 1004;查询结果如下:
+---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ | UNIT_ID | TENANT_ID | STATUS | RESOURCE_POOL_ID | UNIT_GROUP_ID | CREATE_TIME | MODIFY_TIME | ZONE | SVR_IP | SVR_PORT | MIGRATE_FROM_SVR_IP | MIGRATE_FROM_SVR_PORT | MANUAL_MIGRATE | UNIT_CONFIG_ID | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT | +---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ | 1008 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.723840 | 2023-07-01 19:16:39.744524 | zone1 | xx.xx.xx.198 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1010 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.727011 | 2023-07-01 19:16:39.744524 | zone2 | xx.xx.xx.197 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1012 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.731235 | 2023-07-01 19:16:39.745584 | zone3 | xx.xx.xx.192 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | +---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ 3 rows in set根据查询结果可知,租户
mq_t1的每个 Zone 均有 1 个 Unit,且这 3 个 Unit 属于同一个 Unit Group。 -
把租户
mq_t1的UNIT_NUM修改为 2。ALTER RESOURCE TENANT mq_t1 UNIT_NUM = 2; -
查看租户
mq_t1修改后的 Unit。SELECT * FROM oceanbase.DBA_OB_UNITS WHERE TENANT_ID = 1004;查询结果如下:
+---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ | UNIT_ID | TENANT_ID | STATUS | RESOURCE_POOL_ID | UNIT_GROUP_ID | CREATE_TIME | MODIFY_TIME | ZONE | SVR_IP | SVR_PORT | MIGRATE_FROM_SVR_IP | MIGRATE_FROM_SVR_PORT | MANUAL_MIGRATE | UNIT_CONFIG_ID | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT | +---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ | 1008 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.723840 | 2023-07-01 19:16:39.744524 | zone1 | xx.xx.xx.198 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1010 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.727011 | 2023-07-01 19:16:39.744524 | zone2 | xx.xx.xx.197 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1012 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.731235 | 2023-07-01 19:16:39.745584 | zone3 | xx.xx.xx.192 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1016 | 1004 | ACTIVE | 1002 | 1006 | 2023-07-03 14:23:00.298237 | 2023-07-03 14:23:00.298237 | zone1 | xx.xx.xx.196 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1017 | 1004 | ACTIVE | 1002 | 1006 | 2023-07-03 14:23:00.300350 | 2023-07-03 14:23:00.300350 | zone2 | xx.xx.xx.194 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1018 | 1004 | ACTIVE | 1002 | 1006 | 2023-07-03 14:23:00.302460 | 2023-07-03 14:23:00.302460 | zone3 | xx.xx.xx.64 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | +---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ 6 rows in set
通过上述示例,将租户 mq_t1 的 Unit Number 从 1 变更为 2。变更前租户在每个 Zone 的 Unit 个数为 1;变更后租户在每个 Zone 的 Unit 个数为 2,从而实现了租户扩容。
调小 Unit Number
下面以调小租户 mq_t1 的 Unit Number 为例来介绍操作方法。
-
使用
root用户登录到集群的sys租户。obclient -h172.xxx.xxx.xxx -P2883 -uroot@sys#obdemo -pxxxx -A -
进入
oceanbase数据库。use oceanbase; -
查看租户
mq_t1信息,获取其TENANT_ID。SELECT * FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'mq_t1';查询结果如下:
+-----------+-------------+-------------+----------------------------+----------------------------+-------------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+----------+------------+ | TENANT_ID | TENANT_NAME | TENANT_TYPE | CREATE_TIME | MODIFY_TIME | PRIMARY_ZONE | LOCALITY | PREVIOUS_LOCALITY | COMPATIBILITY_MODE | STATUS | IN_RECYCLEBIN | LOCKED | TENANT_ROLE | SWITCHOVER_STATUS | SWITCHOVER_EPOCH | SYNC_SCN | REPLAYABLE_SCN | READABLE_SCN | RECOVERY_UNTIL_SCN | LOG_MODE | ARBITRATION_SERVICE_STATUS | UNIT_NUM | COMPATIBLE | +-----------+-------------+-------------+----------------------------+----------------------------+-------------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+----------+------------+ | 1004 | mq_t1 | USER | 2023-07-01 19:16:39.739258 | 2023-07-01 19:17:35.326317 | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | NULL | ORACLE | NORMAL | NO | NO | PRIMARY | NORMAL | 0 | 1688364899374900659 | 1688364899374900659 | 1688364899148955397 | 4611686018427387903 | NOARCHIVELOG | DISABLED | 2 | 4.2.0.0 | +-----------+-------------+-------------+----------------------------+----------------------------+-------------------+---------------------------------------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+----------+------------+ 1 row in set查询结果中,
UNIT_NUM的值为2表示租户的 Unit Number 数为 2。 -
查看租户
mq_t1所拥有的 Unit。SELECT * FROM oceanbase.DBA_OB_UNITS WHERE TENANT_ID = 1004;查询结果如下:
+---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ | UNIT_ID | TENANT_ID | STATUS | RESOURCE_POOL_ID | UNIT_GROUP_ID | CREATE_TIME | MODIFY_TIME | ZONE | SVR_IP | SVR_PORT | MIGRATE_FROM_SVR_IP | MIGRATE_FROM_SVR_PORT | MANUAL_MIGRATE | UNIT_CONFIG_ID | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT | +---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ | 1007 | 1004 | ACTIVE | 1002 | 1001 | 2023-07-01 19:15:09.721728 | 2023-07-01 19:16:39.743467 | zone1 | xx.xx.xx.196 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1008 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.723840 | 2023-07-01 19:16:39.744524 | zone1 | xx.xx.xx.198 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1009 | 1004 | ACTIVE | 1002 | 1001 | 2023-07-01 19:15:09.725952 | 2023-07-01 19:16:39.744524 | zone2 | xx.xx.xx.194 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1010 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.727011 | 2023-07-01 19:16:39.744524 | zone2 | xx.xx.xx.197 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1011 | 1004 | ACTIVE | 1002 | 1001 | 2023-07-01 19:15:09.729124 | 2023-07-01 19:16:39.745584 | zone3 | xx.xx.xx.64 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1012 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.731235 | 2023-07-01 19:16:39.745584 | zone3 | xx.xx.xx.192 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | +---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ 6 rows in set根据查询结果可知,租户
mq_t1的每个 Zone 均有 2 个 Unit。其中,UNIT_ID为1007、1009、1011的 Unit 属于同一个 Unit Group,且其UNIT_GROUP_ID为1001;UNIT_ID为1008、1010、1012的 Unit 属于另一个 Unit Group,且其UNIT_GROUP_ID为1002。 -
把租户
mq_t1的UNIT_NUM修改为 1。-
通过随机删除
UNIT_GROUP的方式来调小UNIT_NUM的数量。ALTER RESOURCE TENANT mq_t1 UNIT_NUM = 1;该语句执行后,对于每个 Zone 上 2 个 Unit 的场景,系统会随机删除一个 Unit Group。
-
通过删除指定
UNIT_GROUP的方式来调小UNIT_NUM的数量ALTER RESOURCE TENANT mq_t1 UNIT_NUM = 1 DELETE UNIT_GROUP =(1001);该语句执行后,对于每个 Zone 上 2 个 Unit 的场景,系统会将指定的 Unit Group 删除。
-
-
查看租户
mq_t1修改后的 Unit。SELECT * FROM oceanbase.DBA_OB_UNITS WHERE TENANT_ID = 1004;查询结果如下:
+---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ | UNIT_ID | TENANT_ID | STATUS | RESOURCE_POOL_ID | UNIT_GROUP_ID | CREATE_TIME | MODIFY_TIME | ZONE | SVR_IP | SVR_PORT | MIGRATE_FROM_SVR_IP | MIGRATE_FROM_SVR_PORT | MANUAL_MIGRATE | UNIT_CONFIG_ID | MAX_CPU | MIN_CPU | MEMORY_SIZE | LOG_DISK_SIZE | MAX_IOPS | MIN_IOPS | IOPS_WEIGHT | +---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ | 1008 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.723840 | 2023-07-01 19:16:39.744524 | zone1 | xx.xx.xx.198 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1010 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.727011 | 2023-07-01 19:16:39.744524 | zone2 | xx.xx.xx.197 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | | 1012 | 1004 | ACTIVE | 1002 | 1002 | 2023-07-01 19:15:09.731235 | 2023-07-01 19:16:39.745584 | zone3 | xx.xx.xx.192 | 2882 | NULL | NULL | NULL | 1001 | 2 | 2 | 5368709120 | 16106127360 | 20000 | 20000 | 2 | +---------+-----------+--------+------------------+---------------+----------------------------+----------------------------+-------+----------------+----------+---------------------+-----------------------+----------------+----------------+---------+---------+-------------+---------------+----------+----------+-------------+ 3 rows in set
通过上述示例,将租户 mq_t1 的 Unit Number 从 2 变更为 1。变更前租户在每个 Zone 的 Unit 个数为 2;变更后租户在每个 Zone 的 Unit 个数为 1,从而实现了租户缩容。




