oceanbase配置项主要用于运维,常用于控制机器及其以上级别的系统行为。可以作为节点启动参数和租户创建参数,也可以在节点运行时进行修改以调整系统行为,本文结合官方文档针对ob的配置项做简单的总结,不断完善中,以备后续自查。
首先查看配置项:
sys 租户和所有用户租户均可以使用 SHOW PARAMETERS 语句或视图 GV$OB_PARAMETERS 查询该配置项,
如下所示:
方式1:root@10.1.150 : (none) 21:31:44>show parameters like 'log_disk_size';
+-------+----------+--------------+----------+---------------+-----------+-------+----------------------------------------------------------------+------------+---------+---------+-------------------+---------------+-----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
+-------+----------+--------------+----------+---------------+-----------+-------+----------------------------------------------------------------+------------+---------+---------+-------------------+---------------+-----------+
| zone1 | observer | 10.1.141 | 2882 | log_disk_size | CAPACITY | 10G | the size of disk space used by the log files. Range: [0, +∞) | LOGSERVICE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0M | 0 |
| zone2 | observer | 10.1.142 | 2882 | log_disk_size | CAPACITY | 10G | the size of disk space used by the log files. Range: [0, +∞) | LOGSERVICE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0M | 0 |
| zone3 | observer | 10.1.143 | 2882 | log_disk_size | CAPACITY | 10G | the size of disk space used by the log files. Range: [0, +∞) | LOGSERVICE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0M | 0 |
+-------+----------+--------------+----------+---------------+-----------+-------+----------------------------------------------------------------+------------+---------+---------+-------------------+---------------+-----------+
3 rows in set (0.01 sec)
方式2:root@10.1.150 : oceanbase 21:34:21>select * from oceanbase.GV$OB_PARAMETERS where NAME='log_disk_size'\G
*************************** 1. row ***************************
SVR_IP: 10.1.141
SVR_PORT: 2882
ZONE: zone1
SCOPE: CLUSTER
TENANT_ID: NULL
NAME: log_disk_size
DATA_TYPE: CAPACITY
VALUE: 10G
INFO: the size of disk space used by the log files. Range: [0, +∞)
SECTION: LOGSERVICE
EDIT_LEVEL: DYNAMIC_EFFECTIVE
DEFAULT_VALUE: 0M
ISDEFAULT: NO
备注:查询结果中可以看到SCOPE是cluster,表明该配置项是集群级别生效的,如果 scope 列对应的值为 TENANT,则表示该配置项为租户级别。动态生效:edit_level 为 dynamic_effective,重启生效:edit_level 为 static_effective。
注意默认查看的是本租户的配置项,如需要查看其他租户的配置项,可以在sys租户中查看,如下所示:
SHOW PARAMETERS LIKE 'log_disk_size' TENANT='liuwenhe'; #查看某个租户的配置项
obclient>select * from oceanbase.GV$OB_PARAMETERS where NAME='log_disk_size' and and TENANT_ID='1002'; #查看某个租户的配置项
1、OceanBase 数据库的配置项分为集群级配置项和租户级配置项:
集群级配置项:指适用于整个 OceanBase 数据库集群的配置选项,它们具有全局性质,用于配置整个集群的基本信息、性能参数、安全选项等等。这些配置项通常包括数据备份和恢复、负载均衡等方面的配置选项。集群级配置项通常是在集群启动时进行配置,配置后不轻易修改。
租户级配置项:指适用于租户级别的配置选项,它们是针对单个租户或多个租户的配置选项。用于对单个租户或多个租户进行特定的配置和优化。这些配置项通常包括存储引擎参数、SQL执行策略、访问控制等方面的配置选项。租户级配置项通常可以在租户创建和管理时进行配置,可以随时根据需要进行修改。
2、生效方式:
配置项一般分为动态生效和重启生效两种方式,大部分配置项为动态生效方式,即不需要重启 OBServer 节点就可以生效。 动态生效:edit_level 为 dynamic_effective,重启生效:edit_level 为 static_effective;
3、配置项生效范围:
配置项生效范围:分为集群、Zone、机器和租户,但是并不是所有的配置项目都可以在集群、Zone、机器和租户的级别生效。例如集群级配置项,那就无法设置租户级别生效,也就是说集群级配置项,没办法给不同租户设置不同的值。但是集群级配置项可以针对不同observer、zone设置不同的值。
4、可以同时修改多个配置项:
同时修改多个配置项时,以逗号(,)分隔。如下所示:
root@10..150 : (none) 23:06:42>alter system set standby_db_preferred_upstream_log_region='beijing',log_disk_size='101G';
Query OK, 0 rows affected (0.02 sec)
5、集群级别和租户级别配置项修改途径:
1)集群级配置项不能通过普通租户设置,也不可以通过系统租户(即 sys 租户) 指定为普通租户设置,仅支持在系统租户下配置。例如,如下所示报错,因为 memory_limit 是集群级配置项。
root@10.150 : oceanbase 22:00:38>ALTER SYSTEM SET memory_limit='10G' TENANT='liuwenhe';
ERROR 5099 (42000): System config unknown
root@10.150 : oceanbase 22:00:54>ALTER SYSTEM SET memory_limit='10G' ;
Query OK, 0 rows affected (0.02 sec)
2)租户级配置项可以直接在本租户下修改,也可以在系统租户下通过指定 TENANT 关键字来修改。
6、修改配置项生效规则:
ALTER SYSTEM 语句不能同时指定 Zone 和 OBServer。并且在指定 Zone 时,仅支持指定一个 Zone;指定 OBServer 时,仅支持指定一个 OBServer。如果修改时,不指定 Zone 也不指定 OBServer,则集群级配置项会在整个集群所有 OBServer 上生效;租户级配置项会在当前租户在集群内所在的 OBServer 上生效。
7、修改配置项指定SCOPE的含义:
SCOPE:指定本次配置项修改的生效范围,默认为 BOTH。
SCOPE=SPFILE:表示只修改内部表中的配置项值,当 OBServer 节点重启以后才生效。仅重启生效的配置项支持。
SCOPE=BOTH:表示既修改内部表中的配置项值,又修改内存中的配置项值,修改立即生效,且 OBServer 节点重启以后配置值仍然生效;
8、如何确认持久化的值:
我们通过SHOW PARAMETERS 语句或视图 GV$OB_PARAMETERS 查询的值是正在使用中的值,那么如何确认内部表中的配置值(或者叫持久化的值)?
持久化到内部表与配置文件,可以在 /home/admin/oceanbase/etc/observer.config.bin(当前生效的持久话的值) 与 /home/admin/oceanbase/etc/observer.config.bin.history 文件(上一次持久化的值)中查询该配置项;
9、修改配置项的示例:
修改 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='Oracle';