集群配置可以通过集群参数和租户参数来设定。通过参数的设定可以使 OceanBase 的行为符合您业务的要求。

OceanBase 数据库的集群参数分为集群级别和租户级别,同时参数分为动态生效和重启生效两类。通过集群参数的设置可以控制集群的负载均衡、合并时间、合并方式、资源分配和模块开关等功能。如果同时存在集群级别参数和租户级别参数,则集群级别参数将覆盖租户级别参数。

系统租户可以查看和设置所有其他租户的参数 (包括 sys 租户)。普通租户只能设置自己租户的参数。

不同租户集群参数的查看和修改级别如下表所示。

租户类型

参数查看

参数设置

系统租户

查看集群参数和其他租户参数。

可以设置集群参数或指定租户的参数。

普通租户

只能参看本租户的参数。

只能设置本租户的参数。

当 OBServer 启动后,如果没有指定参数,则使用系统指定的参数 Default 值。在 OBServer 进程启动成功后,参数值持久化到 /home/admin/oceanbase/etc/observer.config.bin 文件中,您可以通过 strings 命令来查看内容。

集群参数查询

系统租户和普通租户查询集群参数的语句如下所示:

  • 系统租户查询集群参数的语法

    1. SHOW PARAMETERS [SHOW_PARAM_OPTS] [tenant='tenant'];
  • 普通租户查询集群参数的语法

    1. SHOW PARAMETERS [SHOW_PARAM_OPTS]

其中各参数的含义如下:

  • [SHOW_PARAM_OPTS] :值可指定为 [LIKE ‘pattern’ | WHERE expr]。
  • [tenant='tenant'] :系统租户查看集群参数时需指定租户名。

具体示例如下所示:

  • 系统租户

    1. obclient> SHOW PARAMETERS LIKE 'sql_work_area' tenant=t1;obclient> SHOW PARAMETERS WHERE edit_level='static_effective' AND name='sql_work_area' tenant=t1;
  • 普通租户

    1. 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

定义该配置项的修改行为:

  • READONLY:表示该参数不可修改。

  • STATIC_EFFECTIVE:表示该参数可修改但需要重启 OBServer 才会⽣效。

  • DYNAMIC_EFFECTIVE:表示该参数可修改且修改后动态⽣效。

集群参数设置

集群参数修改语句的语法如下所示,同时修改多个系统配置项时,请用逗号(,)分隔。

  1. ALTER SYSTEM SET param_name = expr
  2. [COMMENT 'text']
  3. [PARAM_OPTS]
  4. [TENANT = 'tenantname']
  5. PARAM_OPTS:
  6. [ZONE='zone' | SERVER='server_ip:rpc_port']

示例:

  1. 系统租户设置集群配置项。

    1. obclient> ALTER system SET sql_port=8888;
  2. 系统租户设置租户配置项。

    1. obclient> ALTER system SET sql_work_area='1G' tenant='test_tenant';
  3. 租户设置租户配置项。

  1. obclient> ALTER system SET sql_work_area='2G';
  2. obclient> ALTER system SET memory_limit = '100G' SERVER='192.168.100.1:2882';
  3. 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)变量。