是否可以使用时间范围删除测量数据,对于特定的保留策略?
DELETE
FROM "SensorData"."Quarantine"./.*/
WHERE "time" >= '2018-02-28T02:26:08.0000000Z'
AND "time" <= '2018-02-28T02:27:08.0000000Z'
我们当前是否尝试查询,在一段时间内删除所有数据,但是删除似乎并不乐意列出数据库或保留策略。
原因(我怀疑它是一个未解决的XY问题)(见github://influxdata/influxdb#8088)(这是下面的第3步)
我们有一个名为SensorData的数据库,其主缓冲区默认保留策略为30d,因此我们不会耗尽磁盘空间。
然而,如果传感器注册超过&#39;我们有一项要求,要求我们保留这些数据,两边一小时,以获取证据。我们称之为隔离区。
到目前为止,我们已将此实施为名为“隔离”的保留政策。
因此,我们有主要和隔离,并且可能在将来,某些高频率保留策略可能会被下采样到主要。
XY问题是,&#34;如何在Influx中对某些记录数据进行事务性复制/移动/更改保留策略?&#34;
我们的解决方案(未找到之后)
是,
e.g。
创建一个临时数据库,其命名方式是唯一标识正在进行的隔离操作。
create "TempDB"+"_Quarantine_"+startUnixTime+"_"+"endUnixTime"
将数据从Primary复制到tempdb
Copy Primary -> TempDB
第3。从主
中删除数据 `Delete Primary`
将数据复制到隔离区
Copy TempDB -> Quarantine
删除TempDB
Drop TempDB
这将允许回滚失败的操作,或者在崩溃的情况下回滚/恢复。
答案 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。
目前我建议对汇总数据使用不同的衡量标准。