文档文档

InfluxDB 分片和分片组

InfluxDB 在将数据存储到磁盘时,将时间序列数据组织成分片。分片被分组到分片组中。了解存储桶、分片和分片组之间的关系。

分片

分片包含由分片组持续时间定义的给定时间范围内编码和压缩的时间序列数据。指定分片组持续时间内的序列中的所有数据点都存储在同一分片中。单个分片包含多个序列、磁盘上的一个或多个 TSM 文件,并且属于一个 分片组

分片组

分片组属于 InfluxDB 存储桶,并包含由分片组持续时间定义的特定时间范围的时间序列数据。

InfluxDB OSS 中,一个分片组通常只包含一个分片。在 InfluxDB Enterprise 1.x 集群中,分片组包含分布在多个数据节点上的多个分片。

分片组持续时间

分片组持续时间指定每个分片组的时间范围,并确定创建新分片组的频率。默认情况下,InfluxDB 根据存储桶的保留期设置分片组持续时间

存储桶保留期默认分片组持续时间
小于 2 天1 小时
介于 2 天和 6 个月之间1 天
大于 6 个月7 天
分片组持续时间配置选项

要配置自定义存储桶分片组持续时间,请将 --shard-group-duration 标志与 influx bucket createinflux bucket update 命令一起使用。

分片组持续时间必须短于存储桶的保留期。

要查看存储桶的分片组持续时间,请使用 influx bucket list 命令

分片组图示

下图表示具有 4 天保留期1 天分片组持续时间存储桶


0 天

1 天

2 天

3 天

4 天

分片组

分片

分片组

分片

分片组

分片

分片组

分片


分片生命周期

分片预创建

InfluxDB 分片预创建服务根据分片组持续时间,为每个分片组预先创建具有未来开始时间和结束时间的分片。

预创建服务不会为过去的时间范围预先创建分片。当回填历史数据时,InfluxDB 会根据需要为过去的时间范围创建分片,从而导致暂时较低的写入吞吐量。

分片写入

InfluxDB 将时间序列数据写入未压缩或“热”分片。当不再主动写入分片时,InfluxDB 会压缩分片数据,从而产生“冷”分片。

通常,InfluxDB 将数据写入最新的分片组,但是当回填历史数据时,InfluxDB 会写入必须首先解压缩的较旧分片。回填完成后,InfluxDB 会重新压缩较旧的分片。

分片压缩

InfluxDB 以规则的时间间隔压缩分片,以压缩时间序列数据并优化磁盘使用率。启用压缩后,InfluxDB 每秒检查是否需要分片压缩。如果在 compact-full-write-cold-duration 期间(默认为 4 小时)没有写入操作,则 InfluxDB 会压缩所有 TSM 文件。否则,InfluxDB 会将 TSM 文件分组到压缩级别(由文件压缩的次数决定),并尝试合并文件并更有效地压缩它们。

InfluxDB 使用以下四个压缩级别

  • 级别 0 (L0): 日志文件 (LogFile) 被视为级别 0 (L0)。一旦此文件超过 5MB 阈值,InfluxDB 将创建一个新的活动日志文件,并且前一个文件开始压缩到 IndexFile 中。第一个索引文件位于级别 1 (L1)。
  • 级别 1 (L1): InfluxDB 将内存缓存中保存的所有新写入数据刷新到磁盘上的 IndexFile 中。
  • 级别 2 (L2): InfluxDB 将最多八个 L1 压缩的文件压缩为一个或多个 L2 文件,方法是将包含相同序列的多个块合并到一个或多个新文件中的更少块中。
  • 级别 3 (L3): InfluxDB 迭代 L2 压缩的文件块(超过一定大小),并将包含相同序列的多个块合并到一个新文件中的一个块中。
  • 级别 4 (L4): 完全压缩 InfluxDB 迭代 L3 压缩的文件块,并将包含相同序列的多个块合并到一个新文件中的一个块中。

InfluxDB 优先安排压缩,使用以下准则

  • 级别越低(文件压缩的次数越少),压缩文件的权重越高。
  • 级别中可压缩文件越多,该级别的压缩优先级越高。如果每个级别中的文件数相等,则首先压缩较低级别。
  • 如果较高级别有更多压缩候选对象,则可能会在较低级别之前压缩它。 InfluxDB 将收集组(要压缩到单个下一代文件中的文件集合)的数量乘以每个级别指定的权重(0.4、0.3、0.2 和 0.1),以确定压缩优先级。

以下配置设置对于负载不规则的系统尤其有利,因为它们限制了高使用率期间的压缩,并使压缩在较低负载期间赶上

在负载稳定的系统中,如果压缩干扰了其他操作,通常,系统对于其负载而言太小,并且配置更改无济于事。

分片删除

InfluxDB 保留期强制服务定期检查早于其存储桶保留期的分片组。一旦分片组的开始时间超过存储桶的保留期,InfluxDB 将删除该分片组以及关联的分片和 TSM 文件。

在具有无限保留期的存储桶中,分片将无限期地保留在磁盘上。

InfluxDB 仅删除冷分片

InfluxDB 仅删除分片。如果回填超出存储桶保留期的数据,则回填的数据将保留在磁盘上,直到发生以下情况

  1. 分片返回到冷状态。
  2. 保留期强制服务删除分片组。

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最近数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,以实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看