Documentation

开始使用 InfluxDB OSS

此页面记录了 InfluxDB OSS 的早期版本。InfluxDB OSS v2 是最新的稳定版本。查看等效的 InfluxDB v2 文档: 开始使用 InfluxDB

安装了 InfluxDB 开源 (OSS) ,您就可以开始做一些精彩的事情。在本节中,我们将使用 influx 命令行接口 (CLI),它包含在所有 InfluxDB 包中,是与数据库交互的轻量级简单方式。CLI 通过默认情况下在端口 8086 上向 InfluxDB API 发起请求,直接与 InfluxDB 进行通信。

注意: 数据库也可以通过原始HTTP请求使用。参见 写入数据查询数据 的示例,使用 curl 应用程序。

创建数据库

如果您在本地安装了 InfluxDB,influx 命令应该可以通过命令行使用。 执行 influx 将启动 CLI,并自动连接到本地 InfluxDB 实例(假设您已经使用 service influxdb start 启动了服务器或直接运行 influxd)。 输出应该如下所示:

$ influx -precision rfc3339
Connected to http://localhost:8086 version 1.11.8
InfluxDB shell 1.11.8
>

注意:

  • InfluxDB API 默认运行在端口 8086。 因此,influx 默认会连接到端口 8086localhost。 如果您需要更改这些默认值,请运行 influx --help
  • -precision 参数 指定任何返回时间戳的格式/精度。在上面的示例中,rfc3339 告诉 InfluxDB 以 RFC3339 格式 返回时间戳 (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ)。

命令行现在准备好以 Influx 查询语言(即 InfluxQL)语句的形式接收输入。
要退出 InfluxQL shell,请输入 exit 并按回车。

新安装的InfluxDB没有数据库(除了系统 _internal),所以创建一个是我们的第一项任务。您可以使用 CREATE DATABASE <db-name> InfluxQL语句创建一个数据库,其中 <db-name> 是您希望创建的数据库名称。数据库名称可以包含任何unicode字符,只要字符串是双引号括起来的。如果名称仅包含ASCII字母、数字或下划线并且不以数字开头,也可以不加引号。

在本指南中,我们将使用数据库名称 mydb:

> CREATE DATABASE mydb
>

注意: 按下 enter 键后,会出现一个新的提示,其他内容不会显示。 在 CLI 中,这意味着语句已成功执行,并且没有错误显示。 如果出错,将始终显示错误信息。 没有消息就是好消息!

现在 mydb 数据库已创建,我们将使用 SHOW DATABASES 语句来显示所有现有数据库:

> SHOW DATABASES
name: databases
name
----
_internal
mydb

>

注意: _internal 数据库是由 InfluxDB 创建并用于存储内部运行时指标的。稍后查看以洞察 InfluxDB 在后台的性能表现。

SHOW DATABASES 不同,大多数 InfluxQL 语句必须针对特定的数据库操作。 您可以在每个查询中显式命名数据库, 但是 CLI 提供了一个方便的语句 USE , 它将自动为所有未来的请求设置数据库。例如:

> USE mydb
Using database mydb
>

现在未来的命令将只在 mydb 数据库上运行。

书写与探索数据

现在我们有了一个数据库,InfluxDB 准备好接受查询和写入。

首先,关于数据存储的简要介绍。
在 InfluxDB 中,数据按“时间序列”组织,
时间序列包含一个测量值,例如“cpu_load”或“temperature”。
时间序列有零到多个 points,每个离散样本对应一个指标。
数据点由 time(时间戳)、measurement(例如“cpu_load”)、
至少一个键值 field(测量值本身,例如“value=0.64”或“temperature=21.2”),
以及零到多个键值 tags 包含关于值的任何元数据(例如“host=server01”、“region=EMEA”、“dc=Frankfurt”)。

从概念上讲,你可以将measurement视为一个SQL表, 其中主索引始终是时间。 tagsfields 实际上是表中的列。 tags 是索引过的,而 fields 则不是。 区别在于,使用InfluxDB时,你可以拥有数百万个测量值,你不必预先定义模式,并且不会存储空值。

点使用InfluxDB行协议写入InfluxDB,格式如下:

<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]

以下行都是可以写入InfluxDB的点的示例:

cpu,host=serverA,region=us_west value=0.64
payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
stock,symbol=AAPL bid=127.46,ask=127.48
temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

注意:有关 InfluxDB 行协议的详细信息,请参见 InfluxDB 行协议语法 页面。

要使用CLI将单个时间序列数据点插入到InfluxDB中,请输入 INSERT 后跟一个点:

> INSERT cpu,host=serverA,region=us_west value=0.64
>

一个测量名称为 cpu 的点,带有标签 hostregion,现已写入数据库,测量的 value0.64

现在我们将查询刚才写入的数据:

> SELECT "host", "region", "value" FROM "cpu"
name: cpu
---------
time		    	                     host     	region   value
2015-10-21T19:28:07.580664347Z  serverA	  us_west	 0.64

>

注意: 在写入我们的数据点时,我们没有提供时间戳。 当数据点未提供时间戳时,InfluxDB 会在数据点被接收时分配本地当前时间戳。 这意味着您的时间戳会有所不同。

让我们尝试存储另一种类型的数据,在同一个测量中有两个字段:

> INSERT temperature,machine=unit42,type=assembly external=25,internal=37
>

要返回所有字段和标签,可以使用 * 运算符:

> SELECT * FROM "temperature"
name: temperature
-----------------
time		                        	 external	  internal	 machine	type
2015-10-21T19:28:08.385013942Z  25	        	37     		unit42  assembly

>

警告: 在大型数据库上使用 * 而不带 LIMIT 子句可能会导致性能问题。 您可以使用 Ctrl+C 来取消响应时间过长的查询。

InfluxQL 有许多 功能和关键字 在这里没有涉及,包括对 Go 风格正则表达式的支持。例如:

> SELECT * FROM /.*/ LIMIT 1
--
> SELECT * FROM "cpu_load_short"
--
> SELECT * FROM "cpu_load_short" WHERE "value" > 0.9

这就是你需要知道的所有内容,以便将数据写入 InfluxDB 并查询回来。要了解更多关于 InfluxDB 写入协议的信息,请查看写入数据的指南。要进一步探索查询语言,请查看查询数据的指南。有关 InfluxDB 概念的更多信息,请查看[关键概念](/influxdb/v1/concepts/key_concepts/)页面。



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: