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
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
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:
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.