如何在给定RP的时间范围内删除测量值?

时间:2018-02-28 05:14:02

标签: influxdb

问题

是否可以使用时间范围删除测量数据,对于特定的保留策略?

DELETE FROM "SensorData"."Quarantine"./.*/ WHERE "time" >= '2018-02-28T02:26:08.0000000Z' AND "time" <= '2018-02-28T02:27:08.0000000Z'

我们当前是否尝试查询,在一段时间内删除所有数据,但是删除似乎并不乐意列出数据库或保留策略。

可能的XY问题

原因(我怀疑它是一个未解决的XY问题)(见github://influxdata/influxdb#8088)(这是下面的第3步)

我们有一个名为SensorData的数据库,其主缓冲区默认保留策略为30d,因此我们不会耗尽磁盘空间。

然而,如果传感器注册超过&#39;我们有一项要求,要求我们保留这些数据,两边一小时,以获取证据。我们称之为隔离区。

到目前为止,我们已将此实施为名为“隔离”的保留政策。

因此,我们有主要和隔离,并且可能在将来,某些高频率保留策略可能会被下采样到主要。

XY问题是,&#34;如何在Influx中对某些记录数据进行事务性复制/移动/更改保留策略?&#34;

我们的解决方案(未找到之后)

是,

e.g。

  1. 创建一个临时数据库,其命名方式是唯一标识正在进行的隔离操作。

    create "TempDB"+"_Quarantine_"+startUnixTime+"_"+"endUnixTime"

  2. 将数据从Primary复制到tempdb

    Copy Primary -> TempDB

  3. 第3。从主

    中删除数据
       `Delete Primary`
    
    1. 将数据复制到隔离区

      Copy TempDB -> Quarantine

    2. 删除TempDB

      Drop TempDB

    3. 这将允许回滚失败的操作,或者在崩溃的情况下回滚/恢复。

3 个答案:

答案 0 :(得分:1)

如果您只想更改某些数据范围的保留策略,我建议您只将这些数据范围复制到另一个保留策略中:

USE "SensorData"

SELECT *
INTO "Quarantine"."MeasurementName" 
FROM "Primary"."MeasurementName" 
WHERE "time" >= '2018-02-28T02:26:08.0000000Z' 
    AND "time" <= '2018-02-28T02:27:08.0000000Z'

"Primary"."MeasurementName" RP指定的持续时间(30天)之后,数据将照常从"Primary"删除,而复制的范围将保留在"Quarantine" RP中。

如果您想立即删除主中的数据,下一步可以尝试做什么:

USE "SensorData"."Primary"

DELETE 
FROM "MeasurementName"
WHERE "time" >= '2018-02-28T02:26:08.0000000Z' 
    AND "time" <= '2018-02-28T02:27:08.0000000Z'

答案 1 :(得分:0)

Chronograf在解析查询时非常时髦,引起了很多困惑。

Influx(从1.4开始)无法删除特定保留策略的数据,而Chronograf无法在未指定数据库的情况下解析删除命令。

最终工作的是(通过API)调用

DELETE FROM /.*/ WHERE "time" >= '2018-02-28T02:26:08.0000000Z' AND "time" <= '2018-02-28T02:27:08.0000000Z'

未指定数据库,因为它已在API的其他位置指定。

预计相当于在CLI之前或之内调用use SensorData

目前,解决方法是删除所有RP的数据,并希望将来不需要高频数据保留政策。

答案 2 :(得分:0)

InfluxQL不支持指定数据库和保留策略。我希望它将来或IFQL。

目前我建议对汇总数据使用不同的衡量标准。