是否可以对 influxdb 中的默认保留策略执行删除查询?

Posted

技术标签:

【中文标题】是否可以对 influxdb 中的默认保留策略执行删除查询?【英文标题】:Is it possible to execute a delete query on the default retention policy in influxdb? 【发布时间】:2021-04-08 14:29:03 【问题描述】:

名为“metrics”的 Influx 数据库具有两个保留策略,并在两个保留策略中指定一个作为默认值。

CREATE RETENTION POLICY basic ON "metrics" DURATION 2h  REPLICATION 1 SHARD DURATION 6m DEFAULT
CREATE RETENTION POLICY downsample ON "metrics" DURATION 60d  REPLICATION 1 SHARD DURATION 2h

还有一堆连续查询每 10 分钟运行一次,并对数据进行下采样以写入涌入 downsample 保留策略层。 基本保留策略层的可用条目每 2 小时清除一次,downsample保留策略在 60 天后清除。

连续查询示例如下所示

CREATE CONTINUOUS QUERY "cq_reads" ON "metrics" BEGIN SELECT sum(reads) as reads INTO downsample.stats_io FROM "metrics".basic.stats_io GROUP BY time(10m),* END

metrics 是数据库名称,stats_io 是此处的度量。

我的产品中允许流入的指定 GB 的内存限制。在某些时候,influx 开始无法扩展以保存 60 天的数据。

在达到我的内存限制后,我正在尝试清除 基本 保留策略中最旧的 10 分钟数据。 downsample 保留政策中仍需要提供相应的下采样最早的 10 分钟数据。

以下命令将删除 basicdownsample 保留策略中的最后 10 分钟数据。

delete stats_io where time>1609457374835790623 and time < 1609457374835790623 + 10m

我不想删除 downsample 保留政策中可用的下采样数据。所以尝试单独删除基本保留政策。

delete basic.stats_io where time>1609457374835790623 and time < 1609457374835790623 + 10m

很遗憾,此查询最终出错,并且不允许根据保留政策进行删除。

ERR: error parsing query: found basic, expected FROM, WHERE at line 1, char 8

但是,选择查询适用于特定的保留策略。但是删除的工作方式不同。示例:选择查询

select count(*) from basic.stats_io // Properly get the count for the measurement with specified retention policy

我想知道为什么删除不支持基于保留策略的删除。是否存在任何其他方法或查询来单独清除默认保留策略数据?

非常感谢任何建议。谢谢!

【问题讨论】:

【参考方案1】:

我认为你需要使用语法delete FROM

delete FROM basic.stats_io where time>1609457374835790623 and time < 1609457374835790623 + 10m

更多信息请点击DELETE documentation

【讨论】:

以上是关于是否可以对 influxdb 中的默认保留策略执行删除查询?的主要内容,如果未能解决你的问题,请参考以下文章

InfluxDB 2.0 中的存储桶、度量和保留策略之间的逻辑联系是啥?

InfluxDB学习之InfluxDB数据保留策略(Retention Policies)

5,6,7_InfluxDB数据保留策略,InfluxDB的关键概念,带有时区进行查询示例

[svc]influxdb最佳实战-监控对比

Influxdb原理详解

8. InfluxDB配置admin用户认证登陆