数据摄取生命周期最佳实践
导入到InfluxDB的数据必须符合所存储数据库的保留期限。 超出保留期限的时间戳数据点将无法被查询,但仍可能在对象存储或目录中保持引用,这会导致运营开销和成本的增加。为了减少这些因素,管理导入数据的生命周期是非常重要的。
使用以下最佳实践来管理您 InfluxDB 集群中数据的生命周期:
使用适当的保留期限
当创建或更新数据库时,使用适合您需求的保留期限。存储超过要求的数据会给您的InfluxDB集群增加不必要的操作成本。
调整垃圾收集
一旦数据超出了数据库的保留期,垃圾收集服务可以将与数据相关的所有文档从目录和对象存储中删除。调整垃圾收集器的截止期以确保数据及时删除。
使用以下环境变量来调整垃圾收集器:
INFLUXDB_IOX_GC_OBJECTSTORE_CUTOFF: Parquet 文件在目录中未被引用时,成为从对象存储中删除的资格年龄。默认值为 30d。INFLUXDB_IOX_GC_PARQUETFILE_CUTOFF: 保留在目录中引用标记为删除的Parquet文件的行的时间。默认值为 30d。
这些值调节垃圾收集器的积极性。较短的持续时间值意味着文件可以更快地被删除。
为了确保在删除文件和引用之前有一个宽限期,最小的垃圾收集器 (GC) 对象存储和 Parquet 文件截止时间为三个小时 (3h)。
我们建议将这些选项设置为与您组织的备份和恢复策略相一致的值。例如,6h(6小时)的值适用于运行一个仅维护最近数据引用且不需要备份的精简目录。
用例示例
使用以下场景作为不同用例的指南:
没有备份的前沿数据
当只有最新的数据很重要并且不需要备份时,使用一个非常低的垃圾收集器截止点。 使用一个低值意味着垃圾收集服务将迅速从对象存储中删除文件,并从目录中移除相关的行。这导致目录精简,操作开销更低,对象存储中的文件更少。
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
metadata:
name: influxdb
namespace: influxdb
spec:
package:
# ...
spec:
components:
garbage-collector:
template:
containers:
iox:
env:
INFLUXDB_IOX_GC_OBJECTSTORE_CUTOFF: '6h'
INFLUXDB_IOX_GC_PARQUETFILE_CUTOFF: '6h'
自定义备份窗口 与 对象存储版本控制
当需要备份时,如果您正在利用对象存储(由您的对象存储提供商提供)的版本控制功能,请为垃圾收集器服务使用较低的截止点。您的对象版本控制策略确保过期文件会在指定的备份窗口时间内保留。
对象版本管理在数据过期后保持对象存储中的 Parquet 文件,但允许目录移除对 Parquet 文件的引用。非当前对象应配置为尽快过期,但保留足够长的时间以满足您组织的备份政策。
以下示例展示了一个 AWS S3 生命周期规则,该规则在 90 天后使非当前对象过期:
{
"Rules": [
{
"ID": "my-lifecycle-rule",
"Filter": {
"Prefix": ""
},
"Status": "Enabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": 90
}
}
]
}
设置 garbage-collector 使用低阈值。
以下示例使用 6h:
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
metadata:
name: influxdb
namespace: influxdb
spec:
package:
# ...
spec:
components:
garbage-collector:
template:
containers:
iox:
env:
INFLUXDB_IOX_GC_OBJECTSTORE_CUTOFF: '6h'
INFLUXDB_IOX_GC_PARQUETFILE_CUTOFF: '6h'
自定义备份窗口 不 使用对象存储版本控制
如果您无法使用对象版本控制策略但仍需要备份窗口,请配置垃圾收集器以保留Parquet文件,直到您的备份周期所需的时间。
这可能会导致更高的运营成本,因为目录维护了更多与之相关的Parquet文件的引用,并且Parquet文件在对象存储中持续的时间更长。
以下示例将垃圾收集器的截止值设置为 100d:
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
metadata:
name: influxdb
namespace: influxdb
spec:
package:
# ...
spec:
components:
garbage-collector:
template:
containers:
iox:
env:
INFLUXDB_IOX_GC_OBJECTSTORE_CUTOFF: '100d'
INFLUXDB_IOX_GC_PARQUETFILE_CUTOFF: '100d'