本文参照:
https://cloud.tencent.com/developer/article/1543962
https://jasper-zhang1.gitbooks.io/influxdb/content/Introduction/installation.html
influxdb官网:https://www.influxdata.com/products/influxdb-overview/

一、安装

InfluxDB默认使用下面的网络端口:
TCP端口8086用作InfluxDB的客户端和服务端的http api通信
TCP端口8088给备份和恢复数据的RPC服务使用
另外,InfluxDB也提供了多个可能需要自定义端口的插件,所以的端口映射都可以通过配置文件修改,对于默认安装的InfluxDB,这个配置文件位于/etc/influxdb/influxdb.conf。
安装之前检查这两个端口是否被占用,如果占用可以通过配置文件进行更改
全局搜索8086或8088 将注释放开,更改其他的端口后,重启服务
在这里插入图片描述

sudo systemctl restart influxdb

更改默认端口后访问方式变为:

influx -port 8087

1、通过命令安装(centos7以上)

sudo yum install influxdb
sudo systemctl start influxdb

2、离线安装 可以从influx官网下载安装包 https://www.influxdata.com/products/influxdb-overview/

下载安装包:

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.2.x86_64.rpm
sudo yum localinstall influxdb-1.8.2.x86_64.rpm

二、配置admin用户认证登录

root@d248ddfcd76c:/# influx
Connected to http://localhost:8086 version 1.8.2
InfluxDB shell version: 1.8.2
>

没有设置用户认证,可以直接这样插入数据:

[root@server ~]# curl -G 'http://localhost:8086/query' --data-urlencode "q=show databases;"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]}]}]}
[root@server ~]# 

创建admin用户步骤

# 所有命令不区分大小写

# 显示用户
SHOW USERS

# 创建用户
CREATE USER "username" WITH PASSWORD 'password'

# 赋予用户管理员权限
GRANT ALL PRIVILEGES TO "username"

# 或者直接创建管理员权限的用户
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES

# 修改用户密码
SET PASSWORD FOR "username" = 'password'

# 撤消权限
REVOKE ALL ON mydb FROM "username"

# 查看权限
SHOW GRANTS FOR "username"

# 删除用户
DROP USER "username"

在配置文件启用认证
默认情况下,influxdb的配置文件是禁用认证策略的,所以需要修改设置一下。
编辑配置文件sudo vim /etc/influxdb/influxdb.conf,把 [http] 下的 auth-enabled 选项设置为 true 。
在这里插入图片描述
修改后需要重启influxdb

sudo systemctl restart influxdb

这里使用admin认证用户登陆访问一下,格式如下:

influx -username '用户名' -password '密码'
如果更改了端口号
influx -username '用户名' -password '密码' -port 端口号

具体执行:

root@e81b9a3b0eba:/# influx -username 'root' -password 'newpwd'
Connected to http://localhost:8086 version 1.8.2
InfluxDB shell version: 1.8.2
> 
> show users;
user admin
---- -----
root true
> 

设置其他用户权限,只有管理员进入influx 才能设置其他用户的权限
在这里插入图片描述

#赋予用户某个数据库的READ / WRITE / ALL 权限
GRANT READ ON mydb TO "username"
GRANT WRITE ON mydb TO "username"
GRANT ALL ON mydb TO "username"

执行后查询一下用户权限
在这里插入图片描述
此时test用户只能向mydb2写入数据,如果读则报没有权限

读报错:
在这里插入图片描述

正常写入:
在这里插入图片描述
如果不小心把管理员权限用户删除,或者密码忘记,无法登陆influxdb,可以通过更改配置文件

#编辑配置文件
sudo vim /etc/influxdb/influxdb.conf
#把 [http] 下的 auth-enabled 选项设置为 false
auth-enabled=false
#重启influxdb
sudo systemctl restart influxdb
#相当于无管理员权限进入,再重新设置管理员权限,更新密码,具体步骤参照上面创建admin用户步骤

三、基本读写操作

http带上admin用户查询、写入数据
查询数据

当配置了admin认证用户之后,进行http的api请求的时候就要带上用户名和密码的参数,不然无法执行,示例如下:

curl -G "http://localhost:8086/query" -u username:password --data-urlencode "q=SHOW DATABASES"
curl -G "http://localhost:8086/query" --data-urlencode "u=username" --data-urlencode "p=password" --data-urlencode "q=SHOW DATABASES"
curl -G "http://localhost:8086/query?u=username&p=password&q=SHOW+DATABASES"

其中增加?pretty=true可以将json展开显示。

[root@locust03 ~]# curl -G "http://localhost:8086/query?pretty=true" -u root:newpwd --data-urlencode "q=show databases"

在这里插入图片描述
写入数据
当然设置了用户认证之后,写入数据的时候也要带上用户名以及密码&u=username&p=password,如下:
用户名密码写在URL中

curl -i -X POST "http://localhost:8086/write?db=mydb&u=username&p=password" --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"

用户名密码写在HTTP头Authorization选项

curl -i -X POST "http://localhost:8086/write?db=mydb" -u username:password --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000" 

下面来执行一下:

[root@server ~]# curl -i -X POST "http://localhost:8086/write?db=mydb&u=root&p=newpwd" --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86 1434055562000000000"
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 4b314fea-0d16-11ea-8017-0242ac110002
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.9
X-Request-Id: 4b314fea-0d16-11ea-8017-0242ac110002
Date: Fri, 22 Nov 2019 10:53:19 GMT

[root@server ~]# 
[root@locust03 ~]# curl -i -X POST "http://localhost:8086/write?db=mydb" -u root:newpwd --data-binary "cpu_load_short,host=server01,region=us-west value=0.64,value2=0.86" 
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 6b2c10bb-0d16-11ea-8018-0242ac110002
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.9
X-Request-Id: 6b2c10bb-0d16-11ea-8018-0242ac110002
Date: Fri, 22 Nov 2019 10:54:12 GMT

[root@locust03 ~]# 

查看插入后的influxdb数据,如下:

> use mydb
Using database mydb
> 
> show measurements;
name: measurements
name
----
cpu_load_short
> 
> select * from cpu_load_short;
name: cpu_load_short
time                host     region  value value2
----                ----     ------  ----- ------
1434055562000000000 server01 us-west 0.64  0.86
1574420052671401939 server01 us-west 0.64  0.86
>

influxDB保存策略 Retention Policy
influxdb的数据保存策略policies主要是用于指定数据的保留时间,超过指定时间,就会删除这部分数据。

查询策略

> show retention policies on mydb;
name    duration shardGroupDuration replicaN default
----    -------- ------------------ -------- -------
autogen 0s       168h0m0s           1        true

name: 策略名称
duration: 保留时间,0s表示永久保存
shardGroupDuration:shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,个人理解为时间分区,保留策略中删除的最小粒度
replicaN:全称是REPLICATION,副本个数
default:是否是默认策略

新建策略
语法如下:

CREATE RETENTION POLICY ON <retention_policy_name> 
ON <database_name> 
DURATION <duration> 
REPLICATION <n> [SHARD DURATION <duration> ] [DEFAULT]

示例

CREATE RETENTION POLICY "3_day" ON "mydb" DURATION 3d REPLICATION 1 SHARD DURATION 3h DEFAULT;

为库mydb创建了一个名称为3_day的策略,其中数据保存时间为3天,SHARD DURATION为3h。
在这里插入图片描述
ShardGroup
shardgroup是InfluxDB中一个重要的逻辑概念,它负责指定时间跨度的数据存储,这个时间跨度在创建RP时指定。如果没有指定,系统将通过RP的数据保留时间来计算:

在创建RP时如果没有设置shard duration,则由InfluxDB根据RP的duration设置默认值,设置规则如下:

RP Duration < 2 天,Shard Group Duration = 1 小时

RP Duration > 2 天 and <= 6 个月,Shard Group Duration = 1 天

RP Duration > 6个月,Shard Group Duration = 7天

InfluxDB默认设置的shard duration在大多数场景都工作的很好,但对于高吞吐量、长时间运行的InfluxDB实例来说,较长的shard group duration更加适合。所以对于需要较长的shard group duration的场景,官方推荐如下:

RP Duration < = 1 天,Shard Group Duration = 6小时

RP Duration > 1 天 and <= 7天,Shard Group Duration = 1 天

RP Duration > 7天 and <= 3个月,Shard Group Duration = 7天

RP Duration > 3个月,Shard Group Duration = 30天

RP Duration = 永久,Shard Group Duration = 52周或更长

修改及删除策略

# 修改策略
alter retention policy "autogen" on "mydb" duration 72h0m0s default;

# 删除策略
drop retention POLICY "2_hours" ON "mydb"
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐