Background
这里整理方便自己以后翻阅。具体可参考 官方文档
进入数据库命令行
influx -username admin -password '123456'
用户管理
可以直接在web管理页面操作,也可以命令行操作。下面以用户
wlf
为例介绍:
# 显示用户
> SHOW users
# 创建普通用户
> CREATE USER "wlf" WITH PASSWORD '123'
# 修改用户密码
> SET PASSWORD FOR "wlf" = '456'
# 为普通用户赋管理员权限
> GRANT ALL PRIVILEGES TO "wlf"
# 查看用户拥有的权限
> SHOW GRANTS FOR "wlf"
# 撤销普通用户的管理员权限
> REVOKE ALL PRIVILEGES FROM "wlf"
# 给用户赋hhtl数据库的只读权限
> GRANT READ ON "hhtl" TO "wlf"
# 取消用户对hhtl数据库的写权限
> REVOKE WRITE ON "hhtl" FROM "wlf"
# 直接创建管理员权限用户
> CREATE USER "wlf" WITH PASSWORD '123' WITH ALL PRIVILEGES
# 删除用户
> drop USER "wlf"
查看数据库
> show databases
name: databases
name
----
_internal
test
查看所有数据库的shards分布情况
> show shards
name: _internal
id database retention_policy shard_group start_time end_time expiry_time owners
-- -------- ---------------- ----------- ---------- -------- ----------- ------
625 _internal monitor 625 2021-03-30T00:00:00Z 2021-03-31T00:00:00Z 2021-04-07T00:00:00Z
628 _internal monitor 628 2021-03-31T00:00:00Z 2021-04-01T00:00:00Z 2021-04-08T00:00:00Z
629 _internal monitor 629 2021-04-01T00:00:00Z 2021-04-02T00:00:00Z 2021-04-09T00:00:00Z
649 _internal monitor 649 2021-04-02T00:00:00Z 2021-04-03T00:00:00Z 2021-04-10T00:00:00Z
650 _internal monitor 650 2021-04-03T00:00:00Z 2021-04-04T00:00:00Z 2021-04-11T00:00:00Z
651 _internal monitor 651 2021-04-04T00:00:00Z 2021-04-05T00:00:00Z 2021-04-12T00:00:00Z
652 _internal monitor 652 2021-04-05T00:00:00Z 2021-04-06T00:00:00Z 2021-04-13T00:00:00Z
659 _internal monitor 659 2021-04-06T00:00:00Z 2021-04-07T00:00:00Z 2021-04-14T00:00:00Z
name: cloudansys
id database retention_policy shard_group start_time end_time expiry_time owners
-- -------- ---------------- ----------- ---------- -------- ----------- ------
109 cloudansys autogen 109 1969-12-29T00:00:00Z 1970-01-05T00:00:00Z 1970-01-05T00:00:00Z
175 cloudansys autogen 175 1970-10-12T00:00:00Z 1970-10-19T00:00:00Z 1970-10-19T00:00:00Z
114 cloudansys autogen 114 2016-05-16T00:00:00Z 2016-05-23T00:00:00Z 2016-05-23T00:00:00Z
178 cloudansys autogen 178 2020-01-13T00:00:00Z 2020-01-20T00:00:00Z 2020-01-20T00:00:00Z
179 cloudansys autogen 179 2020-01-20T00:00:00Z 2020-01-27T00:00:00Z 2020-01-27T00:00:00Z
176 cloudansys autogen 176 2020-08-10T00:00:00Z 2020-08-17T00:00:00Z 2020-08-17T00:00:00Z
113 cloudansys autogen 113 2020-09-07T00:00:00Z 2020-09-14T00:00:00Z 2020-09-14T00:00:00Z
129 cloudansys autogen 129 2020-09-14T00:00:00Z 2020-09-21T00:00:00Z 2020-09-21T00:00:00Z
148 cloudansys autogen 148 2020-09-21T00:00:00Z 2020-09-28T00:00:00Z 2020-09-28T00:00:00Z
163 cloudansys autogen 163 2020-09-28T00:00:00Z 2020-10-05T00:00:00Z 2020-10-05T00:00:00Z
167 cloudansys autogen 167 2020-10-05T00:00:00Z 2020-10-12T00:00:00Z 2020-10-12T00:00:00Z
171 cloudansys autogen 171 2020-10-12T00:00:00Z 2020-10-19T00:00:00Z 2020-10-19T00:00:00Z
184 cloudansys autogen 184 2020-10-19T00:00:00Z 2020-10-26T00:00:00Z 2020-10-26T00:00:00Z
192 cloudansys autogen 192 2020-10-26T00:00:00Z 2020-11-02T00:00:00Z 2020-11-02T00:00:00Z
202 cloudansys autogen 202 2020-11-02T00:00:00Z 2020-11-09T00:00:00Z 2020-11-09T00:00:00Z
174 cloudansys autogen 174 2020-11-30T00:00:00Z 2020-12-07T00:00:00Z 2020-12-07T00:00:00Z
292 cloudansys autogen 292 2020-12-07T00:00:00Z 2020-12-14T00:00:00Z 2020-12-14T00:00:00Z
408 cloudansys autogen 408 2020-12-14T00:00:00Z 2020-12-21T00:00:00Z 2020-12-21T00:00:00Z
423 cloudansys autogen 423 2020-12-21T00:00:00Z 2020-12-28T00:00:00Z 2020-12-28T00:00:00Z
使用\切换数据库
> use test
Using database test
查看当前数据库的保存策略 Retention Policies
autogen
为默认保存策略,时间永久。
当首次创建数据库没有创建保存策略时,系统会默认给创建autogen
策略,并设置其为默认策略;但如果首次创建数据库时同时创建了保存策略,系统就不会再创建autogen
策略了,而且还会把创建的策略设置为默认策略。
> show retention policies on test
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
为数据库 test 创建新的保存策略 RP
> CREATE RETENTION POLICY "one_hour_only" ON "test" DURATION 1h REPLICATION 1 DEFAULT
> show retention policies on test
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
one_hour_only 1h0m0s 1h0m0s 1 true
- one_hour_only:策略名
- test:具体的数据库名
- 1h:保存1小时,1小时之前的数据将被删除,其它时间参数例如:h(小时),d(天),w(星期)
- replication 1:副本个数,一般为1就可以了,除非你掏钱使用的是集群版
- default:设置为默认策略
修改当前数据库的保存策略 RP
策略名还是原来的,所以要修改时可以删除后再新建策略,当然如果是策略名像我这包含时间含义的话。
> ALTER RETENTION POLICY "one_hour_only" ON "test" DURATION 1w REPLICATION 1 DEFAULT
> show retention policies on test
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
one_hour_only 168h0m0s 1h0m0s 1 true
删除当前数据库的保存策略 RP
删除了我们自己建的策略,同时把原来的
autogen
设置为默认,要不到时你使用的时候会报错。
> DROP RETENTION POLICY "one_hour_only" ON "test"
> show retention policies on test
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 false
> ALTER RETENTION POLICY "autogen" ON "test" DEFAULT
> show retention policies on test
name duration shardGroupDuration replicaN default
---- -------- ------------------ -------- -------
autogen 0s 168h0m0s 1 true
为当前数据库创建autogen
默认策略
CREATE RETENTION POLICY "autogen" ON "wlf" DURATION 0s REPLICATION 1 DEFAULT
查看所有表
> show measurements
name: measurements
name
----
add_test
查看所有表中的索引 tag
> show tag keys
name: add_test
tagKey
------
name
phone
> show tag values from add_test with key = "phone"
name: add_test
key value
--- -----
phone 110
查看表中有哪些字段 field
> show field keys from add_test
name: add_test
fieldKey fieldType
-------- ---------
age integer
boy boolean
user_id float
查询表中的点 series
> show series from add_test
key
---
add_test,name=YiHui,phone=110
查看表中数据
> select * from add_test limit 5
name: add_test
time age boy name phone user_id
---- --- --- ---- ----- -------
1606284216425943576 19 true YiHui 110 2
设置时间显示格式
在influxDB的CLI界面执行
precision rfc3339
即可,但是显示是UTC的时区,与中国时区差了8个小时,需要在查询语句的最后加上tz('Asia/Shanghai')
,这样查询的时间才是纠正为中国时区显示。
> precision rfc3339
> select * from add_test limit 5 tz('Asia/Shanghai')
name: add_test
time age boy name phone user_id
---- --- --- ---- ----- -------
2020-11-25T14:03:36.425943576+08:00 19 true YiHui 110 2
条件查询
> select * from add_test where time >= '2020-11-23 14:30:39' and time <= '2020-11-26 14:32:32' limit 5 tz('Asia/Shanghai')
name: add_test
time age boy name phone user_id
---- --- --- ---- ----- -------
2020-11-25T14:03:36.425943576+08:00 19 true YiHui 110 2
数据库数据迁移
这里我们把数据库
dky_cft
的数据复制到了数据库wlf
中。
注意:保存策略需要一致。
> SELECT * INTO "wlf"."autogen".:MEASUREMENT FROM "dky_cft"."autogen"./.*/ GROUP BY *
name: result
time written
---- -------
0 892797
表数据迁移到另一个表中
四十万条数据大概5秒左右。
> SELECT * INTO "db_hbjm_zhgr_test"."autogen"."raw_jmdb_copy" FROM "db_hbjm_zhgr_test"."autogen"."raw_jmdb_bk" GROUP BY *
name: result
time written
---- -------
1970-01-01T00:00:00Z 390345
更改 influxdb 默认的日志输出位置
我们可以在
/etc/rsyslog.d/influxdb.conf
中创建一个简单的规则来更改日志生成的位置:
cat <<EOF> /etc/rsyslog.d/influxdb.conf
### InfluxDB Rules ###
if $programname == 'influxd' then {
action(type="omfile" file="/var/log/influxdb/influxd.log")
stop
}
EOF
- 然后重启 rsyslog 和 influxd 服务
systemctl restart rsyslog
systemctl restart influxd
序列基数
cardinality反应了series的维度,即不同的series的数量。
序列基数是影响内存(RAM)使用量的主要因素。
- 计算公式
cardinality=tag1count * tag2count * ...
- 查看命令
SHOW SERIES CARDINALITY ON mydb
SHOW SERIES EXACT CARDINALITY ON mydb