Stories

Detail Return Return

【趙渝強老師】OceanBase租户的資源管理 - Stories Detail

OceanBase數據庫是多租户的數據庫系統,一個集羣內可包含多個相互獨立的租户,每個租户提供獨立的數據庫服務。在OceanBase數據庫中,使用資源配置(Unit Config)、資源單元(Unit)和資源池(Resource Pool)三個概念,對各租户的可用資源進行管理。

視頻講解如下:
https://www.bilibili.com/video/BV1PQ8qzMEiM/?aid=114942300657...

一、 資源配置與資源單元

一個資源單元中可以包含多個資源配置。資源配置是用來描述每個單元中可用的CPU、內存、存儲空間和IOPS等的規格。這裏需要注意,資源配置指定的是對應資源單元能夠提供的服務能力,而不是資源單元的實時負載。下面展示了創建資源單元的完整語法格式:

CREATE RESOURCE UNIT [IF NOT EXISTS] unit_name
MEMORY_SIZE [=] 'size_value',
MAX_CPU [=] cpu_num,
[MAX_IOPS [=] iops_num,]
[MIN_CPU [=] cpu_num,]
[MIN_IOPS [=] iops_num,]
[IOPS_WEIGHT [=]iopsweight,]
[LOG_DISK_SIZE [=] 'size_value'];

下面的語句將創建一個名叫ru1的資源單元,其中將包含若干個資源配置,如:可以的CPU、內存大小、存儲空間等。

ob> create resource unit ru1 max_cpu 1, min_cpu 1, memory_size '2G',
    log_disk_size '2G' ;

# 提示:Meta租户沒有獨立的Unit,租户資源管理過程中不管理Meta租户。
# 系統在創建租户時默認為Meta租户預留資源,各項資源從用户租户的資源中扣除。
# 目前Meta租户的各項資源採用默認配置,不支持用户指定。

通過DBA_OB_UNIT_CONFIGS視圖,可以查看所有資源配置和資源單元信息。

ob> select * from oceanbase.dba_ob_unit_configs \G;

# 輸出的信息如下:
*************************** 1. row ***************************
      UNIT_CONFIG_ID: 1
                NAME: sys_unit_config
         CREATE_TIME: 2025-04-09 14:50:05.982963
         MODIFY_TIME: 2025-04-09 14:50:05.982963
             MAX_CPU: 1
             MIN_CPU: 1
         MEMORY_SIZE: 2147483648
       LOG_DISK_SIZE: 2147483648
      DATA_DISK_SIZE: NULL
            MAX_IOPS: 9223372036854775807
            MIN_IOPS: 9223372036854775807
         IOPS_WEIGHT: 1
   MAX_NET_BANDWIDTH: 9223372036854775807
NET_BANDWIDTH_WEIGHT: 1
*************************** 2. row ***************************
      UNIT_CONFIG_ID: 1001
                NAME: ru1
         CREATE_TIME: 2025-04-09 14:56:02.348728
         MODIFY_TIME: 2025-04-09 14:56:02.348728
             MAX_CPU: 1
             MIN_CPU: 1
         MEMORY_SIZE: 2147483648
       LOG_DISK_SIZE: 2147483648
      DATA_DISK_SIZE: NULL
            MAX_IOPS: 9223372036854775807
            MIN_IOPS: 9223372036854775807
         IOPS_WEIGHT: 1
   MAX_NET_BANDWIDTH: 9223372036854775807
NET_BANDWIDTH_WEIGHT: 1
2 rows in set (0.001 sec)

通過使用alter resource unit語句可以修改資源單元的資源配置,例如:

ob> alter resource unit ru1 memory_size '3G';

二、 資源池

資源池由若干個資源單元組成,通過給資源池指定資源配置,可指定資源池下各資源單元的物理資源。下面展示了創建資源池的完整語法格式:

CREATE RESOURCE POOL pool_name
UNIT [=] unit_name,
UNIT_NUM [=] unit_num,
ZONE_LIST [=] ('zone_name' [, 'zone_name' ...]);

在創建資源池之前首先確定集羣中的可用區:

ob> use oceanbase;
ob> select zone,status,type from oceanbase.dba_ob_zones;

# 輸出的信息如下:
+-------+--------+-----------+
| zone  | status | type      |
+-------+--------+-----------+
| zone1 | ACTIVE | ReadWrite |
| zone2 | ACTIVE | ReadWrite |
+-------+--------+-----------+
2 rows in set (0.044 sec)

創建資源池的示例語句如下:

ob> create resource pool rp1 unit 'ru1', unit_num 2, zone_list ('zone1', 'zone2');

# 此時將出現下面的錯誤信息:
ERROR 4656 (HY000): resource pool unit num is bigger than zone server count

# 提示:資源池裏一個Zone下的Unit的數目大於這個Zone下Server的數量。

執行下面的語句確定每個Zone下的Server數量:

ob> use oceanbase;
ob> select svr_ip,id, zone from dba_ob_servers;

# 輸出信息如下:
+---------------+------+-------+
| svr_ip        | id   | zone  |
+---------------+------+-------+
| 192.168.79.11 |    1 | zone1 |
| 192.168.79.12 |    3 | zone1 |
| 192.168.79.13 |    2 | zone2 |
+---------------+------+-------+

# 提示:此時zone2中只包含一個OBServer。

修改上面的資源池創建語句如下:

ob> create resource pool rp1 unit 'ru1', unit_num 1, zone_list ('zone1', 'zone2');

通過DBA_OB_RESOURCE_POOLS視圖,可以查看所有資源池信息。

ob> select * from dba_ob_resource_pools \G;

# 輸出的信息如下:
*************************** 1. row ***************************
RESOURCE_POOL_ID: 1
            NAME: sys_pool
       TENANT_ID: 1
     CREATE_TIME: 2025-04-09 14:50:06.003151
     MODIFY_TIME: 2025-04-09 14:50:06.060751
      UNIT_COUNT: 1
  UNIT_CONFIG_ID: 1
       ZONE_LIST: zone1;zone2
    REPLICA_TYPE: FULL
*************************** 2. row ***************************
RESOURCE_POOL_ID: 1002
            NAME: rp1
       TENANT_ID: NULL
     CREATE_TIME: 2025-04-09 15:12:09.141263
     MODIFY_TIME: 2025-04-09 15:12:09.141263
      UNIT_COUNT: 1
  UNIT_CONFIG_ID: 1002
       ZONE_LIST: zone1;zone2
    REPLICA_TYPE: FULL
2 rows in set (0.001 sec)

切換資源池的資源配置可以調整資源池下每個資源單元的資源規格,進而調整租户在該資源池上的資源規格和服務能力。例如:

ob> create resource unit ru2 max_cpu 1, min_cpu 1, memory_size '2G',
    log_disk_size '2G' ;
ob> alter resource pool rp1 unit 'ru2';

# 提示:這裏將資源池rp1的資源單元配從ru1切換到了ru2上。
user avatar hdwang Avatar 6fafa Avatar
Favorites 2 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.