保留策略管什么
InfluxDB 1.x 用「数据库 + 保留策略」组织数据生命周期:保留策略(RP)定义数据保存多久(DURATION)、副本数(REPLICATION)以及分片组时长(SHARD DURATION),并决定未显式指定时写入落到哪里。数据的自动过期就是按 RP 的时长执行,因此分层保留在 1.x 里是靠多个 RP 配合连续查询实现的。
基本信息
| 创建 | CREATE RETENTION POLICY "rp_30d" ON "mydb" DURATION 30d REPLICATION 1 |
|---|---|
| 默认策略 | CREATE RETENTION POLICY "rp_7d" ON "mydb" DURATION 7d REPLICATION 1 DEFAULT |
| 查看 | SHOW RETENTION POLICIES ON "mydb" |
| 删除 | DROP RETENTION POLICY "rp_30d" ON "mydb"(同时删除其数据) |
| 写入指定 | INSERT INTO "mydb"."rp_90d"."cpu" …,查询跨 RP 也要写全路径 |
| 常见默认值 | 新建库自带的 autogen 策略通常为无限保留、单副本 |
典型使用场景
- 分层保留:短期 RP 存原始精度数据,长期 RP 存降采样结果,靠连续查询自动搬运
- 按业务分级:核心指标保留数年、调试类指标只保留数天
- 写入路由:不同精度或不同来源的数据写进不同 RP,避免混杂后无法分层清理
- 容量规划:按 RP 时长与每日写入量估算磁盘规模
- 变更默认策略前评估影响:DEFAULT 变化会影响所有未显式指定 RP 的写入与查询
示例
示例
-- 建库时就带上默认保留时长
CREATE DATABASE "metrics" WITH DURATION 7d REPLICATION 1;
-- 长期保留策略:接收连续查询产出的降采样数据
CREATE RETENTION POLICY "rp_90d" ON "metrics" DURATION 90d REPLICATION 1;
-- 查看全部策略(含默认标记与分片组时长)
SHOW RETENTION POLICIES ON "metrics";
-- 把默认策略切到 30 天(影响未显式指定 RP 的写入)
-- ALTER RETENTION POLICY "rp_30d" ON "metrics" DURATION 30d DEFAULT;
-- 写入指定策略时要用全路径
-- INSERT INTO "metrics"."rp_90d"."cpu",host=web-1 usage=0.73参数读法
| 参数 | 含义 | 注意点 |
|---|---|---|
| DURATION | 数据保留时长 | 最小为 1h;0 表示无限保留 |
| REPLICATION | 副本因子 | 单机版本只能为 1,集群版才有多副本 |
| SHARD DURATION | 分片组时长 | 决定过期数据的删除粒度,通常随 DURATION 自动推导 |
| DEFAULT | 是否为默认策略 | 同一库内变更默认会影响未指定的写入与查询 |
| name | 策略名 | 查询与写入引用时需与库名一起写全路径 |
分层保留需要三件东西配合:短期 RP、长期 RP 与把数据从前者搬向后者的连续查询。只建 RP 而不配搬运任务,长期策略里不会有任何数据。
删除保留策略会连带删除该策略下的全部数据,这是不可逆操作;改动 DURATION 也会让超期数据在后续过期周期中被清理。