OceanBase學習之路39|什麼是修改資源池?

老樹樁12發表於2023-01-18

修改資源池是實現租戶擴容或縮容的另一種方式。例如,在每個 Zone 中增加或減少節點數量,可以透過修改引數  UNIT_NUM 來實現。

透過 SQL 語句修改資源池

修改資源池語句的語法如下:

ALTER RESOURCE POOL pool_name 
UNIT [=] unit_name, 
UNIT_NUM [=] unit_num [DELETE UNIT = (unit_id_list)], 
ZONE_LIST [=] ('zone'[, 'zone' ...]);

語句使用說明:

  • 該語句僅支援由  sys 租戶的管理員執行。

  • 修改資源池的命令每次僅支援修改一個引數。

  • UNIT_NUM 表示指定修改每個 Zone 下的資源單元個數,取值需要小於等於對應 Zone 中的 OBServer 的個數。

    減小  UNIT_NUM 時,使用  DELETE UNIT 可以明確指定本次縮容即將刪除的 Unit。如果不指定  DELETE UNIT,則系統將自動選擇 Unit 進行刪除。

    注意

    使用  DELETE UNIT 明確指定待刪除的  unit_id 時,還需要滿足以下條件:

    • 待刪除的  unit_id 列表中,每個 Zone 內刪除的 Unit 的數量必須相等,目前認為刪除列表中各 Zone 的 Unit 數量不相同的縮容操作屬於非法操作。

    • 待刪除的  unit_id 列表中,每個 Zone 內刪除的 Unit 的數量和  UNIT_NUM 的數量需要匹配。

      指定待刪除的  unit_id 時,  unit_id 可透過查詢檢視  GV$OB_UNITS 獲取。

  • ZONE_LIST 表示指定資源池的使用範圍。

假設當前環境中存在如下所示的資源單元和資源池。

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 2, ZONE_LIST ('z1','z2','z3');

則修改資源池的示例如下:

  • 修改資源池  pool1 的資源單元,修改後, unit2 替代  unit1 屬於資源池 pool1

    obclient> CREATE RESOURCE UNIT unit2 MAX_CPU 8, MIN_CPU=8, MEMORY_SIZE '40G';
    obclient> ALTER RESOURCE POOL pool1 unit='unit2';
  • 不指定  unit_id,將資源池  pool1 中每個 Zone 下的資源單元個數修改為 1 個。

    obclient>ALTER RESOURCE POOL pool1 UNIT_NUM = 1;
  • 指定刪除資源池  pool1 中  unit_id 為  1001 、 10031005 的資源單元,使每個 Zone 下的資源單元個數為 1 個。

    obclient> ALTER RESOURCE POOL pool1 UNIT_NUM 1 DELETE UNIT = (1001, 1003,1005);
  • 修改資源池  pool1, 使資源池  pool1 中  ZONE_LIST 的範圍擴大到  'z1','z2','z3','z4'

    obclient> ALTER RESOURCE POOL pool1 ZONE_LIST=('z1','z2','z3','z4');
  • 每次只能修改資源池的一個引數,同時修改資源池的兩個引數時,會報錯。

    obclient> ALTER RESOURCE POOL pool1 unit='unit1', zone_list=('HANGZHOU_1');
    ERROR 1235 (0A000): alter unit_num, resource_unit, zone_list in one cmd not supported


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026075/viewspace-2932545/,如需轉載,請註明出處,否則將追究法律責任。

相關文章