集群配置可以通过集群参数和租户参数来设定。通过参数的设定可以使 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']
:系统租户查看集群参数时需指定租户名。
示例如下所示:
-- 系统租户
show parameters like 'sql_work_area' tenant=t1
show parameters where edit_level='static_effective' and name='sql_work_area' tenant=t1;
--普通租户
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 | 是否支持在线动态修改。 |
集群参数设置
集群参数修改语句的语法如下所示,同时修改多个系统配置项时,请用逗号(,)隔开:
ALTER SYSTEM SET param_name = expr
[COMMENT 'text']
[PARAM_OPTS]
[TENANT = 'tenantname']
PARAM_OPTS:
[ZONE='zone' | SERVER='server_ip:rpc_port']
示例:
-- (1 系统租户设置集群配置项
alter system set sql_port=8888
-- (2 系统租户设置租户配置项
alter system set sql_work_area='1G' tenant='test_tenant'
-- (3 租户设置租户配置项
alter system set sql_work_area='2G'
alter system set memory_limit = '100G' SERVER='192.168.100.1:2882';
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 租户下存储层的数据格式,取值范围如下:
|
tableapi_transport_compress_func | none | tableAPI 传输采用的压缩方式。 |
default_progressive_merge_num | 0 | 控制表的合并行为,取值范围为 [0-100]:
|
zone_merge_concurrency | 0 | 并行合并的 Zone 数量。需要在开启轮转合并时生效。 |
default_row_format | dynamic | 指定 MySQL 租户下存储层的数据格式,取值范围如下:
|
Devname | bond0 | 网卡名称 |
enable_sys_table_ddl | FALSE | 默认为 false,如果需要建 table_id 小于 1000 的表,需要执行: |
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表示关闭弱读功能。弱读将导致报错。 取值范围:[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]:
|
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副本的日志同步落后过多,不提供弱读功能。 |