OceanBase學習之路53|多租戶管理引數如何設定?

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

OceanBase 資料庫的配置項分為叢集級配置項和租戶級配置項。您可以透過配置項的設定使 OceanBase 資料庫的行為符合您業務的要求。

引數分類

OceanBase 資料庫的配置項分為叢集級配置項和租戶級配置項。透過配置項的設定可以控制整個叢集的負載均衡、合併時間、合併方式、資源分配和模組開關等功能。

  • 叢集級配置項:作用範圍為整個叢集所有 OBServer。

  • 租戶級配置項:作用範圍為當前租戶在叢集內所在的 OBServer。

名稱以 "_" 開頭的配置項稱為隱藏配置項,如: _ob_max_thread_num 。僅供開發人員在故障排查或緊急運維時使用。本文不對隱藏配置項進行詳細介紹,下文中的配置項均不包含隱藏配置項。

不同租戶對配置項的檢視和修改級別如下表所示:

租戶型別 引數檢視 引數設定
系統租戶 叢集級配置項、租戶級配置項
說明
SHOW PARAMETERS 語句透過指定  TENANT 關鍵字來檢視指定租戶的配置項資訊
叢集級配置項、租戶級配置項
說明
系統租戶下,可以透過指定  TENANT 關鍵字來修改全部或指定租戶的租戶級配置項
普通租戶 叢集級配置項和本租戶的租戶級配置項 本租戶的租戶級配置項

當前 OceanBase 資料庫中配置項的主要資料型別及其相關說明如下表所示:

資料型別 說明
BOOL boolean 型別(布林),支援 true/false。
CAPACITY 容量單位,支援 b (位元組)、k (KB,千位元組)、m (MB,百萬位元組)、 g (GB,10億位元組)、t (TB,萬億位元組)、p(PB,千萬億位元組)。單位不區分大小寫字母,預設為 m。
DOUBLE 雙精度浮點數,佔用 64 bit 儲存空間,精確到小數點後 15 位,有效位數為 16位 。
INT int64 整型,支援正負整數和 0。
MOMENT 時刻。格式為  hh:mm(例如  02:00);或者特殊值  disable,表示不指定時間。目前僅用於  major_freeze_duty_time 引數。
STRING 字串。使用者輸入的字串的值。
STRING_LIST 字串列表,即以分號 (;)分隔的多個字串。
TIME 時間型別。支援 us (微秒)、ms (毫秒)、s (秒), m (分鐘)、h (小時)、d (天)等單位。如果不加字尾,預設為秒(s)。單位不區分大小寫字母。

透過 SQL 語句修改配置項

修改配置項的 SQL 語法如下:

ALTER SYSTEM [SET]
parameter_name = expression [SCOPE = {SPFILE | BOTH}] [COMMENT [=] 'text']
[ TENANT [=] ALL|tenant_name ] {SERVER [=] 'ip:port' | ZONE [=] 'zone'};

引數說明:

  • parameter_name:指定要修改的配置項名稱。

  • expression:指定修改後的配置項的值。

  • COMMENT 'text':用於新增關於本次修改的註釋。該引數為可選,建議不要省略。

  • SCOPE:指定本次配置項修改的生效範圍,預設為  BOTH

    • SPFILE:表示只修改內部表中的配置項值,當 OBServer 重啟以後才生效。僅重啟生效的配置項支援。

    • BOTH:表示既修改內部表中的配置項值,又修改記憶體中的配置項值,修改立即生效,且 OBServer 重啟以後配置值仍然生效。

  • TENANT:用於在系統租戶下,修改所有或指定租戶的租戶級配置項。

    • ALL:所有租戶。

    • tenant_name:指定租戶。

  • SERVER:只修改指定 Server 例項的某個配置項。

  • ZONE:表明本配置項的修改針對指定叢集的特定 Server 型別,否則,針對所有叢集的特定 Server 型別。

說明

  • 同時修改多個配置項時,以逗號(,)分隔。
  • 叢集級配置項不能透過普通租戶設定,也不可以透過系統租戶(即  sys 租戶) 指定為普通租戶設定,僅支援在系統租戶下配置。例如,執行  ALTER SYSTEM SET memory_limit='100G' TENANT='test_tenant' 語句將導致報錯,因為  memory_limit 是叢集級配置項。
  • 租戶級配置項可以直接在本租戶下修改,也可以在系統租戶下透過指定  TENANT 關鍵字來修改。
  • ALTER SYSTEM 語句不能同時指定 Zone 和 OBServer。並且在指定 Zone 時,僅支援指定一個 Zone;指定 OBServer 時,僅支援指定一個 OBServer。如果修改時,不指定 Zone 也不指定 OBServer,則叢集級配置項會在整個叢集所有 OBServer 上生效;租戶級配置項會在當前租戶在叢集內所在的 OBServer 上生效。
  • 確認一個配置項為叢集級別還是租戶級別,可根據  SHOW PARAMETERS 語句執行結果中的  scope 列對應的值來判斷:
  • scope 值為  CLUSTER 則表示為叢集級配置項。
  • scope 值為  TENANT 則表示為租戶級配置項。

示例

修改  log_disk_utilization_threshold 配置項的示例如下:

obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20;

修改指定 Zone 的  log_disk_utilization_threshold 配置項的示例如下:

obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20 ZONE='z1';

修改指定 OBServer 的  log_disk_utilization_threshold 配置項的示例如下:

obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20 SERVER='XXX.XXX.XXX.XXX:XXXXX';

在系統租戶下,修改所有或指定租戶的租戶級配置項。示例如下:

obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20 TENANT='ALL';
obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20 TENANT='MYSQL';

說明

執行成功以後,所有被指定租戶的配置項均會被修改。

透過 SQL 語句檢視配置項

檢視配置項的 SQL 語法如下:

SHOW PARAMETERS [LIKE 'pattern' | WHERE expr] [TENANT = tenant_name]

說明

  • 系統租戶下,可以檢視本租戶的租戶級配置項和叢集級配置項資訊。同時,可以透過指定  TENANT 關鍵字來檢視指定租戶的配置項資訊。
  • 普通租戶下,可以檢視本租戶的租戶級配置項以及系統租戶的叢集級配置項資訊。
  • WHERE expr 中可以指定的列屬性與  SHOW PARAMETERS 返回結果中的列屬性一致。

透過  SHOW PARAMETERS 語句檢視配置項的示例如下:

obclient> SHOW PARAMETERS WHERE scope = 'tenant';
obclient> SHOW PARAMETERS WHERE svr_ip != 'XXX.XXX.XXX.XXX';
obclient> SHOW PARAMETERS WHERE INFO like '%ara%';
obclient> SHOW PARAMETERS LIKE 'large_query_threshold';
+-------+----------+-----------------+----------+-----------------------+-----------+-------+------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+-------------------+
| zone  | svr_type | svr_ip          | svr_port | name                  | data_type | value | info                                                                                                                         | section | scope   | source  | edit_level        |
+-------+----------+-----------------+----------+-----------------------+-----------+-------+------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+-------------------+
| zone1 | observer | XXX.XXX.XXX.XXX |     2882 | large_query_threshold | NULL      | 5s    | threshold for execution time beyond which a request may be paused and rescheduled as a \'large request\'. Range: [1ms, +∞)   | TENANT  | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |
+-------+----------+-----------------+----------+-----------------------+-----------+-------+------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+-------------------+
1 row in set (0.01 sec)

返回結果中的列屬性如下表所示:

列名 含義
zone 所在的 Zone
svr_type 機器型別
svr_ip 機器 IP
svr_port 機器埠
name 配置項名
data_type 配置項資料型別,包括  NUMBER 、 STRING 、 CAPACITY 等
value 配置項值
說明
由於在修改配置項值時,支援修改指定 Zone 或 Server 的配置項值,故不同 Zone 或 Server 對應的配置項的值可能不同。
info 配置項的說明資訊
section 配置項所屬的分類:
  • SSTABLE:表示 SSTable 相關的配置項。
  • OBSERVER:表示 OBServer 相關的配置項。
  • ROOT_SERVICE:表示 RootService 相關的配置項。
  • TENANT:表示租戶相關的配置項。
  • TRANS:表示事務相關的配置項。
  • LOAD_BALANCE:表示負載均衡相關的配置項。
  • DAILY_MERGE:表示合併相關的配置項。
  • CLOG:表示 Clog 相關的配置項。
  • LOCATION_CACHE:表示 Location Cache 相關的配置項。
  • CACHE:表示快取相關的配置項。
  • RPC:表示 RPC 相關的配置項。
  • OBPROXY:表示 OBProxy 相關的配置項。
scope 配置項範圍屬性:
  • TENANT:表示該配置項為租戶級配置項
  • CLUSTER:表示該配置項為叢集級配置項
source 當前值來源:
  • TENANT
  • CLUSTER
  • CMDLINE
  • OBADMIN
  • FILE
  • DEFAULT
edit_level 定義該配置項的修改行為:
  • READONLY:表示該引數不可修改。
  • STATIC_EFFECTIVE:表示該引數可修改但需要重啟 OBServer 才會生效。
  • DYNAMIC_EFFECTIVE:表示該引數可修改且修改後動態生效。

更多資訊

更多配置項參考資訊,請參見《系統參考》中的  系統配置項 。


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

相關文章