我们可以在 SYS 租户中设置 OceanBase 数据库的配置项(参数),包括集群级的配置项和租户级的配置项。对于租户的全局变量的设置,我们一般是在各个租户下单独设置。事实上,我们也可以在 SYS 租户中对业务租户的全局变量进行设置管理。
适用版本
OceanBase 数据库 V2.x、V3.x 版本。
查看与设置集群配置项
集群配置项只能在 SYS 租户中进行设置。
obclient> SHOW PARAMETERS LIKE 'CPU_COUNT';
obclient> ALTER SYSTEM SET CPU_COUNT=10;
在 SYS 租户中查看与设置业务租户的配置项
obclient> SHOW PARAMETERS LIKE 'writing_throttling_trigger_percentage' tenant=mysql;
obclient> ALTER SYSTEM SET writing_throttling_trigger_percentage=90 tenant=mysql;
在业务租户中查看和设置业务租户的配置项和全局变量
obclient> SHOW PARAMETERS LIKE 'writing_throttling_trigger_percentage';
obclient> ALTER SYSTEM SET writing_throttling_trigger_percentage=90;
obclient> SHOW GLOBAL VARIABLES LIKE 'ob_query_timeout';
obclient> SET GLOBAL ob_query_timeout=20000000;
在业务租户中设置租户的配置项,不能在 ALTER SYSTEM 命令中指定租户,比如:
obclient [(none)]> SHOW PARAMETERS LIKE 'writing_throttling_trigger_percentage' tenant=mysql;
ERROR 1227 (42501): Access denied
obclient [(none)]> ALTER SYSTEM SET writing_throttling_trigger_percentage=100 tenant=mysql;
ERROR 1227 (42501): Access denied
在 SYS 租户中查看与设置业务租户的全局变量
使用 ALTER SYSTEM CHANGE TENANT 命令。
登录 SYS 租户,查看当前 session 变量 ob_query_timeout = 10000000。
obclient [oceanbase]> SHOW VARIABLES LIKE 'ob_query_timeout';
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| ob_query_timeout | 10000000 |
+------------------+----------+
使用 CHANGE TENANT 命令把租户从 sys 切换到 mysql。
obclient [oceanbase]> ALTER SYSTEM CHANGE TENANT mysql;
Query OK, 0 rows affected (0.00 sec)
obclient [oceanbase]> SHOW TENANT;
+---------------------+
| Current_tenant_name |
+---------------------+
| mysql |
+---------------------+
1 row in set (0.03 sec)
设置 mysql 租户的全局变量 ob_query_timeout=20000000。
obclient [oceanbase]> SET GLOBAL ob_query_timeout=20000000;
Query OK, 0 rows affected (0.01 sec)
obclient [oceanbase]> show global variables like 'ob_query%';
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| ob_query_timeout | 20000000 |
+------------------+----------+
1 row in set (0.00 sec)
session 变量的 ob_query_timeout 没有变化,依然是 10000000,因为 session 还是连接 sys 租户的 connection。
obclient [oceanbase]> show variables like 'ob_query%';
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| ob_query_timeout | 10000000 |
+------------------+----------+
1 row in set (0.00 sec)