集群配置可以通过集群参数和租户参数来设定。通过参数的设定可以使 OceanBase 的行为符合您业务的要求。
OceanBase 数据库的集群参数分为集群级别和租户级别,同时参数分为动态生效和重启生效两类。通过集群参数的设置可以控制集群的负载均衡、合并时间、合并方式、资源分配和模块开关等功能。如果同时存在集群级别参数和租户级别参数,则集群级别参数将覆盖租户级别参数。
系统租户可以查看和设置所有其他租户的参数 (包括 sys 租户)。普通租户只能设置自己租户的参数。
不同租户集群参数的查看和修改级别如下表所示。
租户类型 | 参数查看 | 参数设置 |
---|---|---|
系统租户 | 查看集群参数和其他租户参数。 | 可以设置集群参数或指定租户的参数。 |
普通租户 | 只能参看本租户的参数。 | 只能设置本租户的参数。 |
当 OBServer 启动后,如果没有指定参数,则使用系统指定的参数 Default 值。在 OBServer 进程启动成功后,参数值持久化到 /home/admin/oceanbase/etc/observer.config.bin
文件中,您可以通过 strings
命令来查看内容。
集群参数查询
系统租户和普通租户查询集群参数的语句如下所示:
系统租户查询集群参数的语法
SHOW PARAMETERS [SHOW_PARAM_OPTS] [tenant='tenant'];
普通租户查询集群参数的语法
SHOW PARAMETERS [SHOW_PARAM_OPTS]
其中各参数的含义如下:
[SHOW_PARAM_OPTS]
:值可指定为 [LIKE ‘pattern’ | WHERE expr]。[tenant='tenant']
:系统租户查看集群参数时需指定租户名。
具体示例如下所示:
系统租户
obclient> SHOW PARAMETERS LIKE 'sql_work_area' tenant=t1;obclient> SHOW PARAMETERS WHERE edit_level='static_effective' AND name='sql_work_area' tenant=t1;
普通租户
obclient> SHOW PARAMETERS LIKE 'sql_work_area';
SHOW PARAMETERS
返回结果中的列属性如下表所示。
列名 | 含义 |
---|---|
svr_ip | 机器 IP。 |
svr_port | 机器的端口。 |
name | 配置项名。 |
value | 配置项值。 |
type | 配置项数据类型(NUMBER、STRING、CAPACITY…)。 |
info | 配置项解释。 |
section | 配置项分类。 |
scope | 配置项范围属性(Tenant|Cluster)。 |
source | 当前值来源(Tenant|Cluster|CommandLine|ObAdmin|File)。 |
edit_level | 定义该配置项的修改行为:
|
集群参数设置
集群参数修改语句的语法如下所示,同时修改多个系统配置项时,请用逗号(,)分隔。
ALTER SYSTEM SET param_name = expr
[COMMENT 'text']
[PARAM_OPTS]
[TENANT = 'tenantname']
PARAM_OPTS:
[ZONE='zone' | SERVER='server_ip:rpc_port']
示例:
系统租户设置集群配置项。
obclient> ALTER system SET sql_port=8888;
系统租户设置租户配置项。
obclient> ALTER system SET sql_work_area='1G' tenant='test_tenant';
租户设置租户配置项。
obclient> ALTER system SET sql_work_area='2G';
obclient> ALTER system SET memory_limit = '100G' SERVER='192.168.100.1:2882';
obclient> ALTER system SET memory_limit = '100G' ZONE='z1';
参数设置说明:
edit_level='dynamic_effective'
表示参数设置后后立刻生效,edit_level='static_effective'
表示参数设置后需要重启 OBServer 才生效。ALTER SYSTEM
语句不能同时指定 Zone 和 Server。并且在指定 Zone 时,仅支持指定一个Zone;指定 Server 时,仅支持指定一个 Server。集群级别的变量(Scope) 不能通过普通租户设置,也不可以通过 sys 租户指定普通租户来设置。例如,
alter system set memory_limit='100G' tenant='test_tenant'
将导致报错,因为memory_limit
是集群级别(scope)变量。