influx数据库
influxdb简介
influxDB 简介
InfluxDB 是一个 **开源的时序数据库 (Time-Series Database, TSDB)**,专门用于存储、查询和分析 带时间戳的数据。
基本特点
- 高效写入:能处理大量实时数据流(如传感器、日志、监控数据)。
- 时间序列查询:支持按时间范围快速查询和聚合。
- 内置函数:提供统计、聚合(平均值、最大值、最小值等)。
- 轻量易用:安装简单,常与 Telegraf、Grafana 搭配使用。
常见应用
- 系统和应用监控(CPU、内存、接口性能)
- 物联网数据(温度、湿度、传感器信息)
- 金融行情数据(股票、加密货币价格)
- 日志和事件记录
influxdb 1.8 部署
docker 持久化部署
准备
准备目录结构和配置文件
案例配置文件
1 | reporting-disabled = true |
run
1 | docker run -d \ |
实体机部署
添加仓库
1 | sudo tee /etc/yum.repos.d/influxdb.repo <<EOF |
查看版本
1 | dnf list influxdb |
安装
1 | dnf install -y influxdb-1.8.10-1 |
influxdb数据备份
1 | docker exec -it influxdb influxd backup -portable /var/lib/influxdb/backup |
influxdb数据恢复
版本原因只能恢复业务数据。
用户则需要单独导入。
全量恢复
1 | docker run -d \ |
1 | docker exec -it influxdb_new influxd restore -portable /var/lib/influxdb/backup |
增量恢复
通过挂载或者cp备份文件到容器里
1 | docker exec -it influxdb_new influxd restore -portable -db mydb1 -newdb mydb1 /var/lib/influxdb/backup |
influxdb版本分析
InfluxDB 的版本线主要分为 1.x 系列和 2.x 系列,其中 1.x 又有不同小版本(如 1.8、1.11)
1. 1.x 系列
主要特点
- 单独数据库、测量、点的概念。
- 使用 InfluxQL 作为主要查询语言(类似 SQL)。
- 数据库管理简单,部署轻量。
- 适合 传统 TSDB 用法:监控、IoT、日志。
版本区别
版本 | 主要变化 |
---|---|
1.8 | - 最后一版 1.x 的长期支持 (LTS)- 支持 Flux 查询语言(实验性)- 企业版可用 Clustering(集群)- 兼容 1.x 所有 API |
1.9 | - 提供更好的兼容 2.x 的 Flux- 减少一些已弃用功能- 企业版增加一些新特性 |
1.10/1.11 | - 主要是性能优化和 bug 修复- Flux 功能更完整- 为平滑迁移到 2.x 做准备 |
总结:1.x 系列以 InfluxQL 为主,Flux 为辅,适合长期使用和稳定项目。1.8 是 LTS,1.11 则是稳定性和性能的增强版。
2. 2.x 系列
主要特点
- 融合数据库、任务管理、告警、可视化于一体(InfluxDB UI、任务调度、Alerts)。
- 默认使用 Flux 语言,InfluxQL 可兼容但不推荐。
- 多租户、多组织支持:组织(Org)、桶(Bucket)替代 1.x 的 database + retention policy。
- 安全与认证:2.x 默认启用 token-based 认证。
- API 和数据模型变化:
- Database → Bucket
- Retention Policy → Bucket 的保留策略
- Measurement、Tag、Field 基本概念保留,但 API 有变化
- 适合 现代云原生监控、大规模 IoT 和多组织场景。
主要区别对比 1.x
特性 | 1.x | 2.x |
---|---|---|
查询语言 | InfluxQL 为主,Flux 可选 | Flux 为主,InfluxQL 可兼容 |
数据库概念 | Database + Measurement + RP | Organization + Bucket + Measurement |
UI | 简单 Web UI | 完整 UI + Task + Alert + Explore |
认证 | 可选 | Token-based 强制认证 |
集群 | 企业版支持 | 企业版支持,集群管理更现代化 |
开箱体验 | 轻量 | 功能丰富,但稍重 |
总结
- 1.x 系列:轻量、稳定、InfluxQL 主导,适合老项目或简单部署。1.8 是长期支持版,1.11 是功能和性能优化版。
- 2.x 系列:功能完整、现代化、多租户,Flux 主导,适合新项目和云原生场景。
nfluxQL和 Flux
1. InfluxQL
概述
- InfluxQL 是 InfluxDB 1.x 系列的主查询语言。
- 类似 SQL,但专门针对 时序数据(Time Series Data) 优化。
- 支持数据查询、聚合、分组、时间范围选择。
特点
类 SQL 语法,容易上手:
1
2
3
4SELECT mean("value")
FROM "temperature"
WHERE "device"='esp32' AND time > now() - 1h
GROUP BY time(5m)功能有限:
- 聚合函数、分组、时间条件
- 不能方便地做复杂的数据管道和跨数据库分析
只支持 InfluxDB,不能做跨数据源处理
适用场景
- 1.x 系列项目
- 简单时序查询、告警阈值计算、监控指标聚合
2. Flux
概述
- Flux 是 InfluxData 推出的 通用数据脚本语言,兼容 1.x,但 2.x 系列默认使用。
- 不仅可以查询 InfluxDB,也支持其他数据源(CSV、Prometheus、HTTP API 等)。
特点
函数式语言,支持数据管道:
1
2
3
4
5from(bucket:"temperature_bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "temperature" and r.device == "esp32")
|> aggregateWindow(every: 5m, fn: mean)
|> yield(name: "mean")更强大:
- 数据清洗、转换、聚合、窗口计算
- 可跨桶、跨组织查询
- 支持复杂告警逻辑
学习曲线稍陡:不再是 SQL 风格,而是函数式链式操作
适用场景
- 2.x 系列项目
- 高级数据分析、跨数据源整合、复杂告警
3. 对比总结
特性 | InfluxQL | Flux |
---|---|---|
语法风格 | 类 SQL | 函数式管道 |
支持数据源 | 仅 InfluxDB | InfluxDB + CSV + Prometheus + HTTP 等 |
功能 | 查询 + 聚合 + 分组 | 查询 + 聚合 + 转换 + 跨桶分析 + 复杂逻辑 |
易用性 | 容易上手 | 功能强大但学习成本高 |
默认版本 | 1.x | 2.x |
遇到的问题
日志文件无法挂载
access.log可以正常挂载出俩,配置文件设置好了日志输出也还是没有。不管是docker还是宿主机直接部署都没有。不太清除怎么解决,不太清楚怎么解决,发了issue。
issue : Unable to output influxd.log. · Issue #822 · influxdata/influxdata-docker
补救方式,可以输出日志到挂载的文件里。格式与配置文件有关(json或者其他)
1 | # 进入容器 |
用户数据无法迁移
备份出来的数据确实包含meta元数据,但是恢复的时候尝试了很多方法无法都不行。只能用sql一个个插入了。
备份时用的是 -portable ,导入备份时只能-portable,而不能用-metadir。两者是不同方式备份出来的文件。
- 如果使用 -portable导出,导入时必没有用户数据,业务数据正常导入
- 不支持其他方式:普通 OSS 容器只能做 portable backup:
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment