存储管理
存储路径设置
默认存储路径和系统要求
下表列出了 KWDB 各类文件的默认存储路径、文件系统和配置信息。
文件 | 默认路径 | 大小 | 文件系统 | 配置参数 |
|---|---|---|---|---|
| 数据文件 | /var/lib/kaiwudb | 取决于存储数据的大小 | - 建议使用 ext4 文件系统。 - 如果存储大于 16 TB 的数据,建议使用 XFS 系统。 | - 部署配置文件中的 data_root 参数- --store 启动参数 |
| 日志 | /var/lib/kaiwudb/logs | 默认 1G,可配置 | 建议使用 ext4 文件系统。 | --log-dir 启动参数 |
| 证书 | /etc/kaiwudb/certs | N/A | 建议使用 ext4 文件系统。 | --certs-dir 启动参数 |
| 二进制文件 | /usr/local/kaiwudb/bin | > 200 M | 建议使用 ext4 文件系统。 | N/A |
| 动态库文件 | /usr/local/kaiwudb/lib | > 100 M | 建议使用 ext4 文件系统。 | N/A |
说明
如果采用 Docker 容器部署,则使用宿主机路径,系统自动进行挂载。
存储路径设置
KWDB 支持以下存储路径设置方式:
- 安装时通过修改
deploy.cfg文件中的data_root参数自定义数据路径。 - 部署完成后,用户也可以通过修改部署生成的
kaiwudb_env文件、docker-compose.yml文件或kwbase start命令修改存储路径。
数据重组
数据重组是指按照特定规则对原始时序数据进行清理和整理的过程,主要应用于以下场景:
- 删除数据清理:执行 DELETE 或 DROP 操作后,清理被标记删除的数据以释放存储空间
- 过期数据清理:清理通过生命周期管理功能识别出的过期数据
- 数据整理优化:对不连续的 entity 数据进行重组排序,提高查询效率
数据重组可以优化存储空间利用率,提升数据库查询性能和响应速度,改善整体系统效率。
重组方式
KWDB 提供自动重组和手动重组两种数据重组方式:
自动重组
系统定期自动触发重组任务,以分区(Partition)为基本单位,采用单线程串行方式处理,确保操作的稳定性和数据一致性。具体流程如下:
- 任务触发:系统定期自动触发重组任务
- 分区遍历:依次扫描各个分区,对每个分区执行重组操作
- 数据清理:
- 清理过期数据
- 清理被标记删除的数据
- 文件重建:生成优化后的新数据文件,替换原有文件
- 标记清理:清理相关的删除标记记录,完成重组流程
重组操作与合并操作互斥,同一 entity segment 不会同时执行这两种操作。
手动重组
需要立即释放存储空间或优化查询性能时,可以通过立即重组命令 VACUUM TS DATABASES; 手动触发重组操作。
手动重组特别适用于以下场景:
- 删除数据或删除库表后释放空间:执行 DELETE 或 DROP 操作后,立即清理已删除数据,快速释放存储空间
- 批量写入后数据整理:大批量数据写入后,对数据文件进行整理排序,加速后续查询性能
手动重组功能与自动重组功能兼容,互不影响,同时具有以下特点:
- 对当前分区数据执行重组操作
- 对不连续的 entity 数据进行重组排序,整理分散的 block 以提高查询效率(无论是否有删除操作)
- 及时检查并清理已删除表的相关数据
- 将内存数据持久化到磁盘,并合并 last 文件
重组配置
- 自动重组:自动数据重组功能默认启用,用户可以通过
ts.auto_vacuum.enabled实时参数选择是否启用或禁用该功能。有关详细信息,参见集群实时参数。 - 手动重组:用户需要通过执行立即重组命令
VACUUM TS DATABASES;命令手动触发重组操作。
时序分布式日志存储引擎
时序分布式日志存储引擎(RaftLog Store)是专门针对分布式集群时序数据场景的存储优化,通过减少磁盘 IO 压力和优化写入路径,在机械硬盘环境下显著提升数据写入性能。
该功能适用于分布式集群、大量时序数据写入、机械硬盘存储环境且对写入性能要求较高的应用场景。
启用后,系统会在数据目录的时序引擎目录下自动创建 raftlog 子目录,当前文件达到 512 MB 时自动转换为历史文件,每 30 分钟检查一次合并需求。
功能配置
启用时序分布式日志存储引擎需要在节点启动命令中添加 --use-raft-store 参数。
注意
- 该参数必须在数据库首次安装启动时指定,默认为关闭状态。
- 数据库初始化完成后,无法通过修改启动参数切换存储引擎。
启动命令的更多信息和示例,参见kwbase start。