首页 文章

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

提问于
浏览
6

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

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

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

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

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

1 回答

  • 11

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

    CREATE DATABASE <database_name>
    [WITH [DURATION <duration>] [REPLICATION <n>]
          [SHARD DURATION <duration>] [NAME <retention-policy-name>]]
    

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

    CREATE DATABASE mydb
    

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

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

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

    > CREATE DATABASE mydb
    > SHOW RETENTION POLICIES ON mydb
    name    duration shardGroupDuration replicaN default
    ----    -------- ------------------ -------- -------
    autogen 0s       168h0m0s           1        true
    

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

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

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

    CREATE DATABASE mydb WITH DURATION 14d
    

相关问题