本文耗时 1小时10分钟,预计阅读/实战时长 1 小时(要多练习)。
InfluxDB 用 Go 语言编写的一个开源分布式时序、事件和指标数据库,和传统是数据库相比有不少不同的地方。 类似的数据库有 Elasticsearch、Graphite 等。
一般用来储存实时数据,配合一套 UI 界面(Grafana)来展示统计信息。
安装使用
下载链接
https://portal.influxdata.com/downloads#influxdb
选择 InfluxDB (Time-Series Data Storage) V1.3.2(最新版)
根据不同的操作系统,这里提供了不同的下载安装指引。
注意:InfluxDB 的安装是需要 root 账号或者有管理员账号权限的账户。
各种平台的各种下载安装方式
OS X (via Homebrew)
|
|
Docker Image
|
|
Ubuntu & Debian
|
|
RedHat & CentOS
|
|
Windows Binaries (64-bit)
|
|
Linux Binaries (64-bit)
|
|
Linux Binaries (32-bit)
|
|
Linux Binaries (ARM) MD5: 2eee010e6e86f26a81f23dba5e52b8f4
|
|
执行完以上的命令之后,即可安装完成。
网络
默认情况下,InfluxDB 以下网络端口是必须的:
- TCP 8086 用于 InfluxDB HTTP API 客户端连接器的端口。
- TCP 8088 用于 备份和恢复的 RPC 服务。
以下端口默认是关闭的:
- TCP 2003 运行 Graphite 服务的默认端口
- TCP 4242 运行 OpenTSDB 服务的默认端口
- TCP 8089 运行 UDP 服务的默认端口
- TCP 25826 运行 Collected 服务的默认端口
另外,InfluxDB 还附带提供了其他很多插件,也需要一些端口(自定义端口)。
所有的端口映射都可以在配置文件中进行配置,默认安装的配置文件路径是:/etc/influxdb/influxdb.conf
配置
默认的配置文件在/etc/influxdb/influxdb.conf
The system has internal defaults for every configuration file setting. View the default configuration settings with the influxd config command.
系统为每一个配置设置都有一个内部默认值。
查看默认配置的命令是:influxd config
。
在/etc/influxdb/influxdb.conf
默认文件中,很多配置都是注释掉的,所有注释掉的配置项都会选用系统默认的内部配置。任何配置文件里面没有注释的配置都会覆盖内部配置。并且本地配置不需要覆盖每一个配置项。
有两种方法运行指定配置文件:
- 启动时指定配置文件。
influxd -config /etc/influxdb/influxdb.conf
- 设置 INFLUXDB_CONFIG_PATH 环境变量。
` echo $INFLUXDB_CONFIG_PATH /etc/influxdb/influxdb.conf
influxd `
他们两者的优先级:influx启动时首先会去检查的,然后才是去查看环境变量参数。
更多的配置信息:https://docs.influxdata.com/influxdb/v1.3/administration/config
运行
如果你的系统是CentOS 6
,则:
|
|
如果你的系统是CentOS 7+, RHEL 7+
,则:
|
|
在 AWS 怎么构建?
推荐使用两个 SSD 磁盘,一个给 influxdb/wal
,一个给 influxdb/data
.
根据你系统的负载每个磁盘应该有 1k-3k 的 IOPS。
influxdb/data
磁盘应该有更大的磁盘空间,相对低一些的 IOPS,influxdb/wal
磁盘应该有更高的 IOPS 相对较少的磁盘空间。
每台机器至少 8GB 内存。
在 AWS 上,使用 R4 比 C3/C4/M4 提供更多的内存。
配置
|
|
权限
当我们在使用非标准的 InfluxDB 数据目录和配置时,你要确保设置了正确的系统权限。
|
|
接下来将简单介绍一下 InfluxDB 的使用。
InfluxDB 使用
InfluxDB 启动成功后,在命令行中运行influx
即可进入命令行模式。
|
|
创建一个数据库
|
|
使用数据库
|
|
增删改查
增
通过InfluxDB 提供的 HTTP API 接口增加数据。
|
|
删、修改
在InfluxDB中并没有提供数据的删除与修改方法,它是通过数据保存策略(Retention Policies)来实现删除。
Retention Policies 主要用于指定数据的保留时间:当数据超过了指定的时间之后,就会被删除。
SHOW RETENTION POLICIES ON "test_db"
查看当前数据库的 Retention Policies。
CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT
给db_name数据库创建一个rp_name的有30天时长的1个副本的默认数据保存策略。
ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT
修改数据保存策略。
DROP RETENTION POLICY "rp_name" ON "db_name"
删除数据保存策略。
查
|
|
还可以通过 HTTP API 来查询:
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDB" --data-urlencode "q=SELECT * FROM weather ORDER BY time DESC LIMIT 3"
InfluxDB 是支持类 SQL 语句的,所以查询语法支持非常丰富,跟 SQL 也是差不多的用法,更多的查询自己去尝试吧。
参考资料
- https://docs.influxdata.com/influxdb/v1.3/introduction/installation/
- https://docs.influxdata.com/influxdb/v1.3/introduction/getting_started/
- https://www.gitbook.com/book/xtutu/influxdb-handbook/details
茶歇驿站
一个可以让你停下来看一看,在茶歇之余给你帮助的小站。
这里的内容主要是后端技术,个人管理,团队管理,以及其他个人杂想。