跳至内容
InfluxDB 简介与安装

InfluxDB 简介与安装

这篇介绍 InfluxDB 是什么、和传统关系型数据库有什么不同、以及用 Docker 快速启动的步骤。适合第一次接触时序数据库的开发者。

什么是时序数据库

传统数据库(MySQL、PostgreSQL)擅长处理现状——当前的用户、订单、库存。时序数据库专门处理随时间变化的数据——服务器 CPU 使用率、传感器温度、API 响应时间、股票价格。

InfluxDB 是时序数据库领域的代表——由 InfluxData 公司开发,Go 语言编写,开源、高性能、支持水平扩展。

InfluxDB 的核心概念

拿传统数据库来类比:

InfluxDB传统数据库说明
database数据库逻辑隔离
measurement数据表同一类数据的集合(如 cpu_usage
point数据行一条时序记录
tag有索引的列元数据(如 host=server01, region=us-east
field无索引的列实际数值(如 usage=87.5
timestamp时间主索引每条数据的生成时间,天然有序

Series:database + retention policy + measurement + tag set 相同的数据集合属于同一个 series。同一 series 的数据物理上按时间顺序连续存储——这就是时序查询极快的秘密。

# 一个 point 的 Line Protocol 表示
cpu,host=server01,region=us-west usage=87.5,user=62.3 1705315200000000000
|--| |---------------| |-------------------| |------------------|
 |         |                   |                     |
measurement  tags              fields              timestamp

Docker 快速安装

InfluxDB 2.x 是当前主流版本(注意 1.x 和 2.x 的 API 差异很大):

# InfluxDB 2.x
docker run --name=influxdb2 \
  -p 8086:8086 \
  -v /data/influxdb/data:/var/lib/influxdb2 \
  -v /data/influxdb/config:/etc/influxdb2 \
  -e DOCKER_INFLUXDB_INIT_MODE=setup \
  -e DOCKER_INFLUXDB_INIT_USERNAME=admin \
  -e DOCKER_INFLUXDB_INIT_PASSWORD=YourPassword123 \
  -e DOCKER_INFLUXDB_INIT_ORG=my-org \
  -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \
  -e DOCKER_INFLUXDB_INIT_RETENTION=30d \
  -d \
  influxdb:2
参数说明
8086InfluxDB HTTP API 端口
INIT_USERNAME/PASSWORD初始管理员账号
INIT_ORG组织名称(2.x 的多租户概念)
INIT_BUCKET初始存储桶(类似 database)
INIT_RETENTION数据保留时间(30d = 30 天)

启动后访问 http://localhost:8086 进入 Web UI。

InfluxDB 2.x 把 1.x 的 database + retention policy 合并成了 Bucket。API 完全不同——如果你迁移旧项目,需要重写查询部分。如果新项目直接用 2.x,生态更成熟。

2.x 核心概念补充

  • Organization:组织,一个 InfluxDB 实例可以有多个 org,数据和用户按 org 隔离
  • Bucket:存储桶,数据存放的地方,有明确的 retention period
  • API Token:认证方式,替代 1.x 的用户名/密码

命令行工具

InfluxDB 2.x 使用 influx CLI:

# 进入容器
docker exec -it influxdb2 bash

# 配置连接
influx config create --config-name default \
  --host-url http://localhost:8086 \
  --org my-org \
  --token your-api-token

# 写入测试数据
influx write \
  --bucket my-bucket \
  --precision s \
  'cpu,host=server01 usage=42.5'

# 查询
influx query 'from(bucket:"my-bucket") |> range(start: -1h)'

一句话小结

InfluxDB 专为时间序列数据设计:measurement 是表,tag 是索引列,field 是数值列,timestamp 是天然主键。Docker 一键启动,Web UI 开箱即用。下一篇讲 数据写入

最后更新于