《一文讲透》第4期:KWDB 数据库运维(2) —— 集群参数

原创
11/15 14:14
阅读数 300
AI总结

作为一款“多模融合”的开源数据库,KWDB 旨在为用户提供“灵活快速、可靠易用“的操作体验。因此,KWDB的一大任务就是:简化数据库集群配置。

为避免每个节点单独编写配置文件或者重启中断服务,KWDB 跳出传统的配置文件方式,采用了启动参数和集群参数组合的方式来控制数据库集群。本文就带领大家一起快速了解 KWDB 的集群参数。

 

01 概述

 

根据参数使用场景和生效范围,KWDB的参数分为三类:启动参数、环境变量和实时集群参数。

✅ 启动参数

  • 启动参数是数据库实例级别的参数,控制数据库单个服务的行为。

  • 此类参数只在数据库实例启动时一次性读取,一旦发生修改,需要重启数据库服务才能生效。

  • 参数可以在启动命令中一次性传递,也可以通过维护系统服务如systemd 来持久化。

✅ 环境变量

  • 环境变量是操作系统级别的参数,控制用户或者系统级别下所有数据库实例的行为。

  • 此类参数只在数据库进程启动时一次性读取,一旦发生修改,需要重启数据库服务才能生效。

  • 参数可以在系统或用户级 shell 配置文件中配置,如 .bashrc 或者 .bash_profile,也可以在系统服务如 systemd 中进行配置。

✅ 实时集群参数

  • 实时集群参数是数据库集群级别的参数,控制同一集群下所有数据库实例的行为。

  • 此类参数实时生效并自动广播至集群每个节点,不需要重启任何数据库服务。

  • 参数通过 SQL 语句进行修改,会写入系统表进行持久化。

以下为三类参数的详细说明。

 

02 启动参数

启动参数包括通用、网络、安全、日志等类型参数,下面将按照类型划分,对参数进行解释。开始前须知:

  • 很多参数都有默认值,可以通过显式指定的方式来覆盖默认值。因为指定值不是持久化的操作,每次重新启动节点时都需要重新配置指定值。唯一的例外是 --join 参数,--join 参数的指定值将存储在节点的数据文件中,KWDB 推荐每次启动时重复配置,以便在数据文件丢失时节点也能够加入集群并进行恢复。

  • 启动参数配置需要重启系统后才能生效。

✅ 通用参数

1、网络参数

 

2、安全参数

 

3、存储参数

--store 支持以下配置项,配置项之间通过逗号分隔,因此配置项的值应避免使用逗号。开始前须知:在生产部署环境中不适合使用内存存储。

在没有特殊复制约束的情况下,KWDB 会重新平衡副本以利用可用的存储空间。但是,在每个节点具有多个存储的3节点集群中,KWDB 不能将副本从一个存储重新平衡到同一节点上的另一存储,因为这将暂时导致该节点具有相同 range 的多个副本,由于重新平衡的机制不允许发生这种情况,在该机制下,集群会先删除目标副本,然后再在目标位置创建副本的副本。

也就是说,要允许这种跨存储区的重新平衡类型,集群必须具有4个及以上节点。这允许集群在删除源副本之前,在尚未具有该 range 副本的节点上创建副本的副本,然后将新副本迁移到原始节点中空间更大的存储中。

 

4、日志参数

默认情况下,系统将所有信息打印到日志文件中,不向stderr输出任何内容。

 

03 环境变量

 

对于 KWDB 命令的许多常见参数,例如 --port 和 --user,可以设置环境变量代替每次执行命令时手动制定这些参数。要查看当前的 KWDB 配置和其他环境变量,请运行 env。

如果节点在启动时使用环境变量,变量名将被打印到节点的日志中。

KWDB 优先考虑命令参数和环境变量,其优先级(从前向后依次递减)为:

  • 命令中指定的参数

  • 环境变量

  • 默认值

如果既没有命令参数,环境变量,也没有默认值,KWDB 将会报错。

下表列出了目前支持配置的环境变量:

 

 

04 实时集群参数

 

KWDB 支持通过 SET CLUSTER SETTING 语句修改集群设置,设置后立即生效。需要注意的是:

  • 许多集群参数的设置会影响 KWDB 的内部运行机制。修改参数设置前,强烈建议明确使用 KWDB 的目的,以免因修改设置带来风险。

  • 仅数据库 root 用户可以更改集群参数设置。

下表列出了 KWDB 支持设置的所有集群参数及默认值,也可通过 SHOW ALL CLUSTER SETTINGS 语句查看当前集群的所有参数及配置值。

 

 

 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部