InfluxDB 分片和分片组
InfluxDB 在将数据存储到磁盘时,将时间序列数据组织成分片。分片被分组到分片组中。了解存储桶、分片和分片组之间的关系。
分片
分片包含由分片组持续时间定义的给定时间范围内编码和压缩的时间序列数据。指定分片组持续时间内的序列中的所有数据点都存储在同一分片中。单个分片包含多个序列、磁盘上的一个或多个 TSM 文件,并且属于一个 分片组。
分片组
分片组属于 InfluxDB 存储桶,并包含由分片组持续时间定义的特定时间范围的时间序列数据。
在 InfluxDB OSS 中,一个分片组通常只包含一个分片。在 InfluxDB Enterprise 1.x 集群中,分片组包含分布在多个数据节点上的多个分片。
分片组持续时间
分片组持续时间指定每个分片组的时间范围,并确定创建新分片组的频率。默认情况下,InfluxDB 根据存储桶的保留期设置分片组持续时间
存储桶保留期 | 默认分片组持续时间 |
---|---|
小于 2 天 | 1 小时 |
介于 2 天和 6 个月之间 | 1 天 |
大于 6 个月 | 7 天 |
分片组持续时间配置选项
要配置自定义存储桶分片组持续时间,请将 --shard-group-duration
标志与 influx bucket create
和 influx bucket update
命令一起使用。
分片组持续时间必须短于存储桶的保留期。
要查看存储桶的分片组持续时间,请使用 influx bucket list
命令。
分片组图示
下图表示具有 4 天保留期和 1 天分片组持续时间的存储桶
分片生命周期
分片预创建
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),以确定压缩优先级。
分片压缩相关配置设置
以下配置设置对于负载不规则的系统尤其有利,因为它们限制了高使用率期间的压缩,并使压缩在较低负载期间赶上
storage-compact-full-write-cold-duration
storage-compact-throughput-burst
storage-max-concurrent-compactions
storage-max-index-log-file-size
storage-series-file-max-concurrent-snapshot-compactions
storage-series-file-max-concurrent-snapshot-compactions
在负载稳定的系统中,如果压缩干扰了其他操作,通常,系统对于其负载而言太小,并且配置更改无济于事。
分片删除
InfluxDB 保留期强制服务定期检查早于其存储桶保留期的分片组。一旦分片组的开始时间超过存储桶的保留期,InfluxDB 将删除该分片组以及关联的分片和 TSM 文件。
在具有无限保留期的存储桶中,分片将无限期地保留在磁盘上。
InfluxDB 仅删除冷分片
InfluxDB 仅删除冷分片。如果回填超出存储桶保留期的数据,则回填的数据将保留在磁盘上,直到发生以下情况
- 分片返回到冷状态。
- 保留期强制服务删除分片组。
保留期强制相关配置设置
此页面是否对您有帮助?
感谢您的反馈!