暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【玩转OceanBase笔记35】如何设置多租户管理参数

427

OceanBase 数据库的配置项分为集群级配置项和租户级配置项。您可以通过配置项的设置使 OceanBase 数据库的行为符合您业务的要求。

参数分类

OceanBase 数据库的配置项分为集群级配置项和租户级配置项。通过配置项的设置可以控制整个集群的负载均衡、合并时间、合并方式、资源分配和模块开关等功能。

  • 集群级配置项:作用范围为整个集群所有 OBServer。

  • 租户级配置项:作用范围为当前租户在集群内所在的 OBServer。

名称以 "_" 开头的配置项称为隐藏配置项,如:_ob_max_thread_num 。仅供开发人员在故障排查或紧急运维时使用。本文不对隐藏配置项进行详细介绍,下文中的配置项均不包含隐藏配置项。

不同租户对配置项的查看和修改级别如下表所示:

租户类型参数查看参数设置
系统租户集群级配置项、租户级配置项
说明
SHOW PARAMETERS 语句通过指定 TENANT 关键字来查看指定租户的配置项信息
集群级配置项、租户级配置项
说明
系统租户下,可以通过指定 TENANT 关键字来修改全部或指定租户的租户级配置项
普通租户集群级配置项和本租户的租户级配置项本租户的租户级配置项

当前 OceanBase 数据库中配置项的主要数据类型及其相关说明如下表所示:

数据类型说明
BOOLboolean 类型(布尔),支持 true/false。
CAPACITY容量单位,支持 b (字节)、k (KB,千字节)、m (MB,百万字节)、 g (GB,10亿字节)、t (TB,万亿字节)、p(PB,千万亿字节)。单位不区分大小写字母,默认为 m。
DOUBLE双精度浮点数,占用 64 bit 存储空间,精确到小数点后 15 位,有效位数为 16位 。
INTint64 整型,支持正负整数和 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:表示该参数可修改且修改后动态生效。

更多信息

更多配置项参考信息,请参见《系统参考》中的 系统配置项 。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论