租户资源的垂直管理主要是通过调整租户资源池的资源规格来调整租户的服务能力。调整租户资源池的规格有两种方法:修改资源配置和切换资源配置。
修改资源配置
修改资源池的资源配置,即直接调整资源配置的 CPU 或 Memory 等的值,进而直接影响租户在该资源池上的资源规格和服务能力。
假设创建了资源池 pool1 和 pool2 ,且其资源配置都是 uc1,可以通过修改资源池的资源配置的方式,将资源配置 uc1 的 MAX_CPU 调整为 6;MIN_MEMORY 调整为 36G,其他选项不变。示例语句如下:
obclient> CREATE RESOURCE UNIT uc1 MAX_CPU 5, MIN_CPU 4, MAX_MEMORY '36G', MIN_MEMORY '32G', MAX_IOPS 128, MIN_IOPS 128, MAX_DISK_SIZE '2T', MAX_SESSION_NUM 64;
obclient>CREATE RESOURCE POOL pool1 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('z1', 'z2');
obclient>CREATE RESOURCE POOL pool2 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z3');
obclient>CREATE TENANT tt resource_pool_list=('pool1','pool2');
obclient>ALTER RESOURCE UNIT uc1 MAX_CPU 6, MIN_MEMORY '36G';
通过调整资源配置的各个选项,可调整租户的资源池在对应 Zone 上的资源规格,进而影响租户的服务能力。
切换资源配置
切换资源池的资源配置,即调整资源池下每个资源单元的资源规格,进而调整租户在该资源池上的资源规格和服务能力。
假设资源池 rp1 之前的资源配置为 uc1,则通过切换资源池的资源配置将 rp1 的资源配置从 uc1 变更为 uc2 的示例语句如下:
obclient> ALTER RESOURCE POOL rp1 UNIT 'uc2';
理论上 OceanBase 数据库支持对资源规格 MIN_CPU、MAX_CPU、MIN_MEMORY 以及 MAX_MEMORY 同时进行修改。
示例及使用限制
通常情况下,通过修改资源配置和切换资源配置的方式都能对租户的服务能力进行调整。对应到租户层面,实际上是调整了租户资源单元的规格。对资源规格的修改通常有两种场景,即调大资源规格和调小资源规格。
调大资源规格
调大资源规格主要用在租户的资源扩容场景中,可分别对 CPU 和 Memory 进行资源扩容。
示例:
示例 1
创建一个资源配置
u_c0,并创建一个资源池pool1,pool1使用u_c0作为自己的资源配置。obclient> CREATE RESOURCE UNIT u_c0 MAX_CPU 5, MIN_CPU 4, MAX_MEMORY '36G', MIN_MEMORY '32G', MAX_IOPS 128, MIN_IOPS 128, MAX_DISK_SIZE '2T', MAX_SESSION_NUM 64; obclient> CREATE RESOURCE POOL pool1 unit='u_c0', unit_num=3, zone_list=('z1','z2','z3');调大
u_c0的MIN_CPU、MAX_CPU、MIN_MEMORY或MAX_MEMORY。obclient> ALTER RESOURCE UNIT u_c0 MAX_CPU 10, MIN_CPU 8, MAX_MEMORY '72G', MIN_MEMORY '64G';该调整旨在调大资源池
pool1的资源规格,目的是提高相应租户的服务能力。
示例 2
创建两个资源配置
u_c0和u_c1,并创建一个资源池pool1,pool1使用u_c0作为自己的资源配置。obclient> CREATE RESOURCE UNIT u_c0 MAX_CPU 5, MIN_CPU 4, MAX_MEMORY '36G', MIN_MEMORY '32G', MAX_IOPS 128, MIN_IOPS 128, MAX_DISK_SIZE '2T', MAX_SESSION_NUM 64; obclient> CREATE RESOURCE UNIT u_c1 MAX_CPU 10, MIN_CPU 8, MAX_MEMORY '72G', MIN_MEMORY '64G', MAX_IOPS 128, MIN_IOPS 128, MAX_DISK_SIZE '2T', MAX_SESSION_NUM 64; obclient> CREATE RESOURCE POOL pool1 unit='u_c0', unit_num=3, zone_list=('z1','z2','z3');将
pool1的资源配置调整成u_c1。obclient> ALTER RESOURCE POOL pool1 unit='u_c1';该调整旨在调大资源池
pool1的资源规格,目的是提高相应租户的服务能力。
注意,在调大资源规格时,无论是通过修改资源配置还是切换资源配置,调整后的资源总量都满足以下要求:
Sum(min_cpu) <= CPU_CAPACITY;
Sum(min_memory) <= MEM_CAPACITY;
Sum(max_cpu) <= CPU_CAPACITY * resource_hard_limit;
Sum(max_mem) <= CPU_CAPACITY * resource_hard_limit;
否则,系统会报错,提示扩容失败。
调小资源规格
根据上面调大资源规格的示例,系统还支持将资源池的资源规格调小。调小资源规格能够保证机器资源规格足够用,但仍然存在限制,该限制主要出现在调小资源规格的 MIN_MEMORY 选项上,一个租户在某物理机上的实际内存使用量记录为 MEM_USED,在调小其资源规格时,对于为租户提供服务的每台物理机,需要满足资源配置的 MIN_MEMORY 大于等于租户在该物理机上当前的实际使用内存。如果在调整时,MIN_MEMORY 的值小于 MEM_USED,则本次资源规格的调整会失败,需要进行一次数据的 Checkpoint 操作来释放内存,然后再重新尝试调小资源池的配置规格。




