如何通过配置为InfluxDB设置默认保留策略和持续时间

Tut*_*men 6 configuration influxdb

我正在使用官方的InfluxDB docker镜像.我想将保留策略设置为14 days默认值.

ENV我可以设置各种变量来更改InfluxDB的配置,例如INFLUXDB_RETENTION_POLICY.这需要将保留策略的名称(如"default")用作默认保留策略.

问题是此默认策略的持续时间为7天.我需要将它设置为14天.

文档相当差.我找不到任何ENV变量来调整默认持续时间.我还可以将INFLUXDB_RETENTION_POLICY变量设置为不同保留策略的不同名称,但我不知道如何通过配置创建该保留策略.

是否有人知道:1)通过配置更改保留的默认持续时间的方法或2)通过配置创建保留策略的方法

Mic*_*esa 16

遗憾的是,无法通过配置设置默认保留策略.原因是通常在数据库创建期间定义保留策略持续时间.

CREATE DATABASE <database_name>
[WITH [DURATION <duration>] [REPLICATION <n>]
      [SHARD DURATION <duration>] [NAME <retention-policy-name>]]
Run Code Online (Sandbox Code Playgroud)

如果允许用户通过配置设置默认保留期限,则命令的结果

CREATE DATABASE mydb 
Run Code Online (Sandbox Code Playgroud)

因实例而异.虽然这不一定有问题,但它也不理想.

问题是此默认策略的持续时间为7天.我需要将它设置为14天.

InfluxDB中的默认保留策略应该是无限的.

> CREATE DATABASE mydb
> SHOW RETENTION POLICIES ON mydb
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true
Run Code Online (Sandbox Code Playgroud)

在这里,我们看到保留策略的0s持续时间是无限的别名,而分片组的持续时间168h0m0s是7天.

我认为这里混淆的主要问题是相对普遍的 - 主要是由于保留政策命名不佳.在InfluxDB中,数据库是保留策略的容器,而保留策略是实际时间序列数据的容器.也就是说,保留策略不是一个策略,而是一个容器,它对所包含的所有数据都有策略.

我的建议是在InfluxDB中创建数据库时始终完全明确.这样做将始终保证您的数据库具有正确的保留策略持续时间.因此,要创建具有14天保留策略的数据库,您将发出该命令

CREATE DATABASE mydb WITH DURATION 14d
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用“alterretentionpolicy“autogen”on“mydb”duration2wshardduration1wreplication1default”来更改现有的autogen策略。 (4认同)

Ken*_*ant 13

要回答那些来自 google 并拥有现有数据库的问题(这是我的情况),可以通过三种方法来设置保留策略:

  • 在新数据库上,使用数据库创建(如上)
  • 在创建保留策略时,通过在 create 语句的末尾添加 DEFAULT
  • 通过现有的保留策略更改为数据库的默认值(见下文)

创建数据库

CREATE DATABASE "NOAA_water_database" WITH DURATION 3d REPLICATION 1 SHARD DURATION 1h NAME "liquid"

创建策略

在“NOAA_water_database”上创建保留策略“one_day_only” DURATION 1d REPLICATION 1

更新现有政策

ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 3w SHARD DURATION 2h DEFAULT

因此,对于您希望将其设为默认值的现有数据库和保留策略,最简单的解决方案是使用更改保留策略。

在现有数据库上添加/更新策略时需要注意的一点 - 策略到期之前的数据将立即删除,因此您将丢失所有旧数据。