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

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

系统租户可以查看和设置所有其他租户的参数 (包括 sys 租户)。普通租户只能设置自己租户的参数。下表展示了不同租户的集群参数查看和修改级别:

租户类型

参数查看

参数设置

系统租户

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

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

普通租户

只能参看本租户的参数。

只能设置本租户的参数。

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

集群参数查询

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

  1. -- 系统租户查询集群参数语法
  2. show parameters [SHOW_PARAM_OPTS] [tenant='tenant'];
  3. -- 普通租户查询集群参数语法
  4. show parameters [SHOW_PARAM_OPTS]

其中各参数的含义如下:

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

示例如下所示:

  1. -- 系统租户
  2. show parameters like 'sql_work_area' tenant=t1
  3. show parameters where edit_level='static_effective' and name='sql_work_area' tenant=t1;
  4. --普通租户
  5. 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)。
editable是否可修改。
dynamic是否支持在线动态修改。

集群参数设置

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

  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 系统租户设置集群配置项
  2. alter system set sql_port=8888
  3. -- (2 系统租户设置租户配置项
  4. alter system set sql_work_area='1G' tenant='test_tenant'
  5. -- (3 租户设置租户配置项
  6. alter system set sql_work_area='2G'
  7. alter system set memory_limit = '100G' SERVER='192.168.100.1:2882';
  8. 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)变量。

集群参数配置项参考

下表展示了集群级别配置项,只允许 sys 租户修改:

配置项

默认值

说明

balancer_idle_time

5 m

均衡任务空闲等待时间。取值范围:[10s, +∞)

balancer_log_interval

1 m

在日志中打印负载均衡任务统计信息的间隔。取值范围:[1s,+∞)

data_copy_concurrency

20

最大执行数据拷贝任务的并发数。取值范围: [1,+∞)

data_dir

store

数据存放目录。

datafile_disk_percentage

90

数据文件占磁盘空间的百分比。取值范围:[5,90]

datafile_size

0

数据文件的大小指定。

如果值为 0,数据文件大小使用 datafile_disk_percentage计算出的结果。如果不为 0,数据文件的大小使用 datafile_size 并且忽略 datafile_disk_percentage 的设定

default_compress

COMPRESS FOR ARCHIVE

指定 Oracle 租户下存储层的数据格式,取值范围如下:

  • NOCOMPRESS
  • COMPRESS
  • COMPRESS FOR OLTP
  • COMPRESS FOR QUERY
  • COMPRESS FOR ARCHIVE

tableapi_transport_compress_func

none

tableAPI 传输采用的压缩方式。

default_progressive_merge_num

0

控制表的合并行为,取值范围为 [0-100]:

  • 当设置为 0 时,每次合并均做增量合并
  • 当设置为 1 时,每次合并均做全量合并
  • 当设置为> 1 时,发生 Schema 变更时按照指定轮次做渐进合并

zone_merge_concurrency

0

并行合并的 Zone 数量。需要在开启轮转合并时生效。

default_row_format

dynamic

指定 MySQL 租户下存储层的数据格式,取值范围如下:

  • REDUNDANT
  • COMPAT
  • DYNAMIC
  • COMPRESSED

Devname

bond0

网卡名称

enable_sys_table_ddl

FALSE

默认为 false,如果需要建 table_id 小于 1000 的表,需要执行: alter system setenable_sys_table_ddl=’true’; 

tablet_size

128M

分区内部并行处理时,分片的大小;数值为 0 表示不采用分区内并行。

取值范围:[0,+∞) 且必须是 2 M 整数倍。

election_cpu_quota

3

选举租户 CPU 数目。 取值范围:[0,10]

enable_auto_leader_switch

TRUE

允许系统自动切主。

enable_manual_merge

FALSE

是否开启手动合并。

• True:开启。

• False:不开启。

用于 DBA 管理错峰是否暂停,只有在 enable_manual_merge 为 True 的时 max_merge_duration_time 才有效。如果这个值为 True,则认为 DBA 关闭自动合并。

enable_unit_balance_resource_weight

FALSE

是否启用人工指定的资源权重:

• True:启用。

• False:不启用。

unit_balance_resource_weight

指定各种资源的权重,权重值用 [0, 100] 整数表示,如果命令中没有指定某一项,则该资源权重默认为 0。字符串不区分大小写,如果 disk+iops+memory+cpu 不等于 100,则报错。例:”disk:30,iops:20,memory:10,cpu:40”。

enable_pg

False

是否开启 Partition Group。

enable_rebalance

TRUE

是否开启分区负载均衡。

• True:开启。

• False:不开启。

enable_rereplication

TRUE

是否开启 Partition 的副本复制。如果不开启,则即使Partition的副本数小于设置的“ob_default_replica_num”,也不会进行复制。

• True:开启。

• False:不开启。

location_fetch_concurrency

20

获取 Location Cache 并发数。 取值范围:[1,1000]

enable_record_trace_log

FALSE

默认为 true,表示只要出现错误,就一定打印 trace log; TRACE_LOG 默认日志级别为 TRACE。

1. 三个配置项: GCONF.trace_log_sampling_interval (默认10ms) GCONF.trace_log_slow_query_watermark (默认100ms) CONF.enable_record_trace_log (默认True)。

2. 默认情况下,慢查询(如有)会每隔sampling_trace_log_interval打印一次。

3. 默认情况下,白名单中的错误码,只要出现,就一定打印

4. 默认情况下,除了2、3中规定的情况,其余时候都不打印TRACE LOG。

5. 当 enable_record_trace_log 被设置为 False 的时候,每隔sampling_trace_log_interval 会打印一次 SLOW QUERY 或白名单错误码日志。

ignore_replica_checksum_error

FALSE

是否忽略副本校验错误。

location_cache_refresh_min_interval

100ms

事务模块两阶段提交协调者等待参与者的回复的超时时间。默认是 100 ms. 如果超时事务模块会发起 Location 更新任务,但现在无主选举耗时需要 (2s~8s),为了避免多余的 Location 更新 SQL,Location cache 内部执行异步更新任务时先判断 cache 中的 Location 的更新时间,如果更新时间距离当前时间在 1 s 内,Location cache 则忽略这次异步更新请求。事务模块在外层继续以 100 ms 的频率触发。

取值范围:[0s,+∞)

internal_sql_execute_timeout

30s

内部 SQL 执行超时时间。

取值范围:[1000us,10m]

net_thread_count

12

用于设置 Libeay 的 I/O 线程数量,如 net_thread_count 为 8,则代表 RPC 和 mysql 的 libeasy 的 IO 线程各为 8 个线程。

取值范围: [1,100]

large_query_worker_percentage

30

预留给大请求的工作线程比例。

取值范围:[0,100]

auto_leader_switch_interval

30s

RootService 做 Leader 协调一致的时间间隔。

取值范围:[1s,+∞)

leak_mod_to_check

NONE

检查指定模块是否存在内存泄漏。

lease_time

10s

心跳租约时长。RootService 在 lease_duration_time 这个时间段内未收到 OBServer 的心跳信息,则任务 OBServer 下线。 不建议修改。

取值范围:[1s, 5m]

location_cache_priority

1000

Location Cache 的优先级。

取值范围: [1, +∞)

location_cache_expire_time

600s

OBServer 从 RootService 中获取 Partition 的位置信息,并缓存到本地的超时时间。 不建议修改。

取值范围:[1s, +∞)

location_refresh_thread_count

4

OBServer 从 RootService 中获取 Partition 的位置信息的线程数。

取值范围:[1, 100]

major_freeze_duty_time

2:00

每天定时执行升级主版本号的冻结操作的时间。

取值范围:[00:00-24:00]

freeze_trigger_percentage

70

memstore 使用比例达到阀值触发冻结。

minor_deferred_gc_time

0s

转储 sstable 延迟回收时间,合并后过了gc 时间回收相应 sstable。

取值范围:[0s, 24h]

max_syslog_file_count

0

指定最多同时存在多少个日志文件,每个日志文件占用 256 M 空间。当值为 0 时则不进行删除。

取值范围:[0, +∞)

enable_async_syslog

True

是否对进程打印日志采用异步方式。

包括 observer.log, election.log, rootservice.log。

zone_merge_timeout

3h

单个 Zone 合并的超时时间。

取值范围:[1s, +∞)

zone_merge_order

每日合并过程中,Zone 的合并顺序

memory_limit

0

内存大小的限制,设定此参数将忽略另一个内存控制参数 memory_limit_percentage。比如 memory_limit=’100G’ 表示 OBServer 总内存为 100 G。

设置为 0 表示采用 memory_limit_percentage 控制 OBServer 从操作系统中申请的内存总数。

注意:memory_limit 的单位为 MB,如果不写字符串而是数字默认单位为 MB。比如 memory_limit=40960 表示 40 G。

memory_limit_percentage

80

内存使用上限。

取值范围:[10,90]

cache_wash_threshold

4GB

内存预留值。如果内存空间小于指定值时,内存空间将被清理。

取值范围: [0,+∞)

memstore_limit_percentage

50

memstore_limit_percent=memstore_limit / min_memory,min_memory 为创建租户的时候给定。

取值范围: (0,100)

租户 memstore limit 的值通过此配置项计算。比如租户的资源单元内存为 20 G,那么该租户默认的 memstore_limit 为 10 G。

mysql_port

2880

OBServer 中的 MySQL 协议监听端口。

取值范围:(1024, 65536)

rpc_timeout

2s

默认 RPC 的超时时间。

取值范围:[0,+∞)

cpu_count

0

单个 OBServer CPU 数。如果为 0,则根据 sysconf 获取 CPU 个数,否则使用该配置。

取值范围:[0,+∞)

cpu_reserved

2

节点预留给操作系统的 CPU 数,节点 OBServer 总 CPU 配额为节点 CPU 总数减去该配置项。

取值范围:[0,15]

syslog_level

INFO

日志级别: DEBUG、TRACE、INFO、WARN、USER_ERR、 ERROR。

obconfig_url

OBConfig服务 Web 页面地址。

OBServer 从指定 URL 获取 RootService 的地址。

large_query_threshold

100ms

超过时间的请求可能被暂停,暂停后自动变成大查询请求,大查询请求将在单独的队列进行调度。

大查询请求鉴定阈值。 取值范围:[1ms,+∞)

plan_cache_evict_interval

30s

启动 Plan cache 淘汰机制的间隔时间。

取值范围:[0,+∞)

partition_table_scan_batch_count

999

Partition Table 遍历时预读的副本数。

取值范围:(0, 65536]

balancer_task_timeout

20m

负载均衡任务超时时间。取值范围:[[1s,+∞)

enable_syslog_recycle

FALSE

是否打开记录旧日志的开关。配合 max_syslog_file_count 生效,用于回收旧的日志文件。 

若 max_syslog_file_count 不为0,但 enable_syslog_recyle 设定为False, 进程打印日志将在日志文件数达到 max_syslog_file_count 时停止记录。

memory_reserved

500M

预留内存大小。

取值范围:[10 M,最大内存值]

resource_hard_limit

100

分配 unit 使用。和 resource_soft_limit 配置项一起使用。 如果 server 的资源占用比少于 resource_soft_limit,按 best_fit 来分配 unit;如果大于 resource_soft_limit,按照 leaset_load 来分配 unit。 最终 Server 资源占比不能超过 resource_hard_limit。

取值范围:(0, 10000]

resource_soft_limit

50

分配 unit 使用。和 resource_hard_limit 配置项一起使用。 如果 Server 的资源占用比少于 resource_soft_limit,按 best_fit 来分配 unit;如果大于 resource_soft_limit,按照 leaset_load 来分配 unit。 最终 Server 资源占比不能超过 resource_hard_limit。

取值范围:(0, 10000]

rootservice_ready_check_interval

3s

启动 RootService 的时候,restart task 失败重试间隔。

取值范围:[100000us, 1m]

rootservice_list

RootService 列表,选主协议会基于这个列表对内部消息的有效性进行验证。

rootservice_async_task_queue_size

16384

RootService 异步任务队列大小,为 2 的 N 次方。

取值范围:[8,131072]

rootservice_async_task_thread_count

4

RootService 异步任务线程数。

取值范围:[1, 10]

rpc_port

2500

远程访问的协议端口。

取值范围:(1024, 65536)

trace_log_sampling_interval

10ms

TRACE_LOG 默认日志级别为TRACE慢查询(如有)会每隔 trace_log_sampling_interval 打印一次日志到日志文件。 当 enable_record_trace_log 被设置为 False 的时候,每隔 trace_log_sampling_interval 会打印一次 SLOW QUERY 或白名单错误码日志。

取值范围:[0ms,+∞)

server_data_copy_in_concurrency

2

迁移任务时,机器同时迁入的任务数不超过指定值。取值范围:[1,+∞)

server_data_copy_out_concurrency

2

迁移任务时,机器同时迁出的任务数不超过指定值。取值范围:[1,+∞)

system_cpu_quota

10

clog 操作使用 CPU 数。

取值范围:[0,10]

server_cpu_quota_max

5

OBServer 内部预留的 CPU 数最大值,用于进行内部操作的。

server_cpu_quota_min

2.5

OBServer 内部预留的 CPU 数最小值,用于进行内部操作的。

location_cache_cpu_quota

5

Location cache 使用的 CPU quota。

server_permanent_offline_time

3600s

服务器永久下线时间。

取值范围:[20s,+∞)

trace_log_slow_query_watermark

100ms

打印 trace log 慢查询控制阈值。

取值范围:[1ms,+∞)

enable_rootservice_standalone

False

enable_rootservice_standalone 配置项,使系统租户可独占单独的机器。

enable_sys_unit_standalone

False

sys 租户的 sys unit 是否独立部署,独占机器。

tenant_task_queue_size

65536

每个租户线程队列大小。

取值范围:[1024,+∞)

workers_per_cpu_quota

10

工作线程与节点配额的倍数,默认 10 倍。

取值范围:[2,20]

token_reserved_percentage

30

每次预留多少比例的空闲 CPU token 数给租户(不超过上限)。

取值范围:[0,100]

trx_2pc_retry_interval

100ms

事务两阶段过程中重试间隔。

取值范围:[1ms,1000ms]

clog_sync_time_warn_threshold

100ms

commitlog 同步超过多长时间报 WARN 日志。

取值范围:[1ms,1000ms]

balancer_tolerance_percentage

10

单元不均衡忍耐度;单元负载平均(unit 使用磁盘平均)。如Zone 中有 unit1 和 unit2,对应磁盘使用比例为 80% 和 20%,平均磁盘使用率为 50%,配置的不均衡忍耐度

(unit_load_tolerance_percent)为10%。

取值范围:[5, 100)

virtual_table_location_cache_expire_time

8s

虚拟表 Location Cache 过期时间。

取值范围:[1s,+∞)

zone

Zone 名称。

enable_sql_audit

TRUE

是否开启 SQL 审计功能,默认值为 TRUE 表示开启 SQL 审计功能。 取值为 TRUE 或 FALSE。

sql_audit_memory_limit

3G

开启 SQL 审计功能状态下,SQL 审计内部表最大可用内存,默认为 256 MB。

取值范围:[256M, +∞)

rootservice_memory_limit

2G

Rootservice 负载合并,负载均衡等调度。该值限制 rootservice 最大内存使用量。根据普通租户下副本数量的不同可以动态调整。一般情况下 rootservice 内存使用量和租户的副本数量成正比。副本数量大的集群可以适当调大该参数。

max_string_print_length

500

控制打印字符串最大长度。

单位为 Byte 取值范围:(0,+∞)。

partition_table_check_interval

30m

partition replica - 分区副本清理的时间间隔

取值范围:(1min,+∞)。

enable_upgrade_mode

false

进入升级模式时系统会关闭 Partition 迁移复制等需要禁止的功能,后续在升级时都需要禁止的内容(比如升级时不能进行 DDL 等),都统一通过这个系统配置项控制,这样升级流程更简单,升级前设置 enable_upgrade_mode为ture,升级后设置 enable_upgrade_mode 为 false。

merger_completion_percentage

100

范围:[5, 100],表示合并的 Partition 数和数据量达到这个百分比后,即认为合并完成。

merger_check_interval

10m

合并任务检查各个 Zone 的合并情况的时间间隔。

取值范围:[10s,60m]

min_observer_version

 

无需用户设置,用于OB版本升级时记录最小版本号

bf_cache_miss_count_threshold

100

用于控制bloomfilter cache的触发次数,当宏块miss次数达到这个值时,给创建bloomfilter cache。默认100,0表示关闭

enable_rich_error_msg

false

控制observer返回给客户端的文本错误消息内容,仅当SQL执行错误时有意义。当取值为true时,会在错误消息前添加(1)observer的ip:port (2)出错时间(3) 日志TraceID;取值为false时,不保持文本错误消息内容不变。

sys_bkgd_net_percentage

60

默认值:60,取值范围[0,100],0表示关闭,100表示不限流。用于控制系统维护操作(合并、迁移等)所占的网络资源比例。

high_priority_net_thread_count

0

指定处理高优先级消息的io线程数量,作为启动参数生效,0表示不创建此类线程。

merge_thread_count

0,动态

取值范围:[0, 64], 默认值:0,默认值为0时,则合并线程数与目前是一样,即MIN[逻辑CPU数30%, 10]. 说明:用于设置每日合并工作的线程数。动态参数,修改后不需要重启即刻生效

autoinc_cache_refresh_interval

0,动态

取值范围:[100ms, +∞], 默认值:10s ,说明:自增列刷新非NULL值的间隔时间。动态参数,修改后不需要重启即刻生效。

global_write_halt_residual_memory

30

取值范围:[0-100], 默认值:30 ,说明:控制全局禁写时剩余内存量,当全局剩余内存比global_write_halt_residual_memory小时,普通租户就禁止写入,sys租户不受影响,回放也不受影响。   这个配置项是个百分比,百分比基数是:memory_limit - system_memory,也即扣掉了为OB内部500租户预留的内存。计算剩余内存的时候,blockcache可以挤占的那部分内存看作memstore可以使用的内存。

global_major_freeze_residual_memory

40

取值范围[0-100], 且需要比global_write_halt_residual_memory大,否则全局freeze trigger实际不生效,只能依靠tenant触发major freeze, 默认值:65 。说明:用来控制全局触发freeze的剩余内存量,当active memstore全局可用内存(停写之前可以继续写入的内存)比global_major_freeze_residual_memory小时,触发majorfreeze。  这个配置项是个百分比,百分比基数是:memory_limit - system_memory,也即扣掉了为OB内部500租户预留的内存。  已经冻结的memstore在merge完成后,内存就可以释放,所以冻结的memstore占用的内存在这里被看作是active_memstore可以使用的内存,  blockcache可以挤占的那部分内存也被看作是memstore可以使用的内存。

enable_global_freeze_trigger

False

取值范围:TRUE|FALSE, 用来控制全局的freeze trigger和全局的memstore limit是否生效,缺省为False即不生效,改为True之后会生效

minor_freeze_times

5

取值范围:[0, 65536), 默认值:3,作用说明:当内存超过预设限制后会触发minor freeze或major freeze,此选项指定在触发的连续两次major freeze之间触发的minor freeze次数。0表示禁止自动触发minor freeze。

minor_warm_up_duration_time

30s

取值范围:[0s,60m], 默认值:30s,作用说明:指定转储生成的静态版本预热过程执行的时间,当设置为0s时不进行预热。

get_leader_candidate_rpc_timeout

9s

INT类型,单位us,取值范围[2s-180s],动态参数,设置获取leader candidate的 RPC超时时间,单位us

max_kept_major_version_number

2

INT类型,取值范围[1,16],动态参数,每日合并保留的基线数据大版本数量

memory_chunk_cache_size

1G

作用:设置memory chunk的缓存大小,默认1G,取值范围[32M,+∞),可动态修改生效

trx_try_wait_lock_timeout

0ms

类型:时间,范围[0,+∞),作用:每次行锁的最长等待时间,可动态修改生效

enable_elr

False

提前锁释放开关 (Early Lock Release)。 针对热点行问题有性能的提升和优化。

cpu_quota_concurrency

4

类型:INT,默认值:2,范围:[1,4],作用:每个cpu quota对应的worker的并发数,可动态修改生效。

default_compress_func

std_1.0

持久化存储中表数据的缺省压缩函数可选如下:

none 表示不压缩

  “lz4_1.0”

  “none”

  “snappy_1.0”

  “zlib_1.0”

  “zstd_1.0”

  “zstd_1.3.8”

  “lz4_1.9.1”

sys_bkgd_migration_change_member_list_timeout

1h

时间类型,取值范围 [0s,24h]。用于控制迁移中更改member list的超时,默认30m,0表示不重试。。

sys_bkgd_migration_retry_num

3

INT类型,取值范围[3,100]。用于控制迁移中允许重试的次数。

sys_bkgd_io_timeout

30s

时间类型,取值范围[5s,60s]。用于控制后台io的超时时间。

data_disk_usage_limit_percentage

90

INT类型,取值范围[50,100]。用于磁盘警报的警戒线,是个百分比。

multiblock_read_size

128K

IO聚合读block时大小设置

multiblock_read_gap_size

0K

一次IO读取是的gap大小。gap 为block 命中block cache

config_additional_dir

etc2;etc3

额外的配置文件保存目录

enable_perf_event

True

是否打开Perf Event功能

enable_separate_sys_clog

False

是否分别记录系统租户和普通租户的clog

max_stale_time_for_weak_consistency

5s

Follower副本弱读的延迟容忍度,超过说明该Follower副本的日志同步落后过多,不提供弱读功能。

取值范围: [5s,+∞)

weak_read_version_refresh_interval

50ms

弱读版本号刷新周期

值为0表示关闭弱读功能。弱读将导致报错。
要求weak_read_version_refresh_interval设定值必须满足小于max_stale_time_for_weak_consistency

取值范围:[0ms,+∞)

enable_causal_order_read_obsolete

False

是否打开原子因果序读

syslog_io_bandwidth_limit

30MB

系统日志IO带宽限流

enable_syslog_wf

True

是否单独保存Warning以上日志级别的日志到文件中

enable_sql_operator_dump

True

是否允许SQL算子将中间结果写到磁盘上

system_memory

50G

observer自身预留内存的百分比,该内存将不能分配给租户。string类型,取值范围是[0,max)。

merger_switch_leader_duration_time

3m

每日合并切主 (如果开启轮转合并)的时间间隔

balancer_emergency_percentage

80

Unit复杂大于该比例后将允许开启副本向外迁移

tenant_groups

RS进行负载均衡时使用的租户组配置

server_balance_critical_disk_waterlevel

80

observer开启基于磁盘空间的负载均衡功能的水位线

server_balance_disk_tolerance_percent

1

当各个server间的磁盘容量小于该比例时,磁盘负载均衡结束。

enable_merge_by_turn

True

是否开启轮转合并

row_purge_thread_count

4

row purge允许的最大工作线程数

row_compaction_update_limit

6

row ompaction允许的最大工作线程数

ignore_replay_checksum_error

False

是否关闭日志回放checksum检查

trx_force_kill_threshold

100ms

切主时对事务的最长等待时间

clog_disk_usage_limit_percentage

95

clog的磁盘空间大于该比例时停止clog写入

rebuild_replica_data_lag_threshold

50G

根据clog落后leader副本的lag大小决定是否进行rebuild 的阀值

值为0 表示关闭rebuild功能。

取值范围:[0, +∞)

all_server_list

集群中的所有server列表

clog_cache_priority

1

clog缓存优先级

index_clog_cache_priority

1

index clog缓存优先级

user_tab_col_stat_cache_priority

1

用户表列统计信息缓存优先级

index_cache_priority

10

index cache 的优先级

user_block_cache_priority

1

用户表的块缓存优先级

user_row_cache_priority

1

用户表的行缓存优先级

bf_cache_priority

1

Bloom Filter缓存优先级

bf_cache_miss_count_threshold

100

Bloom Filter缓存未命中数的上限,0表示关闭该缓存

sys_bkgd_io_low_percentage

0

后台任务预留的io使用比例

sys_bkgd_io_high_percentage

90

后台任务可以使用的io比例上限

sys_cpu_limit_trigger

80

当server cpu使用大于该比例时,停止后台任务执行

user_iort_up_percentage

100

当io rt大于该比例后,停止后台任务执行

minor_merge_concurrency

0

小版本转储并发线程数

restore_concurrency

0

备份恢复并发线程数

redundancy_level

Normal

据盘支持ec校验的多盘,日志盘支持raid1的多盘。类似Oracle ASM.

该参数只有系统第一次启动通过启动参数指定有效。启动后的更改无效。可选值:

“EXTERNAL: use extrernal redundancy”

“NORMAL: tolerate one disk failure”

“HIGH: tolerate two disk failure if disk count is enough”,

writing_throttling_maximum_duration

1h

指定在触发写入限速后,剩余memstore内存分配完所需的时间,即期望剩余memstore内存在write_throttling_maximum_duration时间分配完。通过控制内存分配进度,实现控制写入速度。

时间类型,取值范围是[1s, 3d] 

writing_throttling_trigger_percentage

100

控制写入限速的触发时机,当memstore已使用的内存达到write_throttling_trigger_percentage/100时,触发写入限速。

取值范围:(0,100],缺省值为100

max_px_worker_count

64

并行执行的worker数

取值范围:[0,65535]

all_cluster_list

所有访问和共享同一个config_url的集群

wait_leader_batch_count

1024

切主Leader coordinator 的batch count 

取值范围:[128, 5000]

merger_warm_up_duration_time

0s

合并的预热时间

取值范围:[0s,60m]

migration_disable_time

3600s

禁止observer被迁入partition的时间范围

取值范围:[1s,+∞)

server_check_interval

30s

调度任务时对server进行检查的时间间隔

取值范围:[1s,+∞)

replica_safe_remove_time

2h

副本不存在的情况下,可以被安全删除的时间

取值范围:[1m,+∞)

global_index_build_single_replica_timeout

2h

rootservice构建但分区全局索引的超时时间

取值范围:[1h,+∞)

enable_ddl

True

是否允许DDL操作

enable_major_freeze

True

是否允许合并

balancer_timeout_check_interval

1m

RS检查均衡任务是否超时的检查时间间隔

取值范围:[1s,+∞)

balance_blacklist_retry_interval

30m

均衡任务失败后,等待一段时间之后再次尝试。尝试失败次数达到balance_blacklist_failure_threshold后,该任务进入黑名单

黑名单等待时间通过该参数控制

取值范围:[0s,180m]

balance_blacklist_failure_threshold

5

均衡失败任务进入黑名单的失败次数阀值

取值范围:[0,1000]

flush_log_at_trx_commit

1

事务commit 的clog flush 级别

“0: commit transactions without waiting clog write to buffer cache,”

“1: commit transactions after clog flush to disk,”

“2: commit transactions after clog write to buffer cache,”

取值范围: [0, 2]”

clog_transport_compress_all

False

clog 日志传输是否采用压缩方式

clog_transport_compress_func

lz4_1.0

clog传输如果采用压缩方式,压缩的函数:

none,

lz4_1.0,

snappy_1.0,

zlib_1.0,

zstd_1.0,

stream_lz4_1.0,

stream_zstd_1.0

election_blacklist_interval

1800s

eader卸任后,从当前时间开始,后续一段时间内(election_blacklist_interval),此副本不会被重新改选为 leader。 避免发生问题的server/zone在副本leader切换到正常工作的server/zone后,自动改选回到问题server/zone.

取值范围:[0s,24h]

gts_refresh_interval

100us

gts 时钟源刷新间隔。控制observer查询gts的间隔。

取值范围:[10us, 1s]

index_info_block_cache_priority

1

索引信息的块缓存优先级

取值范围:[1, )

fuse_row_cache_priority

1

fuse 行缓存的优先级

取值范围:[1, )

disk_io_thread_count

8

每个disk 的IO线程数

取值范围:[2,32]

merge_stat_sampling_ratio

100

合并时的列统计信息采样率

取值范围:[0,100]

minor_compact_trigger

2

2.2 版本开始支持L0层的转储mini merge。该参数控制L0层的转储次数。当达到次数后,触发L0/L1 层的merge.

取值范围:[0,16]

major_compact_trigger

2

和minor_freeze_times 相同。当前采用minor_freeze_times.

该参数忽略。

enable_election_group

True

是否开启选举group.  减少网络压力,加快选举进度。

meta_table_read_write_mode

2

meta表的操作方式。在2.x和1.x版本上有变化。

老版本进行读all_meta_table的读写。新版本对

all_tenant_meta_table进行读写。升级过程会同时访问2张宁表来完成升级。

“0 : read write all_meta_table “

“1:   read write all_meta_table

      while write all_tenant_meta_table “

 ”2 : read write all_tenant_meta_table “

取值范围:[0,2]

builtin_db_data_verify_cycle

20

宏块巡检的周期,单位为’天’

0: check nothing. “

“1-360: check all data every specified days. “

取值范围:[0, 360]

micro_block_merge_verify_level

2

微块合并时的检查策略

“0 : 不做检查 “

“1 : 通过检查encode确保数据正确 “

“2 : 检查encode算法,并且进行解压缩验证”

“3 : 检查encode, 解压缩验证,同时增加写完成的检查”

取值范围:[0, 3]

ssl_client_authentication

False

开启SSL 连接功能,需要重启observer生效。

同时确保 ca/cert/key 文件的存在。

migrate_concurrency

10

迁移的并行度

取值范围:[0, 64]

stack_size

4M

routine 执行的 stack size

取值范围:[512K, 20M]

px_task_size

2M 

并行执行的任务获取数据的大小。默认和宏块大小相等。

取值范围:[2M, )

dtl_buffer_size

64K

控制 Exchange 算子之间(Transmit和Receive之间)发送数据时,每次发送数据的Buffer的大小
server_balance_cpu_mem_tolerance_percent

5

集群均衡的百分比控制参数。

计算集群节点的CPU/memory load. 结合整个集群的平均load值。如果节点的load值高于平均值+平均值该参数,均衡任务将调度进行均衡。

租户级别配置项,普通租户可以修改:

sql_work_area



clog_max_unconfirmed_log_count

500

clog滑动窗口的unconfirmed log 最大限制

default_progressive_merge_num

0

控制表的合并行为,取值范围为[0-100]:

  • 当设置为0时,每次合并均做增量合并
  • 当设置为1时,每次合并均做全量合并
  • 当设置为>1时,发生schema变更时按照指定轮次做渐进合并
writing_throttling_maximum_duration

1h

指定在触发写入限速后,剩余memstore内存分配完所需的时间,即期望剩余memstore内存在write_throttling_maximum_duration时间分配完。通过控制内存分配进度,实现控制写入速度。

时间类型,取值范围是[1s, 3d] 

writing_throttling_trigger_percentage

100

控制写入限速的触发时机,当memstore已使用的内存达到write_throttling_trigger_percentage/100时,触发写入限速。

取值范围是(0,100],缺省值为100

enable_monotonic_weak_read

False

弱一致性读单调读是否开启


max_stale_time_for_weak_consistency

5s

Follower副本弱读的延迟容忍度,超过说明该Follower副本的日志同步落后过多,不提供弱读功能。