公式のInfluxDB Dockerイメージを使用しています。デフォルトで保持ポリシーを14 days
に設定したい。
INFLUXDB_RETENTION_POLICY
など、InfluxDBの構成を変更するために設定できるさまざまなENV
変数があります。これは、「デフォルト」などの保持ポリシーの名前がデフォルトの保持ポリシーとして使用されることを想定しています。
問題は、このデフォルトポリシーの期間が7日間であることです。 14日に設定する必要があります。
ドキュメントはかなり貧弱です。デフォルトの期間を調整するためのENV
変数が見つかりません。 INFLUXDB_RETENTION_POLICY
変数を別の保持ポリシーの別の名前に設定することもできますが、構成を通じてその保持ポリシーを作成する方法がわかりません。
誰もが知っていますか:1)構成を介して保持のデフォルトの期間を変更する方法、または2)構成を介して保持ポリシーを作成する方法
残念ながら、構成を介してデフォルトの保持ポリシーを設定する方法はありません。これは、通常、保持ポリシーの期間はデータベースの作成時に定義されるためです。
CREATE DATABASE <database_name>
[WITH [DURATION <duration>] [REPLICATION <n>]
[SHARD DURATION <duration>] [NAME <retention-policy-name>]]
ユーザーが構成を介してデフォルトの保持期間を設定することを許可された場合、コマンドの結果
CREATE DATABASE mydb
インスタンスごとに異なります。これは必ずしも問題があるわけではありませんが、理想的でもありません。
問題は、このデフォルトポリシーの期間が7日間であることです。 14日に設定する必要があります。
InfluxDBのデフォルトの保持ポリシーは無限でなければなりません。
> CREATE DATABASE mydb
> SHOW RETENTION POLICIES ON mydb
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
ここでは、保持ポリシーの期間が0s
は無限のエイリアスであり、シャードグループ期間は168h0m0s
は7日です。
ここでの混乱の主なポイントは比較的一般的であると思います-そして、ほとんどの場合、保持ポリシーの名前が適切ではないためです。 InfluxDBでは、データベースは保持ポリシーのコンテナーであり、保持ポリシーは実際の時系列データのコンテナーです。つまり、保持ポリシーは、それが含むすべてのデータに対するポリシーを持つコンテナーとしてのポリシーほど重要ではありません。
私の推奨は、InfluxDBでデータベースを作成するときは常に完全に明示的であることです。そうすることで、データベースが正しい保持ポリシーの期間を持つことが常に保証されます。したがって、14日間の保存ポリシーでデータベースを作成するには、次のコマンドを発行します
CREATE DATABASE mydb WITH DURATION 14d
既存のデータベース(これは私の状況でした)を使用してgoogleから来ている人たちの質問に答えるには、保持ポリシーを設定する3つの方法があります。
データベースの作成
CREATE DATABASE "NOAA_water_database" WITH DURATION 3d REPLICATION 1 SHARD DURATION 1h NAME "liquid"
ポリシーの作成
CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 1d REPLICATION 1
既存のポリシーの更新
ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 3w SHARD DURATION 2h DEFAULT
したがって、デフォルトにする既存のデータベースと保存ポリシーの場合、最も簡単な解決策は、変更保存ポリシーを使用することです。