鼎鼎知识库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

15.InfluxDB操作.md 5.4KB

5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. >基本概念
  2. - database 数据库
  3. - measurement 数据库中的表
  4. - points 表里面的一行数据
  5. - point 由时间戳(Time)、数据(field)、标签(tags)组成
  6. - Time:每个数据记录时间,是数据库中的主索引(会自动生成)
  7. - fields:各种记录值(没有索引的属性)也就是记录的值
  8. - tags:各种有索引的属性
  9. - measurement看成是一个SQL表格,其中,时间戳始终是主索引,tag和field是表格中的列,tag会被建索引,而field则不会。与SQL表格的不同之处在于,使用TSDB For InfluxDB®,您可以有数百万的measurement,无需预先定义数据的schema,并且不会存储空值。
  10. > 具体操作
  11. >启动Influx
  12. - 执行命令语句
  13. ```
  14. ./influx -ssl -username influxuser -password user@influxDB -host ts-uf60ncdtuve8d41w3.influxdata.rds.aliyuncs.com -port 3242
  15. ```
  16. - 执行不需要制定数据库的查询
  17. ```
  18. influx -ssl -username influxuser -password user@influxDB -host ts-uf60ncdtuve8d41w3.influxdata.rds.aliyuncs.com -port 3242 -execute 'SHOW DATABASES'
  19. ```
  20. - 执行需要指定数据库的查询,同时,改变时间戳精度:
  21. ```
  22. influx -ssl -username influxuser -password user@influxDB -host ts-uf60ncdtuve8d41w3.influxdata.rds.aliyuncs.com -port 3242 -execute 'SELECT * FROM "h2o_feet" LIMIT 3' -database="NOAA_water_database" -precision=rfc3339
  23. ```
  24. - 使用-format指定服务器返回结果的格式
  25. - 默认的格式是column:
  26. ```
  27. influx -ssl -username influxuser -password user@influxDB -host ts-uf60ncdtuve8d41w3.influxdata.rds.aliyuncs.com -port 3242 -format=column
  28. ```
  29. - 将格式改为csv:
  30. ```
  31. influx -ssl -username influxuser -password user@influxDB -host ts-uf60ncdtuve8d41w3.influxdata.rds.aliyuncs.com -port 3242 -format=csv
  32. ```
  33. - 将格式改为json:
  34. ```
  35. influx -ssl -username influxuser -password user@influxDB -host ts-uf60ncdtuve8d41w3.influxdata.rds.aliyuncs.com -port 3242 -format=json
  36. ```
  37. - 将格式改为json并开启美观的输出:
  38. ```
  39. influx -ssl -username influxuser -password user@influxDB -host ts-uf60ncdtuve8d41w3.influxdata.rds.aliyuncs.com -port 3242 -format=json -pretty
  40. ```
  41. > 显示购买的数据库名称
  42. - 执行命令语句 show databases
  43. > 使用该数据库
  44. - 执行命令语句 use <该数据库的名称>
  45. - 显示 Using databases 数据库名称
  46. >往数据库中插入表(measurement)
  47. - 执行命令语句:
  48. ```
  49. insert cpu_usage,ip=192.168.0.1 value=30 15226580942111
  50. cpu_usage 代表表名,ip是tag索引,value=xx是记录值键值对,记录值可以有多个
  51. ```
  52. - 显示所有的表
  53. - 查询命令:show measurements
  54. - 查询插入的数据
  55. ```
  56. select * from cpu_usage
  57. ```
  58. - 输入命令后显示出的内容
  59. ```
  60. name: cpu_usage
  61. time ip value
  62. ---- -- -----
  63. 15226580942111 192.168.0.1 30
  64. ```
  65. > 往表中插入数据
  66. - 输入命令
  67. ```
  68. INSERT cpu,host=serverA,region=us_west value=0.64
  69. 一个measurement为cpu,tag为host和region,测量值value为0.64的数据点已经写入数据库
  70. ```
  71. - 查询刚插入的数据
  72. ```
  73. SELECT “host”, “region”, “value” FROM cpu
  74. ```
  75. - 输入命令后显示的界面
  76. ```
  77. > name: cpu
  78. time host region value
  79. 1564026380476736485 serverA us_west 0.64
  80. ```
  81. - 注释:前面我们在写入数据点的时候没有提供时间戳。如果写入没有带时间戳的数据点,TSDB For InfluxDB®会在获取该点时,把本地当前时间分配给该数据点,作为该数据点的时间戳。这意味着您的时间戳跟上面的会有所不同。
  82. - 写入另一种类型的数据,同一个measurement有两个field
  83. - 输入命令
  84. ```
  85. INSERT temperature,machine=unit42,type=assembly external=25,internal=37
  86. 创建了表temperature,machine为tag-key,type和external为field-key
  87. ```
  88. **删除数据库**
  89. ```
  90. DROP DATABASE <database_name>
  91. ```
  92. **从索引中删除序列**
  93. ```
  94. 从单个测量中删除所有系列:
  95. DROP SERIES FROM "h2o_feet"
  96. 从单个测量中删除具有特定标记对的系列:
  97. DROP SERIES FROM "h2o_feet" WHERE "location" = 'santa_monica'
  98. 从数据库中的所有度量中删除系列中具有特定标记对的所有点:
  99. DROP SERIES WHERE "location" = 'santa_monica'
  100. 成功的DROP SERIES查询返回空结果。
  101. ```
  102. **使用Delete删除系列**
  103. ```
  104. 删除与测量相关的所有数据h2o_feet:
  105. DELETE FROM "h2o_feet"
  106. 删除与测量相关的所有数据h2o_quality以及标记randtag等于的位置3:
  107. DELETE FROM "h2o_quality" WHERE "randtag" = '3'
  108. 删除2016年1月1日之前发生的数据库中的所有数据:
  109. DELETE WHERE time < '2016-01-01'
  110. ```
  111. **使用Drop measurement 删除测量值**
  112. ```
  113. DROP MEASUREMENT <measurement_name>
  114. ```
  115. **创建保留策略**
  116. ```
  117. CREATE RETENTION POLICY "one_day_only" ON "NOAA_water_database" DURATION 23h60m REPLICATION 1 DEFAULT
  118. ```
  119. **修改保留策略**
  120. ```
  121. 创建策略
  122. CREATE RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 2d REPLICATION 1
  123. 修改策略
  124. ALTER RETENTION POLICY "what_is_time" ON "NOAA_water_database" DURATION 3w SHARD DURATION 2h DEFAULT
  125. ```
  126. **删除保留策略**
  127. ```
  128. DROP RETENTION POLICY <retention_policy_name> ON <database_name>
  129. 删除保留策略what_is_time的NOAA_water_database数据库:
  130. DROP RETENTION POLICY "what_is_time" ON "NOAA_water_database"
  131. ```