web-dev-qa-db-fra.com

Comment définir la politique de rétention par défaut et la durée pour InfluxDB via la configuration

J'utilise l'image officielle du docker InfluxDB. Je souhaite définir la politique de rétention sur 14 days par défaut.

Il existe différentes variables ENV que je peux définir pour modifier la configuration d'InfluxDB, telles que INFLUXDB_RETENTION_POLICY. Cela s'attend à ce que le nom d'une stratégie de rétention telle que "par défaut" soit utilisé comme stratégie de rétention par défaut.

Le problème est que cette politique par défaut a une durée de 7 jours. Je dois le régler sur 14 jours.

La documentation est plutôt pauvre. Je ne trouve aucune variable ENV pour ajuster la durée par défaut. Je pourrais également définir le INFLUXDB_RETENTION_POLICY variable avec un nom différent d'une stratégie de rétention différente, mais je ne vois pas comment créer cette stratégie de rétention via la configuration.

Quelqu'un connaît-il: 1) un moyen de modifier la durée par défaut de la rétention via la configuration ou 2) un moyen de créer une politique de rétention via la configuration

10
Tutan Ramen

Malheureusement, il n'y a aucun moyen de définir la politique de rétention par défaut via la configuration. La raison en est que la durée de la stratégie de rétention est généralement définie lors de la création de la base de données.

CREATE DATABASE <database_name>
[WITH [DURATION <duration>] [REPLICATION <n>]
      [SHARD DURATION <duration>] [NAME <retention-policy-name>]]

Si les utilisateurs étaient autorisés à définir une durée de rétention par défaut via la configuration, les résultats de la commande

CREATE DATABASE mydb 

varierait d'une instance à l'autre. Bien que cela ne soit pas nécessairement problématique, ce n'est pas idéal non plus.

Le problème est que cette politique par défaut a une durée de 7 jours. Je dois le régler sur 14 jours.

La politique de rétention par défaut dans InfluxDB doit être infinie.

> CREATE DATABASE mydb
> SHOW RETENTION POLICIES ON mydb
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

Nous voyons ici que la durée de la politique de rétention est 0s qui est un alias pour infini et la durée du groupe de fragments est 168h0m0s qui est de 7 jours.

Je pense que le principal point de confusion ici est relativement commun - et principalement en raison des politiques de rétention mal nommées. Dans InfluxDB, une base de données est un conteneur pour les stratégies de rétention et une stratégie de rétention est un conteneur pour les données de séries chronologiques réelles. C'est-à-dire qu'une politique de rétention n'est pas tant une politique que un conteneur qui a une politique pour toutes les données qu'elle contient.

Ma recommandation serait de toujours être totalement explicite lors de la création d'une base de données dans InfluxDB. Cela garantira toujours que votre base de données aura la durée de politique de rétention correcte. Donc, pour créer une base de données avec une politique de rétention de 14 jours, vous émettez la commande

CREATE DATABASE mydb WITH DURATION 14d
16
Michael Desa

Pour répondre à la question pour ceux qui viennent de Google avec une base de données existante (c'était ma situation), il y a trois façons de définir la politique de rétention:

  • Sur une nouvelle base de données, avec création de base de données (comme ci-dessus)
  • Lors de la création de la stratégie de rétention, en ajoutant DEFAULT à la fin de l'instruction create
  • Par modification une politique de rétention existante comme valeur par défaut pour la base de données (voir ci-dessous)

Création d'une base de données

CRÉER UNE BASE DE DONNÉES "NOAA_water_database" AVEC DUREE 3D REPLICATION 1 DUREE DURÉE 1h NOM "liquide"

Création d'une politique

CRÉER UNE POLITIQUE DE RÉTENTION "one_day_only" ON "NOAA_water_database" DURÉE 1d RÉPLICATION 1

Mise à jour d'une politique existante

ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURÉE 3w DURÉE DU SHARD 2h PAR DÉFAUT

Ainsi, pour une base de données existante et une politique de rétention que vous souhaitez définir par défaut, la solution la plus simple consiste à utiliser une politique de rétention différente.

0
Kenny Grant