文档文档

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 https://127.0.0.1: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
>

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

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

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

>

注意: _internal 数据库由 InfluxDB 创建和使用,用于存储内部运行时指标。稍后查看它,以了解 InfluxDB 在后台运行情况的有趣信息。

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

> USE mydb
Using database mydb
>

现在,未来的命令将仅针对 mydb 数据库运行。

写入和浏览数据

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

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

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

点使用 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
>

现在,已将 measurement 名称为 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 会在摄取点时分配本地当前时间戳。这意味着您的时间戳将有所不同。

让我们尝试存储另一种类型的数据,在同一 measurement 中包含两个字段

> 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 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

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

有关如何入门的更多信息,请查看