Publié le: 2018-08-10

InfluxDB - move data to new retention

InfluxDB permet d’activer des politiques de rétention diverses afin de garder plus ou moins longtemps les différentes mesures et métriques collectées.

Dans certains cas vous pouvez être amenés à migrer des données d’une période de rétention à une autre, que ce soit pour un changement de politique majeur ou tout seulement une erreur de configuration initiale (pas de rétention par défaut).

La procédure pour migrer les données est relativement simple mais pourra prendre du temps suivant la volumétrie (comptez 4h environ pour 300 Go de données sur une instance c5.4xlarge en stockage SSD GP2 sur AWS).

Tout d’abord listez les mesures présentes dans la base:

show measurements;

Ensuite jouez la requête suivante pour chaque mesure:

SELECT * INTO "telegraf"."retention_2y"."measurement" FROM "telegraf"."autogen"."measurement" GROUP BY *

Cela aura pour effet d’importer les données d’une rétention à l’autre (de autogen à retention_2y).

Une fois le procédé terminé, assurez vous d’avoir les données, en comparant par exemple le premier et le dernier timestamp de chaque mesure:

SELECT * from "telegraf"."retention_2y"."measurement" ORDER BY time ASC limit 1
SELECT * from "telegraf"."retention_2y"."measurement" ORDER BY time DESC limit 1

SELECT * from "telegraf"."autogen"."measurement" ORDER BY time ASC limit 1
SELECT * from "telegraf"."autogen"."measurement" ORDER BY time DESC limit 1

Vous pouvez également faire un rapide contrôle sur disque, en demandant la taille des données de chaque rétention via la commande du:

du -sh /srv/influxdb/data/telegraf/autogen
du -sh /srv/influxdb/data/telegraf/retention_2y

Une fois vos mesures migrées, et les vérifications précédentes terminées, vous pouvez supprimer l’ancienne rétention, si elle est obsolète:

DROP RETENTION POLICY "autogen" ON "db"