ERR: partial write: points beyond retention policy dropped=10000

背景

环境

  • influxdb 1.7.1

特别说明:

官方还原方法:
https://docs.influxdata.com/influxdb/v1.7/administration/backup_and_restore/

USE telegraf_bak
SELECT * INTO telegraf…:MEASUREMENT FROM /.*/ GROUP BY *
DROP DATABASE telegraf_bak

上面是官方给出的还原方法, 是整库还原.

为什么我要挨个mes来还原呢? 原因有2:

  1. 数据量太大, 担心中途出错不好处理
  2. 磁盘空间不太够

下面来具体说说我的操作过程及解决方法.

在还原influxdb某个measurement(下简称为mes)的时候遇到这个错误:

ERR: partial write: points beyond retention policy dropped=10000

其中:
目标库: db1
目标mes: tbl1
临时库: db1_tmp
临时mes: tbl(db1_tmp中的)

其中db1设置了retention policy: 数据有效期是一年. 然后db1_tmp中有一小部分数据是一年前的.

操作过程

操作命令:
select * into db1..tbl1 from db1_tmp..tbl1 group by *;
这句命令会导致开头所说的错误, 原因也很明显, 就是因为db1_tmp…tbl1中有一小部分数据已经过期了.
而且这样执行会导致没有数据还原进db1…tbl1中.

那既然过期了, 我就想, 过期的不要, 我只要不过期的, 所以这样做:
select * into db1..tbl1 from db1_tmp..tbl1 group by * order by time desc;
这个还是会报开头所说的错误, 但是很神奇的是, 数据写进去将近一半(db1_tmp…tbl1的),
为什么是将近一半呢?

问题分析

我查看db1_tmp…tbl1的series, 发现是这样的:

> show series from db1_tmp..tbl1;
key
---
tbl1,type=rtt
tbl1,type=status

然后group by *的意思是, 根据mes中的所有series来分组, 再加上order by time desc, 结果大概是这样的(value是field):

name: tbl1
tags: type=status
time                value
----                -----
1585737215010441602 1
1585737210044881735 1
1585737205009873773 1
1585737200008147924 1
...
1000000000000000000 1 # 表示1年前的数据

name: tbl1
tags: type=rtt
time                value
----                -----
1585737215010441602 6.914823
1585737210044881735 7.714733
1585737205009873773 7.283623
1585737200008147924 6.910449
...
1000000000000000000 3.225343 # 表示1年前的数据

也就是说, 结果会有两组, 但是第一组最后一小部分数据已经过期了, 所以会报开头的错误,
然后停止还原数据, 然后结果就是数据写进去将近一半.

最终解决方法

有了上面的经验, 那我想到一个办法, 那我挨个series来写不就行了, 虽然报错, 但是期望的数据都还原了.

所以最终分成两条(因为有两个series)命令:

select * into db1..tbl1 from db1_tmp..tbl1 where type='status' group by * order by time desc;
select * into db1..tbl1 from db1_tmp..tbl1 where type='rtt' group by * order by time desc;

这两句执行时都会报开头的错, 但是可以还原数据.

注意

还原一个mes, 再删除一个旧的mes, 磁盘空间不会释放.
相关issue在这里

(完)

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读