集群参数配置
部署 KaiwuDB 集群后,用户可以通过修改启动参数或实时集群参数,自定义集群配置:
参数类型 | 影响范围 | 生效方式 | 配置方式 |
---|---|---|---|
启动参数 | 作用于集群节点,影响单个节点的数据库服务。 | 仅在节点启动时生效,修改后需重启服务。 | 修改裸机部署的 kaiwudb_env 文件、容器部署的 docker-compose.yml 文件,或使用 kwbase start 命令调整。其中,kaiwudb_env 和 docker-compose.yml 文件均位于 /etc/kaiwudb/script/ 。 |
实时集群参数 | 作用于整个集群,影响集群内所有的节点。 | 实时生效,并自动同步至集群各节点,无需重启服务。 | 通过 SQL 语句修改,变更将持久化至系统表。 |
启动参数
参数说明
集群的启动参数包括通用、网络、安全、日志等参数。
注意
- 大部分集群启动参数都设有默认值。用户可以显式指定集群参数的取值来覆盖默认值。除
--join
参数以外,其他参数的指定值都是非持久化的操作,每次重新启动节点时都需要重新配置指定值。--join
参数的指定值存储在节点的数据文件中。推荐每次启动 KaiwuDB 时重新配置--join
参数,以便在数据文件丢失时节点也能够加入集群并进行恢复。 - 重启系统后,新的启动参数配置才能生效。
通用参数
参数 | 描述 |
---|---|
--background | 设置后台运行。 说明 --background 参数适用于短时间运行和测试服务的场景。目前,由于无法从当前终端完全分离,不推荐在长时间的服务运行中使用该参数。这种情况下,推荐使用服务管理器或者 daemon(8) 等工具。 |
--cache | 缓存大小,多个物理存储设备共享使用。参数值支持准确的内存值(单位:字节)、带小数点的十进制数值(转换为百分比数值)、百分比值: - --cache=.25 - --cache=25% - --cache=1000000000 :1000000000 字节 - --cache=1GB :1000000000 字节 - --cache=1GiB :1073741824 字节 说明 如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。 默认值为 128 MiB。默认值的设置是基于本地部署集群的场景考虑。在实际生产环境中,推荐 25% 甚至更高。 |
--external-io-dir | 使用本地节点目录或 NFS 驱动器执行备份和恢复操作时,使用本地文件访问路径作为前缀的外部 IO 文件夹路径。设置为 disabled 时,表示使用本地节点目录备份和恢复数据,禁止 NFS 驱动。默认值:第一个 --store 参数配置的 extern 子目录,用户可以对 extern 目录进行文件符号连接,以达到不重启节点就能够变更 --extern-io-dir 的目的。 |
--max-sql-memory | SQL 查询缓存的临时数据支持使用的最大内存空间,包括准备好的查询和在查询执行期间中间数据行。该值可以是带小数点的十进制数值(转换为百分比数值)、百分比值或者准确的值(单位:字节),例如: - --max-sql-memory=.25 - --max-sql-memory=25% - --max-sql-memory=10000000000 :1000000000 字节 - --max-sql-memory=1GB :1000000000 字节 - --max-sql-memory=1GiB :1073741824 字节。这些临时文件存储在 --temp-dir 文件夹中。说明 如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。 |
--store -s | 存储设备路径,用于存储数据库数据。支持同时指定设备属性和空间大小。若使用多个设备存储数据,则使用 --store=/mnt/ssd01 --store=/mnt/ssd02 方式。更多详细信息,参见存储参数。 |
--ts-store | 时序数据的存储路径,用于将时序数据与关系数据分开存储,未指定该参数时,时序数据与关系数据一同存储在 --store 指定的路径下。 |
网络参数
参数 | 描述 |
---|---|
--advertise-addr | 节点使用的 IP 地址或主机名,与其他节点通过该地址进行通信。如果是主机名,则要求能正常解析地址。如果是 IP 地址,则要求能正常访问 IP 地址。对于 IPv6,使用 [...] 表示法,例如:[::1] 或 [fe80::f6f2:::] 。参数的效果取决于与 --listen-addr 参数的组合使用。例如,如果端口号与--listen-addr 参数中使用的端口号不同,则需要端口转发。默认值: --listen-addr 参数的取值。如未指定 --listen-addr 参数,默认主机名和端口为:canonical hostname (/etc/host 第二列)和 26257 。 |
--listen-addr | 侦听来自其他节点和客户端连接的 IP 地址/主机名和端口。IPv6 地址使用 [...] 表示法,例如:[::1] 或 [fe80::f6f2:::] 。参数的效果取决于与 --advertise-addr 参数的组合使用。默认值:侦听所有 IP 地址,端口为 26257 。如未指定 --advertise-addr 参数,使用 canonical hostname 与其他节点进行通信。 |
--http-addr | 对外开放的 Admin 界面的 IP 地址或主机名。IPv6 地址使用 [...] 表示法,例如:[::1]:8080 或 [fe80::f6f2:::]:8080 。默认值:与 --listen-addr 参数一致,端口为 8080 。 |
--locality | 有序的、使用逗号(, )隔开的键值对列表,用于描述机器拓扑结构,可能包括国家、数据中心、机架等信息。系统自动复制数据,以最大程度地增加每个层级的多样性。层级的顺序用于确定多样性的优先级,因此包容性更大的本地信息(例如国家)应该在包容性较小的本地信息(例如数据中心)之前。所有节点的层级和顺序必须相同,包含更多层级比包含较少层级更好。例如 --locality=country=cn,region=east,datacenter=shanghai,rack=01 。 |
--join -j | 节点连接集群的地址。初始化时,需要指定集群 3-5 个节点的地址和端口,然后执行 kwbase init 命令启动集群。如未指定该参数时,则启动一个单节点集群。此时,无需执行 kwbase init 命令。如需向已有集群添加新节点,支持使用该参数指定集群 3-5 个节点的地址和端口。 |
--restful-port | RESTful 端口,默认值为 8080 ,取值范围为 [0, 65535] 。 |
安全参数
参数 | 描述 |
---|---|
--certs-dir | 安全证书目录的路径,用于访问、验证以安全模式部署的集群。 默认值: ${HOME}/.kaiwudb-certs/ |
--insecure | 以非安全模式启动集群。如未指定,以安全模式启动集群。有关以非安全模式启动集群的风险,参见安全性。 默认值: false |
--store-encryption | 启动集群时指定加密的路径、存储密钥路径和加密算法,加密算法支持国密 SM4 和 AES128 两种加密算法,目前只支持对关系数据库进行加密。 格式为 --store-encryption=path=<store_path>,key=<key-path>,[old-key=<old-key-path>,]cipher=<cipher>,[old-cipher=<old-cipher>,][rotation-period=<period>] 。其中 old-key 为可选参数,仅在更换存储密钥时需要指定,old-cipher 为可选参数,仅在更换加密算法时需要指定,rotation-period 为可选参数,用于设置数据密钥轮换周期,支持的单位包括 d (天)、h (小时)和 s (秒),默认单位为秒,未指定时,默认轮换周期为 7 天。更多操作说明,参见存储加密。 |
存储参数
--store
参数支持以下配置项,配置项之间使用逗号(,
)隔开。用户需要在配置项的值中避免使用逗号(,
)。
注意
- 内存存储不适合在生产部署环境中使用。
- 在没有特殊复制约束的情况下,KaiwuDB 会重新平衡副本以利用可用的存储空间。但是,在 3 节点集群中,如果每个节点具有多个存储,KaiwuDB 不能将副本从一个存储重新平衡到同一节点上的另一存储中。因为这会导致该节点暂时具有相同 Range 的多个副本。重新平衡机制不允许发生这种情况。在该机制下,集群会先删除目标副本,然后再在目标位置创建副本的副本。也就是说,要允许跨存储区的重新平衡,集群必须具有 4 个及以上节点。这样,集群在删除源副本之前,在尚未具有该 Range 副本的节点上创建副本的副本,然后将新副本迁移到原始节点中空间更大的存储中。
配置项 | 简介 |
---|---|
type | 如果是内存存储,则应设置为 mem 。path 配置项取值为空。其他情况下,该值应为空。 |
path | 存储设备路径,例如:--store=path=/mnt/ssd01,size=20GB 。默认值: kaiwudb-data |
size | 存储设备允许节点使用的最大空间。达到此阈值时,KaiwuDB 尝试将数据重新散布到具有可用容量的其他节点。当其他节点没有可用容量时,该节点将无视该限制,继续使用更多空间。一旦集群有其他新的可用空间,则该节点超出阈值的数据将转移到新的可用空间上。该参数值可以是基于硬盘大小的百分数或者准确的值(单位:字节),例如: - --store=path=/mnt/ssd01,size=10000000000 :10000000000 字节 - --store=path=/mnt/ssd01,size=20GB :20000000000 字节 - --store=path=/mnt/ssd01,size=20GiB :21474836480 字节 - --store=path=/mnt/ssd01,size=0.02TiB :21474836480 字节 - --store=path=/mnt/ssd01,size=20% :20% 的可用存储空间 - --store=path=/mnt/ssd01,size=0.2 :20% 的可用存储空间 - --store=path=/mnt/ssd01,size=.2 :20% 的可用存储空间 默认值:100% 若是内存存储,则该值是基于内存大小的百分数或是准确的值(单位:字节),例如: - --store=type=mem,size=20GB - --store=type=mem,size=90% 说明 如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。 |
日志参数
默认情况下,系统将所有信息打印到日志文件中,不向 stderr 输出任何内容。
参数 | 描述 |
---|---|
--log-dir | 启动日志功能并在指定的目录下记录日志。--log-dir 配置为空字符串(--log-dir= )时,表示关闭日志功能。 |
--log-dir-max-size | 所有日志文件大小达到阈值以后,KaiwuDB 将删除最老的日志。 默认值: 100MiB |
--log-file-max-size | 单个日志文件大小达到阈值以后,KaiwuDB 创建新的日志文件并输出日志到新文件。 默认值: 10MiB |
--log-file-verbosity | 将指定日志级别及以上的日志输出到日志文件,例如:--log-file-verbosity=WARNING 。 默认值: INFO |
--logtostderr | 将指定日志级别及以上的日志输出到 stderr,例如 --logtostderr=ERROR 。 - 当未指定参数取值时,KaiwuDB 将所有级别的日志输出到 stderr。 - 当配置为 --logtostderr=NONE 时,表示禁止输出日志到 stderr。 |
--sql-audit-dir | 安全审计日志的位置。默认情况下,SQL 审核日志与 KaiwuDB 生成的其他日志写入同一目录。有关更多信息,参见审计日志。 |
启动参数配置
启动参数支持以下配置方式:
- 修改裸机部署的
kaiwudb_env
文件 - 修改容器部署的
docker-compose.yml
文件 - 使用
kwbase start
命令
本节介绍如何通过kaiwudb_env
或docker-compose.yml
文件修改启动参数配置,kwbase start
命令相关信息,参见kwbase start。
提示
启动参数是节点级别的配置。如需修改整个集群的配置,需要登录到集群中的每个节点并完成相应的参数配置。
如需修改集群启动参数配置,遵循以下步骤。
登录集群中待修改的节点,进入 KaiwuDB 安装包目录。
停止 KaiwuDB 服务。
systemctl stop kaiwudb
打开配置文件。
- 裸机部署:进入
/etc/kaiwudb/script
目录,打开kaiwudb_env
文件。 - 容器部署:进入
/etc/kaiwudb/script
目录,打开docker-compose.yml
文件。
- 裸机部署:进入
根据需要添加或者修改配置文件中的启动命令参数。
裸机部署:在
KAIWUDB_START_ARG
开头的启动命令后添加或者修改启动参数和参数值。配置示例:
以下示例添加
--cache
启动参数,并将参数值设置为25%
。KAIWUDB_START_ARG="--cache=25%"
容器部署:在
/kaiwudb/bin/
开头的启动命令后添加或者修改启动参数和参数值。注意
请勿删除默认启动命令参数,否则可能导致无法启动修改后的集群。
配置示例:
以下示例添加
--cache
启动参数,并将参数值设置为25%
。command: - /bin/bash - -c - | /kaiwudb/bin/kwbase start-single-node --certs-dir=/kaiwudb/certs --listen-addr=0.0.0.0:26257 --advertise-addr=your-host-ip:port --store=/kaiwudb/deploy/kaiwudb-container --cache=25%
保存配置后,重新启动 KaiwuDB 服务。
systemctl restart kaiwudb
实时参数
KaiwuDB 支持通过 SET CLUSTER SETTING
语句修改集群设置,设置后立即生效。
注意
- 一些集群参数的设置会影响 KaiwuDB 的内部运行机制。修改参数设置前,强烈建议明确使用 KaiwuDB 的目的,以免因修改设置带来风险。
- 非三权分立模式下,只有 Admin 用户可以更改集群参数设置。
- 三权分立模式下,
secadmin
安全管理员可以设置与安全和审计相关的集群参数。sysadmin
系统管理员可以设置除安全和审计以外的其他集群参数。secadmin
安全管理员可以设置以下集群参数:audit.enabled
audit.log.enabled
password.validate.check_user_name.enabled
password.validate.max_length
password.validate.min_length
password.validate.mixed_case_count
password.validate.number_count
password.validate.special_char_count
server.host_based_authentication.configuration
server.sql_connections_max_limit
security.seperation_of_duty.enabled
下表列出 KaiwuDB 支持设置的所有集群参数及默认值。用户可以使用 SHOW CLUSTER SETTINGS
或 SHOW ALL CLUSTER SETTINGS
语句查看当前集群的所有参数及配置值。
参数 | 描述 | 默认值 | 类型 |
---|---|---|---|
alert.connections.threshold | KaiwuDB 监控平台连接数告警阈值,取值范围为 [0,1]。当前连接数超过时序 SQL 连接的最大限制与该阈值的乘积时,将在 KaiwuDB 监控平台触发告警。 | 0.9 | float |
alert.cooldown.duration | 设置同一指标报警的最短时间,防止同一指标在短时间重复报警。默认为 2 分钟。 | 2m | duration |
alert.cpu.threshold | KaiwuDB 监控平台 CPU 告警阈值,取值范围为 [0,1]。当系统 CPU 使用率大于设置的阈值时,将在 KaiwuDB 监控平台触发告警。 | 0.8 | float |
alert.email.enabled | 配置是否开启邮件通知功能。默认开启邮件通知功能。 | true | bool |
alert.endpoint.threshold | KaiwuDB 监控平台时序测点告警阈值,取值范围为 [0,1]。当时序测点使用率大于设置的阈值时,将在 KaiwuDB 监控平台触发告警。 | 0.8 | float |
alert.license.threshold | 设置许可证临期告警的时间,默认为 30 天。 | 30 | int64 |
alert.mem.threshold | KaiwuDB 监控平台内存告警阈值,取值范围为 [0,1]。当系统内存使用率大于设置的阈值时,将在 KaiwuDB 监控平台触发告警。 | 0.8 | float |
alert.reserved_space.threshold | KaiwuDB 监控平台预分配空间告警阈值,取值范围为 [0,1]。当预分配空间使用率大于设置的阈值时,将在 KaiwuDB 监控平台触发告警。 | 0.8 | float |
alert.smtp.config | 配置 SMTP 邮件服务。支持以下配置参数:SMTPServer :邮件服务器的域名或 IP 地址。Port :邮件服务器的端口号。常见端口号:- 25 :默认的 SMTP 端口(非加密)。- 587 :用于加密的 SMTP 端口(STARTTLS)。- 465 :用于 SSL/TLS 加密的 SMTP 端口。Username :登录邮件服务器时使用的用户名,一般是邮箱地址。Password :登录邮件服务器时使用的授权码。FromEmail :发送者的邮箱地址,即邮件的发件人。ToEmails :收件人的邮箱地址,可以有多个,使用逗号分隔。说明 - 一般情况下,密码是邮箱的登录密码。但使用外部 SMTP 服务时,需要使用 "应用专用密码",即授权码。 - 使用时注意密码保护,不要明文暴露在代码中,建议通过环境变量或加密配置来存储密码。 | - | string |
alert.storage.threshold | KaiwuDB 监控平台存储告警阈值,取值范围为 [0,1]。当磁盘使用率大于设置的阈值时,将在 KaiwuDB 监控平台触发告警。 | 0.8 | float |
alert.trigger.duration | 设置指标的持续报警时间,默认为 1s。 | 1s | duration |
audit.enabled | 审计开关。 | FALSE | bool |
audit.log.enabled | 审计日志文件记录开关。 | TRUE | bool |
autonomy.feature.enabled | 配置是否开启数据库自治服务。有关数据库自治服务的详细信息,参见数据库自治。 默认关闭数据库自治服务。 | false | bool |
autonomy.ts.storage.enabled | 配置是否开启存储参数自治模块。只有开启数据库自治服务后,开启存储参数自治模块才有效。开启后,系统根据写入的数据量自动调整预分配的存储空间。当创建新的子分组或者生成新的数据段时,系统根据存储自治参数配置预分配存储空间。目前,KaiwuDB 不支持调整历史文件的存储空间。 默认关闭存储参数自治模块。 | false | bool |
capacity.stats.period | KaiwuDB 统计存储容量数据的周期。默认值为 12,表示每 120 秒统计一次存储容量数据。支持设置的范围为 [1, 1000]。设置较高的值有助于减少系统开销,较低的值有助于获取更实时的数据。 | 12 | int |
cloudstorage.gs.default.key | Google Cloud Storage 操作的 JSON 密钥。 | - | string |
cloudstorage.http.custom_ca | 与 HTTPS 存储交互时,验证证书的自定义根 CA,附加到系统的默认 CA。 | - | string |
cloudstorage.timeout | 导入导出存储操作的超时时间。 | 10m0s | duration |
cluster.license | KaiwuDB 集群许可证信息 | '' | string |
cluster.organization | 组织名称。 | - | string |
cluster.preserve_downgrade_option | 重置前,系统禁止从指定版本自动或手动升级集群版本。 | - | string |
default_transaction_read_only.enabled | 只读模式 - false :可以读写,包括 DDL、DCL 和其他集群设置。 - true :表示只能读不能写,包括 DDL、DCL 和其他集群设置。 | FALSE | bool |
diagnostics.forced_sql_stat_reset.interval | 系统刷新 SQL 语句统计信息的时间间隔,包括未收集的 SQL 语句统计信息。最大值为 24 小时。设置值应大于 diagnostics.sql_stat_reset.interval 参数的取值。 | 2h0m0s | duration |
diagnostics.reporting.enabled | 是否向 KaiwuDB 报告诊断指标。 | TRUE | bool |
diagnostics.reporting.interval | 报告诊断数据的间隔。 | 1h0m0s | duration |
diagnostics.sql_stat_reset.interval | 系统重置 SQL 语句统计信息的时间间隔。最大值为 24 小时。设置值应小于 diagnostics.forced_sql_stat_reset.interval 参数的取值。 | 1h0m0s | duration |
email.metrics.option | 指定待监控的指标,KaiwuDB 支持监控以下指标: - CPU 使用率 - 内存使用率 - 存储使用率 - 连接数 - 预分配空间使用率 默认为监控所有指标。 | - | string |
external.graphite.endpoint | 设置为非空时,系统将服务器指标推送到指定主机、端口的 Graphite 或 Carbon 服务器。 | string | |
external.graphite.interval | 启用指标推送时,将指标推送到 Graphite 的时间间隔。 | 10s | duration |
immediate_compression.threads | 即时压缩使用的线程数。默认为 3 。为了避免影响读写性能,建议配置值不大于 4 。 | 3 | integer |
jobs.scheduler.enabled | 开启或关闭定时任务功能。默认开启定时任务。 | true | boolean |
jobs.scheduler.max_jobs_per_iteration | 每次扫描执行的最大任务数。默认值为 10,设置为 0 时表示无任务数限制。 | 10 | integer |
jobs.scheduler.pace | 扫描 system.scheduled_jobs 任务表的频率。默认值为 60 秒。设置值不能小于 60s ,如果设置值小于 60s ,采用默认值 60s 。 | 60s | duration |
kv.allocator.load_based_lease_rebalancing.enabled | 基于负载和延迟重新平衡 Range 租约。 | TRUE | bool |
kv.allocator.load_based_rebalancing | 是否基于存储之间的 QPS 分布重新平衡。 - 0 :表示不启动。 - 1 :表示重新平衡租约。 - 2 :表示平衡租约和副本。 | 2 | enum |
kv.allocator.qps_rebalance_threshold | 存储节点的 QPS 与平均值之间的最小分数,用于判断存储节点负载是否过高或过低。 | 0.25 | float |
kv.allocator.range_rebalance_threshold | 存储的 Range 数与平均值的最小分数,用于判断存储节点负载是否过高或过低。 | 0.05 | float |
kv.bulk_io_write.max_rate | 批量输入/输出(IO)操作向磁盘写入数据时的速率限制。 | 1.0 TiB | byte size |
kv.closed_timestamp.follower_reads_enabled | 所有副本基于封闭时间戳的信息提供一致的历史读取。 | TRUE | bool |
kv.kvserver.ts_split_by_timestamp.enabled | 控制时序数据分片是否按照时间戳进行拆分,设置为 false 时只根据哈希点进行拆分。设置为 true 且 kv.kvserver.ts_split_interval 设置为 1 时,时序数据分片将根据哈希点和时间戳进行拆分。 | FALSE | bool |
kv.kvserver.ts_split_interval | 时序数据分片拆分间隔,默认值为 10 。 | 10 | int |
kv.protectedts.reconciliation.interval | 通过受保护的时间戳记录协调作业的频率。 | 5m0s | duration |
kv.range_split.by_load_enabled | 允许系统根据负载集中的位置自动拆分 Range。 | TRUE | bool |
kv.range_split.load_qps_threshold | 当 QPS 超过指定阈值时,系统将根据负载情况自动拆分 Range。 | 2500 | int |
kv.rangefeed.enabled | 启用 rangefeed 注册。 | TRUE | bool |
kv.replication_reports.interval | 生成复制约束统计、复制统计报告以及复制关键位置信息报告的频率。 | 1m0s | duration |
kv.snapshot_rebalance.max_rate | 重新平衡和复制快照的速率限制(单位:字节/秒)。 | 8.0 MiB | byte size |
kv.snapshot_recovery.max_rate | 恢复快照的速率限制(单位:字节/秒)。 | 8.0 MiB | byte size |
kv.transaction.max_intents_bytes | 事务中用于跟踪锁的最大字节数。 | 262144 | int |
kv.transaction.max_refresh_spans_bytes | 序列化事务中用于跟踪刷新跨度的最大字节数。 | 256000 | int |
log.sync.enabled | 用于控制是否执行日志同步操作。默认值为 true , 表示启用日志同步。在磁盘繁忙时,日志同步操作可能会触发超时阈值,导致数据库主动宕机。通过禁用同步操作,可以避免因日志同步超时导致数据库进程宕机。 | true | bool |
ml.agent.addr | KaiwuDB 预测分析引擎的地址和端口。 | - | string |
password.validate.check_user_name.enabled | 检查用户名和密码(小写形式)的匹配度。KaiwuDB 支持以下用户名和密码匹配度检查规则: - 用户名和密码相同 - 用户名和密码的逆序相同 - 密码包含用户名 - 密码包含用户名的逆序 | TRUE | Boolean |
password.validate.max_length | 检查密码的最大长度,默认最大长度为 63。密码的最大长度不能小于密码的最小长度。取值为 -1 时,表示没有最大长度限制。目前,支持取值大于 0 或者等于 -1 。 | 63 | Int |
password.validate.min_length | 检查密码的最小长度,默认最小长度为 8。该参数的最小数值是一些相关系统变量的函数。该参数的取值不能设置小于此表达式的值:password.validate.number_count + password.validate.special_char_count + (2 * password.validate.mixed_case_count) 。如果小于该表达式的值,系统报错。 | 8 | Positive Int |
password.validate.mixed_case_count | 检查密码中至少需要包含多少个大写字符和小写字符。默认为 1。对于给定的值,密码中的小写字符数和大写字符数都不能少于该值。例如,取值为 1 时,密码中至少需要包含 1 个小写字母和 1 个大写字母。 | 1 | Non Negative Int |
password.validate.number_count | 检查密码中至少需要包含多少个数字字符。默认为 1。 | 1 | Non Negative Int |
password.validate.special_char_count | 检查密码中至少需要包含多少个特殊字符。默认为 1。支持的特殊字符包括: - 标点符号:例如句号( . )、逗号(, )、分号(; )、冒号(: )、感叹号(! )、问号(? )、单引号(' )和双引号(" )等。- 数学符号:例如加号( + )、减号(- )、乘号(* )、除号(/ )、等号(= )、百分号(% )、小于号(< )和大于号(> )等。- 括号和分隔符:例如圆括号( () )、方括号([] )、花括号({} )、反斜杠(\ )、波浪线(~ )、短横线(- )等。- 特殊符号:例如美元符号( $ )、井号(# )、艾特符号(@ )、星号(* )、叹号(! )、问号(? )等。- Unicode 符号:包括各种语言的特殊字符、emoji 表情符号等。 | 1 | Non Negative Int |
security.separation_of_duty.enabled | 配置是否开启三权分立模式。非三权分立模式下,属于 amdin 角色的用户可以修改该值。三权分立模式下,属于 secadmin 角色的用户可以修改该值。- TRUE :开启三权分立模式。开启三权分立模式后,具有 admin 角色的用户无法登录数据库。- FALSE :关闭三权分立模式。关闭三权分立模式后,具有 sysadmin 、secadmin 、auditadmin 角色的用户无法登录数据库。有关三权分立的详细信息,参见三权分立模式。 | FALSE | bool |
server.auth_log.sql_connections.enabled | 设置为 TRUE 时,系统记录 SQL 客户端连接和断开事件,可能会影响负载较重节点的性能。 | FALSE | bool |
server.auth_log.sql_sessions.enabled | 设置为 TRUE 时,系统记录 SQL 会话登录和断开事件,可能会影响负载较重节点的性能。 | FALSE | bool |
server.clock.forward_jump_check_enabled | 设置为 TRUE 时,当时钟跳变大于 max_offset/2 时,会导致紧急情况。 | FALSE | bool |
server.clock.persist_upper_bound_interval | 持久化时钟墙上限的时间间隔。时钟在此期间不会生成大于已持久化时间戳的墙上时间。系统如果看到大于此值的墙上时间,将引发紧急情况。KaiwuDB 启动时会等待墙上时间追赶至已持久化时间戳。这确保了在服务器重启时墙上时间的单调递增。不设置此值或将其设置为 0 ,表示禁用此功能。 | 0s | duration |
server.consistency_check.max_rate | 一致性检查的速率限制(单位:字节/秒)。与 server.consistency_check.interval 参数一起使用,用以控制一致性检查的频率。这可能会影响性能。 | 8.0MiB | byte size |
server.eventlog.ttl | 如果取值非零,系统每 10 分钟删除一次超出该时长的事件日志条目。设置值不应低于 24 小时。 | 2160h0m0s | duration |
server.host_based_authentication.configuration | 连接数据库时,使用基于主机的验证配置。采用 host all <user_name> <address> <method> 的格式。username :用户名称。支持设置为 all ,表示匹配所有用户。address :设置允许或拒绝访问的 IP 地址范围。支持以下三种表现形式:- 单个主机名 - IP 地址范围:支持 IP 地址 + CIDR 子网掩码长度的形式( iP-address/mask-length )或者 IP 地址 + 实际子网掩码的形式(ip-address/ip-mask )。 支持设置为 all ,表示允许或拒绝所有 IP 地址。method :认证规则,用户可以根据需求定制认证规则,具体包括:- cert :基于证书的身份验证(需要 SSL 连接)。- cert-password :(默认设置)基于证书或密码的身份验证(需要 SSL 连接)。- password :基于密码的身份验证(需要 SSL 连接)。- cert+password :基于证书和密码的双因子身份验证(需要 SSL 连接)。- trust :无条件允许满足匹配规则的连接。- reject :无条件拒绝满足匹配规则的连接。 该参数格式与 PostgreSQL 的 pg_hba.conf 兼容。有关详细信息,参见 PostgreSQL 官方文档。 | - | string |
server.rangelog.ttl | 如果取值非零,系统每 10 分钟删除一次超出该时长的 Range 日志条目。设置值不应低于 24 小时。 | 720h0m0s | duration |
server.remote_debugging.mode | 用于启用或禁用远程调试。 - local :仅在本地启用远程调试。- any :允许从任何地方启用远程调试。- off :禁用远程调试。 | local | string |
server.rest.timeout | RESTful API 连接超时阈值。超过该阈值后,系统将断开该会话连接。默认值为 60 分钟,取值范围为 [1, 2^63-1] 分钟。 | 60 | int |
server.restful_service.default_request_timezone | 用于全局控制 RESTful API 的时区信息。取值范围为 -12 到 14。 | 8 | int |
server.shutdown.drain_wait | 关闭服务器时,服务器在未准备好状态下等待的时间。 | 0s | duration |
server.shutdown.lease_transfer_wait | 关闭服务器时,服务器等待 Range 租约传输完成的时间。 | 5s | duration |
server.shutdown.query_wait | 关闭服务器时,服务器等待活动查询完成的时间。 | 10s | duration |
server.sql_connections.max_limit | 单个节点的最大连接数,默认设置为 200 ,支持设置范围为 [4, 10000]。当计划连接的客户端数量超过该值时,可适当调高该参数,以满足更多客户端的连接需求。 | 200 | int |
server.time_until_store_dead | 如果节点在指定时间内没有通过 Gossip 协议发送更新,系统将其标记为死亡节点。 | 5m0s | duration |
server.tsinsert_direct.enabled | 启用时序写入短接功能,以提升写入性能。 | false | bool |
server.user_login.timeout | 当某个系统 Range 不可用时,超过设置时间,客户端身份验证将超时。 | 10s | duration |
server.web_session_timeout | 新创建 Web 会话在系统中保持有效的时间。 | 168h0m0s | duration |
sql.all_push_down.enabled | 下推所有 SQL 操作。 | TRUE | bool |
sql.auto_limit.quantity | 配置 SQL 查询结果的返回行数。支持以下取值: - 0 : 不限制 SQL 查询结果的返回行数。 - 任意大于 0 的正整数:按照配置的值限制 SQL 查询结果的返回行数。 | 0 | int |
sql.defaults.default_int_size | INT 数据类型的大小(单位:字节)。 | 8 | int |
sql.defaults.idle_in_session_timeout | 配置空闲会话的超时时间。如果取值为 0 ,表示会话不会超时。 | 0s | duration |
sql.defaults.results_buffer.size | 将查询结果发送到客户端之前,服务器端累积语句结果或语句批处理结果的缓冲区大小。支持通过指定连接的 results_buffer_size 参数覆盖本设置值。自动重试只有在结果尚未传递到客户端时才会发生。因此,如果减小缓冲区大小,客户端可能会接收更多可重试错误。增加缓冲区大小则可能会增加客户端在收到第一个结果行之前的等待时间。更新设置仅影响新连接。设置为 0 时,表示禁用任何缓冲。 | 16 KiB | byte size |
sql.defaults.multimodel.enabled | 配置多模查询优化。开启后,系统识别多模查询并生成相应的查询计划。 | true | bool |
sql.defaults.serial_normalization | 表定义中 SERIAL 数据类型的默认处理方式 [rowid = 0,virtual_sequence = 1,sql_sequence = 2] 。 | rowid | enum |
sql.distsql.max_running_flows | 在节点上可以运行的最大并发流数量。 | 500 | bool |
sql.distsql.temp_storage.joins | 设置为 TRUE 时,将在分布式 SQL 连接中使用磁盘。说明 禁用该设置可能会影响内存使用和性能。 | TRUE | bool |
sql.distsql.temp_storage.sorts | 设置为 TRUE 时,将在分布式 SQL 排序中使用磁盘。说明 禁用该设置可能会影响内存使用和性能。 | TRUE | bool |
sql.log.slow_query.latency_threshold | 如果取值非零,当 SQL 语句服务延迟超过指定阈值时,系统将在每个节点的辅助日志记录器记录该语句。 | 0s | duration |
sql.metrics.statement_details.dump_to_logs | 定期清除数据时,将收集的语句统计信息写入到节点日志中。 | FALSE | bool |
sql.metrics.statement_details.enabled | 收集每个语句的查询统计信息。 | TRUE | bool |
sql.metrics.statement_details.plan_collection.enabled | 定期保存每个指纹的逻辑计划。 | TRUE | bool |
sql.metrics.statement_details.plan_collection.period | 收集新的逻辑执行计划之间的时间间隔。 | 5m0s | duration |
sql.metrics.statement_details.threshold | 触发统计信息收集所需的最小执行时间。 | 0s | bool |
sql.metrics.transaction_details.enabled | 收集每个应用的事务统计信息。 | TRUE | bool |
sql.notices.enabled | 允许在服务器/客户端协议中发送通知。 | TRUE | bool |
sql.stats.automatic_collection.enabled | 自动统计信息收集模式。 | FALSE | bool |
sql.stats.automatic_collection.fraction_stale_rows | 每张表触发统计信息刷新的过期行百分比。 | 0.2 | float |
sql.stats.automatic_collection.min_stale_rows | 每张表触发统计信息刷新的最小过期行行数。 | 500 | int |
sql.stats.automatic_ts_collection.fraction_stale_rows | 每张时序表触发统计信息刷新的过期行百分比。 | 0.1 | float |
sql.stats.automatic_ts_collection.min_stale_rows | 每张时序表触发统计信息刷新的最小过期行行数。 | 100 | int |
sql.stats.histogram_collection.enabled | 直方图收集模式。 | TRUE | bool |
sql.stats.post_events.enabled | 启用设置后,每次创建统计信息作业时都会生成一个事件记录。 | FALSE | bool |
sql.stats.ts_automatic_collection.enabled | 自动统计时序数据信息收集模式。 | false | bool |
sql.temp_object_cleaner.cleanup_interval | 清理孤立临时对象的频率。 | 30m0s | duration |
sql.trace.log_statement_execute | 设置为 TRUE 时,启用执行语句的日志记录。 | FALSE | int |
sql.trace.session_eventlog.enabled | 设置为 TRUE 时,启用会话跟踪。这可能会明显影响性能。 | FALSE | bool |
sql.trace.txn.enable_threshold | 事务的执行时间超过指定的持续时间时,系统将对该事务进行追踪。设置为 0 时,表示禁用该功能。 | 0s | duration |
sql.ts_insert_select.block_memory | 时序数据 INSERT INTO SELECT 语句单次写入的数据块内存限制。 | 200 | int |
sql.ts_insert_select_limit.enabled | 允许时序数据写入关系表。 | FALSE | bool |
sql.ts_stats.enabled | 启动时序数据统计信息收集。 | TRUE | bool |
sql.txn.cluster_transaction_isolation | 配置事务隔离级别,支持以下取值: - 串行化(Serializable):Serializable 隔离是最高的隔离级别,保证了即使事务是并行执行的,其结果也与它们一次执行一个事务时的结果相同,没有任何并发性。 - 提交读(Read Committed,RC):在 RC 隔离级别下,事务会读取到其他事务已提交的数据,但不完全保证事务操作的可序列化。 - 可重复读(Repeatable Read,RR):RR 隔离保证了在同一事务内多次读取同一数据时,结果是一致的。 | serializable | enum |
timeseries.storage.enabled | 是否在集群内存储周期性的时序数据。除非数据已经在其他地方存储,否则不建议禁用此功能。 | TRUE | bool |
timeseries.storage.resolution_10s.ttl | 以 10 秒分辨率存储的时序数据的最大保存时长。超过该时长的数据将被汇总和删除。 | 240h0m0s | duration |
timeseries.storage.resolution_30m.ttl | 以 30 分钟分辨率存储的时序数据的最大保存时长。超过该时长的数据将被汇总和删除。 | 2160h0m0s | duration |
trace.debug.enable | 设置为启用后,可以在 /debug 页面中查看最近请求的跟踪信息。 | FALSE | bool |
trace.lightstep.token | 设置为启用后,跟踪数据将使用指定的令牌发送到 Lightstep。 | - | string |
trace.zipkin.collector | 设置为启用后,跟踪数据将发送到指定的 Zipkin 实例,例如:127.0.0.1:9411 。如果设置了 trace.lightstep.token 参数,将忽略该配置。 | - | string |
ts.auto_vacuum.enabled | 用于控制是否启用数据重组功能,设置为 true 时,表示启用该功能。 | TRUE | bool |
ts.blocks_per_segment.max_limit | 用于控制时序表的时间数据分片下每个数据段中可以存储的数据块的数量。通过控制数据块的数量,可以优化数据的存储和查询效率,以满足系统的要求和性能需求。默认值为 1000 ,取值范围为 [1, 1000000] 。 | 500 | int |
ts.cached_partitions_per_subgroup.max_limit | 用于限制控制子组中分区表 LRU(Least Recently Used,最近最少使用)缓存的大小。当缓存中的数据量达到阈值时,LRU 缓存将按照最近访问时间进行淘汰,以保持缓存的有效性和性能。默认值为 10 ,取值范围为 [0, 2147483647] 。设值为 0 时,表示无缓存大小限制。 | 10 | int |
ts.compression.level | 时序数据压缩级别配置项,支持 low、middle、high 压缩级别。 - low: 压缩级别低,通常情况下,压缩率相对较低,压缩速度快。 - middle:压缩级别中,通常情况下,兼顾压缩率及压缩速度。 - high:压缩级别高,通常情况下,压缩率相对较高,压缩速度慢。 有关数据压缩级别的详细信息,参见数据压缩级别。 | middle | string |
ts.compression.type | 时序数据压缩算法配置项,支持 gzip、lz4、lzma、lzo、xz、zstd 压缩算法。配置完成后,下一次压缩时使用新的压缩算法进行压缩。有关数据压缩算法的详细信息,参见数据压缩算法。 | gzip | string |
ts.count.use_statistics.enabled | 指定 count(*) 函数查询时序数据时是否使用已写入的行数,以优化查询时间。默认开启,支持关闭;关闭后可能会影响 count(*) 的查询性能。 | true | bool |
ts.dedup.rule | 数据去重策略。支持设置为以下参数: - override :整行去重,后写入的数据覆盖已写入的具有相同时间戳的数据。- merge :相同时间戳的列数据去重并整合列数据为一条,后写入的列数据覆盖已写入的相同时间戳的列数据,并整合为一行,适用于相同时间戳不同字段数据分批写入的场景。- discard :忽略新写入的重复数据,保留已写入的数据。当重复数据写入失败后,客户端会收到成功插入数据的条数,并以 Notice 的形式展示未成功插入数据的条数。 | override | string |
ts.disk_free_space.alert_threshold | 时序数据存储预分配空间告警阈值。系统需要创建新的数据段(segment )以存储新写入的时序数据时,会自动检查节点剩余存储空间,并根据设置的阈值决定是否执行预分配操作,该阈值应设置为正整数,支持的单位包括 B、MiB、GiB等。默认为 0 B , 表示不启用该功能。建议根据时序表结构设置适当的预分配空间告警阈值,具体计算公式,参见预分配空间管理。 | 0 B | byte size |
ts.entities_per_subgroup.max_limit | 用于限制时序表子分组中实体设备的数量。当子分组中的设备数量达到设置值时,将切换到新的子分组中。设置值为 500 ,取值范围为 [1, 2147483647] 。 | 500 | int |
ts.mount.max_limit | 系统可挂载的压缩文件数量,取值范围为 [0, 2147483647] 。设置为 0 时,表示不限制挂载文件数量。在全表查询等场景下,实际挂载的压缩文件数量可能会超过设定值,但系统会在查询结束后将挂载文件数量限制到非零设定值。 | 1000 | int |
ts.ordered_table.enabled | 当用户未使用 ORDER BY 子句指定排序时,配置是否按照数据写入的时间戳逆序返回查询结果。当设置为 true 时,对于单设备查询,按照数据写入的时间戳逆序返回查询结果。对于多设备查询,先转换成单设备查询,然后再合并所有的数据。 | false | bool |
ts.parallel_degree | 单节点可并行执行的时序数据查询任务数量,范围为 [0, cpu_core*2+2],其中 cpu_core 是实际使用的逻辑处理器数量。设置为 0 或 1 时,系统将串行执行查询;设置大于 1 时,表示可并行执行的任务数量。 | 0 | int |
ts.partition.interval | 数据分区间隔,设置值必须大于 0 。 | 864000 | int |
ts.pipe.sink_max_retries | 最大数据推送失败次数。当最大数据推送失败次数超过设置值后,停止向外推送数据。 | 5 | int32 |
ts.pipe.max_active_number | 最大运行状态的数据推送实例数量。 | 10 | int32 |
ts.rows_per_block.max_limit | 控制时序表每个时间分区下单个列文件中每个数据块中可存储的数据行数,用于调节数据库存储数据时的存储密度和性能,平衡存储空间利用率和查询性能。默认值为 1000 ,取值范围为 [10,1000] 。 | 1000 | int |
ts.sql.query_opt_mode | 配置跨模查询优化。取值为一个四位数的 INT 值,每一位表示对应优化功能的开关,其中 1 表示开启,0 表示关闭。四个跨模查询优化功能从左到右依次为多谓词顺序优化、标量子查询优化、Inside-out 下推聚合优化、Inside-out 下推 time_bucket 优化。默认情况下,开启多谓词顺序优化、标量子查询优化、Inside-out 下推聚合优化。 说明 用户使用数据库时,仅需考虑是否开启对应的跨模查询优化功能。若打开相应的优化功能,数据库系统会自行判断输入的查询是否可以被优化。只有满足特定的条件才能被优化。 | 1110 | int |
ts.table_cache.capacity | 控制已缓存的时序表数量,支持范围为[1,2147483647]。默认值为 1000 ,表示可以缓存 1000 个时序表,缓存中的时序表无需重新初始化。如果需要缓存更多的时序表,可增大该值以提升读写性能。注意,较大的设置值可能会占用更多内存。 | 1000 | int |
ts.tier.duration | 定义时序数据在不同存储层级之间迁移的时间划分规则,用户可以通过该设置将数据划分为“热数据”、“温数据”和“冷数据”,并将其存储在不同的存储目录中。 设置格式为 period, period , 表示热数据和温数据的存储时长。默认值为 30d,90d ,即30 天内采集的时序数据为热数据,存储在 0 级存储目录。30 至 90 天内采集的时序数据为温数据,存储在 1 级存储目录。90 天以上的数据为冷数据,存储在 2 级存储目录。支持的单位为 d (天)。该设置需与分级存储目录配置共同生效。有关分级存储目录的更多信息,参见冷热数据分级存储。 | 30d,90d | string |
ts.wal.flush_interval | WAL 日志同步周期,默认值为 0,表示实时写入 WAL 日志。 - 设置值 < 0: 关闭 WAL 日志; - 设置值 ≥ 0 且 ≤ 200ms: 实时写入 WAL 日志; - 设置值 > 200ms: 系统根据设置间隔进行日志同步。 注意:启用单机主备复制后,备库默认关闭实时写入 WAL 日志功能。 | 0 | duration |
version | 选择格式为 <主版本号>.<次版本号> 的活跃集群版本。 | 20.1 | m |