数据库- InfluxDB安装部署问题排查【运维了解这一篇就够了!】

1- 学习目标

  • 是做什么的?有哪些优势?适用于哪些场景?
  • 集群方案有哪些?
  • 与其他同类数据库相比较,有什么优缺点?
  • 配置文件详解,如何优化性能?
  • 基本操作,数据备份与恢复
  • QA汇总

2- 是做什么的?有哪些优势?适用于哪些场景?

2.1- 简介

influxdb是使用GO编写的基于时间序列的数据库,适用于存储大量带有时间戳的数据,监控数据,日志,应用程序的指标、数据分析数据等等。
通过influxdb自动保存数据,你不需要删除和清理,只需要定义一段时间DB会帮你自动清理。
influxdb默认端口8086,默认是http协议接口

  • 一些概念

database: 数据库
measurement: 类似于mysql中的表
point: 类似于mysql中的一行数据
timestamp: 数据插入时的时间(也可插入时自己指定时间,不指定的话,influxdb会自己插入当前时间的纳秒值)
retention policy: 保留策略, 设置数据可以保留的时间(过期自动删除), 及副本数.
tag key: 可理解为MySQL中建立了索引的列, 类型只能为字符串
tag value: tag key对应的值
tag set: 数据点中包含的tag, 格式为: =; 可以有多个, 以,分隔, 如: =,=
field key: 可理解为MySQL中没有建立索引的列, 类型可以为字符串, 浮点数等.
field value: field key对应的值
field set: 每个数据点中至少要有一个field, 格式与tag set一样

series: 在同一个database中,相同retention policy、相同measurement、相同tag的数据属于一个series集合,标识这条数据来自哪里,同一个series的数据在物理上按照时间顺序排列在一起。这些数据存储在内存中,如果series太多,会导致OOM

Shard: 存储一定时间间隔的数据,每个目录对应一个shard,目录的名字就是shard id。每一个shard都有自己的cache、wal、tsm file以及compactor,目的就是通过时间来快速定位到要查询数据的相关资源,加速查询的过程,并且也让之后的批量删除数据的操作变得非常简单且高效。

连续查询: 通过设置定时执行的查询语句,将一段时间内的多个样本点聚合成一个,达到压缩数据、加快查询的效果;
保留策略: 通过设置保留多长时间内的数据,自动删除旧数据,防止硬盘空间占用过大。
两者通常搭配使用:连续查询将原始数据压缩,存到另一表里,保留策略负责定时删除旧的原始数据。

  • 硬件推荐

如果您的InfluxDB性能需要满足以下任何条件,则单个节点(InfluxDB OSS)可能无法满足您的需求:

  • 每秒超过750,000个字段写入
  • 每秒超过100个 queries per second
  • 超过10,000,000 series cardinality (即series的数量)

通常,更多的RAM可以提高查询速度。您的RAM要求主要取决于系列基数。较高的基数需要更多的RAM。无论使用哪种RAM,1000万以上的基数都可能导致OOM(内存不足)故障。通常,您可以通过重新设计架构来解决OOM问题。

InfluxDB设计为在固态驱动器(SSD)和内存优化的云实例(例如AWS EC2 R5或R4实例)上运行。InfluxDB尚未在硬盘驱动器(HDD)上进行测试,我们不建议将HDD用于生产。为了获得最佳结果,InfluxDB服务器必须在存储上至少具有1000 IOPS,以确保恢复和可用性。我们建议至少2000 IOPS,以在停机后快速恢复群集数据节点。

在生产环境中运行InfluxDB时,将wal目录和data目录存储在单独的存储设备上。此优化可显着减少繁重的写负载下的磁盘争用,如果写负载高度可变,这是一个重要的考虑因素。如果写入负载的变化幅度不超过15%,则可能不需要进行此优化。

2.2- 优缺点

对于时间序列用例,我们假设如果多次发送相同的数据,则它是客户端刚刚发送几次的完全相同的数据。
优点:简化的冲突解决方案可提高写入性能。
缺点:无法存储重复数据;在极少数情况下可能会覆盖数据。

删除很少见。当它们确实发生时,几乎总是会遇到大量旧数据,而这些旧数据对于写入来说很冷。
优点:限制对删除的访问可以提高查询和写入性能。
缺点:删除功能受到严重限制。

对现有数据的更新很少发生,而有争议的更新则永远不会发生。时间序列数据主要是永远不会更新的新数据。
优点:限制对更新的访问可以提高查询和写入性能。
缺点:更新功能受到严重限制。

绝大多数写操作都是针对具有最近时间戳记的数据,并且数据是按时间升序添加的。
优点:按时间升序添加数据的性能明显更高。
缺点:用随机时间或不按升序排列的时间写点的性能明显较差。

规模至关重要。该数据库必须能够处理大容量的读取和写入。
优点:数据库可以处理高量读取和写入操作。
缺点:InfluxDB开发团队被迫进行权衡以提高性能。

能够写入和查询数据比拥有高度一致的视图更为重要。
优点:编写和查询数据库可以由多个客户端以高负载完成。
缺点:如果数据库负载沉重,查询返回可能不包含最新点。

许多时间序列都是短暂的。通常,时间序列只会出现几个小时,然后消失,例如,一个新的主机开始运行并报告一段时间,然后关闭。
优点: InfluxDB擅长管理不连续的数据。
缺点:无模式设计意味着不支持某些数据库功能,例如,没有交叉表联接。

没有一个point是太重要的。
优点: InfluxDB具有非常强大的工具来处理聚合数据和大型数据集。
缺点:point没有传统意义上的ID,它们通过时间戳和序列来区分。

2.3- 安装使用

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm
yum -y localinstall influxdb-1.8.0.x86_64.rpm

#安装InfluxDB之后
#/usr/bin下会有如下几个文件:
influxd          #influxdb服务器
influx           #influxdb命令行客户端
influx_inspect   #查看工具
influx_stress    #压力测试工具
influx_tsm       #数据库转换工具(将数据库从b1或bz1格式转换为tsm1格式)

#/var/lib/influxdb/下
data  存放最终存储的数据,文件以.tsm结尾
meta  存放数据库元数据
wal  存放预写日志文件

#/var/log/influxdb下
influxd.log  日志文件

#/etc/influxdb下
influxdb.conf  配置文件

/var/run/influxdb/
influxd.pid  PID文件

systemctl start influxd
systemctl enable influxd

2.4- 集群方案

无免费的集群方案!

3- 与同类数据库比较

数据库- InfluxDB安装部署问题排查【运维了解这一篇就够了!】_第1张图片

4- 配置文件详解

官网地址:https://docs.influxdata.com/influxdb/v1.8/administration/config/

  • 全局设置

reporting-disabled = false
InfluxData使用运行中的InfluxDB节点自愿报告的数据主要是为了跟踪不同InfluxDB版本的采用率。这些数据有助于InfluxData支持InfluxDB的持续开发。
该reporting-disabled选项将每24小时将数据报告切换为usage.influxdata.com。每个报告均包含随机生成的标识符,操作系统,体系结构,InfluxDB版本以及数据库数量, 度量和唯一序列。将此选项设置为true将禁用报告。
注意:从未传输过用户数据库中的数据。
环境变量: INFLUXDB_REPORTING_DISABLED

bind-address = “127.0.0.1:8088”
用于RPC服务进行备份和还原的绑定地址。
环境变量: INFLUXDB_BIND_ADDRESS

  • Metastore设置

[meta]
本部分控制InfluxDB元存储的参数,该元存储存储有关用户,数据库,保留策略,分片和连续查询的信息。

dir = “/var/lib/influxdb/meta”
元数据/筏数据库的存储目录。meta目录中的文件包括meta.dbInfluxDB元存储文件。
注意: macOS安装的默认目录是/Users//.influxdb/meta
环境变量: INFLUXDB_META_DIR

retention-autocreate = true
创建数据库时启用自动创建DEFAULT保留策略 autogen。保留策略autogen具有无限的持续时间,并且还设置为数据库的DEFAULT保留策略,当写入或查询未指定保留策略时使用该保留策略。禁用此设置以防止在创建数据库时创建此保留策略。
环境变量: INFLUXDB_META_RETENTION_AUTOCREATE

ogging-enabled = true
启用元服务消息的日志记录。
环境变量: INFLUXDB_META_LOGGING_ENABLED

  • 数据存储设置

[data]
这些[data]设置控制InfluxDB的实际分片数据存储在何处以及如何从预写日志(WAL)中清除它们。 dir可能需要更改为适合您的系统的位置,但是WAL设置是高级配置。默认值适用于大多数系统。

dir = “/var/lib/influxdb/data”
TSM引擎存储TSM文件的InfluxDB目录。此目录可能会更改。
注意: macOS安装的默认目录是/Users//.influxdb/data。
环境变量: INFLUXDB_DATA_DIR

wal-dir = “/var/lib/influxdb/wal”
预写日志(WAL)文件的目录位置。
注意:对于macOS安装,默认的WAL目录为/Users//.influxdb/wal。
环境变量: INFLUXDB_DATA_WAL_DIR

wal-fsync-delay = “0s”
fsync之前写入等待的时间。使用的持续时间大于0批处理多个fsync调用的持续时间。这对于速度较慢的磁盘或遇到WAL写入争用很有用。0sfsync的默认值将每次写入WAL。
注意:对于非SSD磁盘,InfluxData建议使用0ms-范围内的值100ms。
环境变量: INFLUXDB_DATA_WAL_FSYNC_DELAY

index-version = “inmem”
用于新分片的分片索引的类型。默认(inmem)索引是在启动时重新创建的内存中索引。要启用基于时间序列索引(TSI)磁盘的索引,请将其值设置为tsi1。
环境变量: INFLUXDB_DATA_INDEX_VERSION

trace-logging-enabled = false
在TSM引擎和WAL中启用其他调试信息的详细日志记录。跟踪日志记录为调试TSM引擎问题提供了更有用的输出。
环境变量: INFLUXDB_DATA_TRACE_LOGGING_ENABLED

query-log-enabled = true
在执行之前启用已解析查询的日志记录。查询日志对于故障排除很有用,但会记录查询中包含的所有敏感数据。
环境变量: INFLUXDB_DATA_QUERY_LOG_ENABLED

validate-keys = false
验证传入的写操作,以确保键仅具有有效的Unicode字符。因为必须检查每个密钥,所以此设置会产生少量开销。

  • TSM引擎的设置

cache-max-memory-size = “1g”
分片缓存开始拒绝写入之前可以达到的最大大小。
有效的内存大小后缀为:k,m或g(不区分大小写的1024 = 1k)。没有大小后缀的值以字节为单位。
环境变量: INFLUXDB_DATA_CACHE_MAX_MEMORY_SIZE

cache-snapshot-memory-size = “25m”
引擎将快照高速缓存并将其写入TSM文件以释放内存的大小。
有效的内存大小后缀为:k,m或g(不区分大小写的1024 = 1k)。没有大小后缀的值以字节为单位。
环境变量: INFLUXDB_DATA_CACHE_SNAPSHOT_MEMORY_SIZE

cache-snapshot-write-cold-duration = “10m”
如果分片尚未收到写入或删除,则引擎将对缓存进行快照并将其写入新的TSM文件的时间间隔。
环境变量: INFLUXDB_DATA_CACHE_SNAPSHOT_WRITE_COLD_DURATION

compact-full-write-cold-duration = “4h”
如果TSM引擎尚未收到写入或删除操作,则该时间间隔会将所有TSM文件压缩到一个分片中。
环境变量: INFLUXDB_DATA_COMPACT_FULL_WRITE_COLD_DURATION

max-concurrent-compactions = 0
一次可以运行的并发完全压缩和级别压缩的最大数量。默认值0导致在运行时将50%的CPU内核用于压缩。如果明确设置,则用于压缩的核心数将限制为指定值。此设置不适用于缓存快照。有关更多信息GOMAXPROCS环境变量,请参阅GOMAXPROCS环境变量此页面上。
环境变量: INFLUXDB_DATA_MAX_CONCURRENT_COMPACTIONS

compact-throughput = “48m”
TSM压缩每秒写入磁盘的最大字节数。默认值为"48m"(4800万)。请注意,允许由设置的短脉冲以可能更大的值发生compact-throughput-burst。
环境变量: INFLUXDB_DATA_COMPACT_THROUGHPUT

compact-throughput-burst = “48m”
短暂突发期间,TSM压缩每秒写入磁盘的最大字节数。默认值为"48m"(4800万)。
环境变量: INFLUXDB_DATA_COMPACT_THROUGHPUT_BURST

tsm-use-madv-willneed = false
如果为true,则MMap Advise值会MADV_WILLNEED建议内核有关如何根据输入/输出分页处理映射的内存区域以及如何在不久的将来针对TSM文件访问映射的内存区域。由于此设置在某些内核(包括CentOS和RHEL)上存在问题,因此默认值为false。true在某些情况下,将该值更改为可能会帮助具有慢速磁盘的用户。
环境变量: INFLUXDB_DATA_TSM_USE_MADV_WILLNEED

内存(inmem)索引设置
max-series-per-database = 1000000
删除写入之前,每个数据库允许的最大系列数。默认设置为1000000(一百万)。将设置更改0为允许每个数据库无限数量的系列。
如果某个点导致数据库中的序列数超过 max-series-per-database,则InfluxDB不会写入该点,它会返回,并 500显示以下错误:{“error”:“max series per database exceeded:”}
注意:系列数超过的任何现有数据库max-series-per-database 将继续接受对现有系列的写入,但是创建新系列的写入将失败。
环境变量: INFLUXDB_DATA_MAX_SERIES_PER_DATABASE

max-values-per-tag = 100000
每个标签键允许的最大标签值数量。默认值为(十万)。将设置更改为允许每个标签键无限数量的标签值。如果标签值导致标签键的标签值数量超过 ,则InfluxDB将不会写入该点,并且会返回错误。1000000max-values-per-tagpartial write
标记值超过的任何现有标记键max-values-per-tag 将继续接受写入,但是创建新标记值的写入将失败。
环境变量: INFLUXDB_DATA_MAX_VALUES_PER_TAG

TSI(tsi1)索引设置
max-index-log-file-size = “1m”
索引预写日志(WAL)文件将压缩为索引文件时的阈值(以字节为单位)。较小的大小将导致日志文件被更快地压缩,并导致较低的堆使用率,但以写吞吐量为代价。较高的大小将被更不频繁地压缩,在内存中存储更多的序列,并提供较高的写入吞吐量。有效的大小后缀为k,m或g(不区分大小写,1024 = 1k)。没有大小后缀的值以字节为单位。
环境变量: INFLUXDB_DATA_MAX_INDEX_LOG_FILE_SIZE

series-id-set-cache-size = 100
TSI索引中用于存储先前计算的系列结果的内部缓存的大小。高速缓存的结果将从高速缓存中快速返回,而不是在执行具有匹配的标签键值谓词的后续查询时需要重新计算。将此值设置为0将会禁用缓存,这可能会导致查询性能问题。仅当已知数据库的所有度量中经常使用的标记键值谓词的集合大于100时,才应增加此值。高速缓存大小的增加可能会导致堆使用率的增加。
环境变量: INFLUXDB_DATA_SERIES_ID_SET_CACHE_SIZE

  • 查询管理设置

[coordinator]
本部分包含查询管理的配置设置。有关管理查询的更多信息,请参阅查询管理。

write-timeout = “10s”
写入请求等待直到“超时”错误返回给调用方的持续时间。默认值为10秒。
环境变量: INFLUXDB_COORDINATOR_WRITE_TIMEOUT

max-concurrent-queries = 0
您的实例上允许的最大运行查询数。默认设置(0)允许无限数量的查询。
环境变量: INFLUXDB_COORDINATOR_MAX_CONCURRENT_QUERIES

query-timeout = “0s”
在InfluxDB终止查询之前,允许执行查询的最大持续时间。默认设置(0)允许查询不受时间限制地运行。此设置是一个持续时间。
环境变量: INFLUXDB_COORDINATOR_QUERY_TIMEOUT

log-queries-after = “0s”
在InfluxDB记录带有Detected slow query消息的查询之前,查询可以达到的最大持续时间 。默认设置(“0”)永远不会告诉InfluxDB记录查询。此设置是一个持续时间。
环境变量: INFLUXDB_COORDINATOR_LOG_QUERIES_AFTER

max-select-point = 0
的最大数量的点,一个 SELECT语句可以处理。默认设置(0)允许SELECT语句处理无限数量的点。
环境变量: INFLUXDB_COORDINATOR_MAX_SELECT_POINT

max-select-series = 0
的最大数量系列,一个 SELECT语句可以处理。默认设置(0)允许SELECT语句处理无限数量的序列。
环境变量: INFLUXDB_COORDINATOR_MAX_SELECT_SERIES

max-select-buckets = 0
GROUP BY time()查询可以处理的最大存储桶数。默认设置(0)允许查询处理无限数量的存储桶。
环境变量: INFLUXDB_COORDINATOR_MAX_SELECT_BUCKETS

  • 保留政策设定

[retention]
这些[retention]设置控制用于驱逐旧数据的保留策略的执行。

enabled = true
设置为false防止InfluxDB强制执行保留策略。
环境变量: INFLUXDB_RETENTION_ENABLED

check-interval = “30m0s”
InfluxDB检查以强制执行保留策略的时间间隔。
环境变量: INFLUXDB_RETENTION_CHECK_INTERVAL

  • 分片播放设置

[shard-precreation]
这些[shard-precreation]设置控制分片的增量,以便在数据到达之前就可以使用分片。只有在创建后将在将来具有开始时间和结束时间的分片才会被创建。永远不会预先创建全部或部分过去的碎片。

enabled = true
确定是否启用分片增值服务。
环境变量: INFLUXDB_SHARD_PRECREATION_ENABLED

check-interval = “10m”
运行检查以预创建新分片的时间间隔。
环境变量: INFLUXDB_SHARD_PRECREATION_CHECK_INTERVAL

advance-period = “30m”
InfluxDB预先为其创建碎片的最长期限。在30m默认情况下应适用于大多数系统。将来将此设置增加太多可能会导致效率低下。
环境变量: INFLUXDB_SHARD_PRECREATION_ADVANCE_PERIOD

  • 监控设定

[monitor]
该[monitor]节设置控制InfluxDB系统自我监测。
默认情况下,InfluxDB将数据写入_internal数据库。如果该数据库不存在,InfluxDB会自动创建它。在DEFAULT上保留策略_internal数据库为七天。如果要使用7天保留策略以外的保留策略,则必须创建它。

store-enabled = true
设置为false禁用内部记录统计信息。如果设置为false,将大大增加诊断安装问题的难度。
环境变量: INFLUXDB_MONITOR_STORE_ENABLED

store-database = “_internal”
记录的统计信息的目标数据库。
环境变量: INFLUXDB_MONITOR_STORE_DATABASE

store-interval = “10s”
InfluxDB记录统计信息的时间间隔。默认值为每十秒钟(10s)。
环境变量: INFLUXDB_MONITOR_STORE_INTERVAL

  • HTTP端点设置

[http]
该[http]节设置控制InfluxDB如何配置HTTP端点。这些是将数据传入和传出InfluxDB的主要机制。编辑此部分中的设置以启用HTTPS和身份验证。

enabled = true
确定是否启用HTTP端点。要禁用对HTTP端点的访问,请将值设置为false。请注意,InfluxDB命令行界面(CLI)使用InfluxDB API连接到数据库。
环境变量: INFLUXDB_HTTP_ENABLED

flux-enabled = false
确定是否启用Flux查询端点。要启用Flux查询,请将值设置为true。
环境变量: INFLUXDB_HTTP_FLUX_ENABLED

bind-address = “:8086”
HTTP服务使用的绑定地址(端口)。
环境变量: INFLUXDB_HTTP_BIND_ADDRESS

auth-enabled = false
确定是否通过HTTP和HTTPS启用用户身份验证。要进行身份验证,请将值设置为true。
环境变量: INFLUXDB_HTTP_AUTH_ENABLED

realm = “InfluxDB”
发出基本身份验证质询时发回的默认领域。领域是HTTP端点使用的JWT领域。
环境变量: INFLUXDB_HTTP_REALM

log-enabled = true
确定是否启用HTTP请求日志记录。要禁用日志记录,请将值设置为false。
环境变量: INFLUXDB_HTTP_LOG_ENABLED

suppress-write-log = false
确定启用日志后是否应禁止HTTP写请求日志。

access-log-path = “”
访问日志的路径,该路径确定是否使用启用详细的写日志记录log-enabled = true。指定启用后是否将HTTP请求日志记录写入指定的路径。如果influxd无法访问指定的路径,它将记录错误并退回到stderr。启用HTTP请求日志记录后,此选项指定应在其中写入日志条目的路径。如果未指定,则默认为写入stderr,这会将HTTP日志与内部InfluxDB日志混合在一起。如果influxd无法访问指定的路径,它将记录一个错误并退回至将请求日志写入stderr。
环境变量: INFLUXDB_HTTP_ACCESS_LOG_PATH

access-log-status-filters = []
过滤应记录的请求。每个过滤器都具有模式nnn,,nnx或者nxx其中n是数字,并且x是任何数字的通配符。要过滤所有5xx响应,请使用字符串5xx。如果使用了多个过滤器,则仅需匹配一个。默认值为没有过滤器,每个请求都被打印。
环境变量: INFLUXDB_HTTP_ACCESS_LOG_STATUS_FILTERS_x
例子:
使用配置设置来设置访问日志状态过滤器
access-log-status-filters = [“4xx”, “5xx”]
"4xx"在数组位置0 "5xx"在数组位置1
使用环境变量设置访问日志状态过滤器的输入值access-log-status-filters是一个数组。使用环境变量时,可以按以下方式提供值。
INFLUXDB_HTTP_ACCESS_LOG_STATUS_FILTERS_0=4xx
INFLUXDB_HTTP_ACCESS_LOG_STATUS_FILTERS_1=5xx
_n在环境变量的末尾表示的条目的排列位置。

write-tracing = false
确定是否启用详细写日志记录。设置为true启用写入有效负载的日志记录。如果设置为true,它将复制日志中的每个write语句,因此不建议一般使用。
环境变量: INFLUXDB_HTTP_WRITE_TRACING

pprof-enabled = true
确定是否/net/http/pprof启用HTTP端点。对于故障排除和监视很有用。
环境变量: INFLUXDB_HTTP_PPROF_ENABLED

pprof-auth-enabled = false
在/debug端点上启用身份验证。如果启用,则用户需要管理员权限才能访问以下端点:
/debug/pprof
/debug/requests
/debug/vars
如果将auth-enabled或 pprof-enabled设置为,则此设置无效false。
环境变量: INFLUXDB_HTTP_PPROF_AUTH_ENABLED

debug-pprof-enabled = false
启用默认/pprof端点并绑定到localhost:6060。对于调试启动性能问题很有用。
环境变量: INFLUXDB_HTTP_DEBUG_PPROF_ENABLED

ping-auth-enabled = false
启用该认证/ping,/metrics和过时/status的端点。如果auth-enabled设置为,则此设置无效false。
环境变量: INFLUXDB_HTTP_PING_AUTH_ENABLED

http-headers
用户提供的HTTP响应标头。配置此部分以返回安全标头, 例如X-Frame-Options或Content Security Policy需要的地方。
例子:

[http.headers]
X-Frame-Options = “DENY”

https-enabled = false
确定是否启用HTTPS。要启用HTTPS,请将值设置为true。
环境变量: INFLUXDB_HTTP_HTTPS_ENABLED

https-certificate = “/etc/ssl/influxdb.pem”
启用HTTPS时要使用的SSL证书文件的路径。
环境变量: INFLUXDB_HTTP_HTTPS_CERTIFICATE

https-private-key = “”
使用单独的私钥位置。如果仅https-certificate指定,则该httpd服务将尝试从https-certificate文件中加载私钥。如果https-private-key指定了单独的文件,则httpd服务将从文件中加载私钥https-private-key。
环境变量: INFLUXDB_HTTP_HTTPS_PRIVATE_KEY

shared-secret = “”
用于使用JWT令牌验证公共API请求的共享机密。
环境变量: INFLUXDB_HTTP_SHARED_SECRET

max-row-limit = 0
系统在非分块查询中可以返回的最大行数。默认设置(0)允许无限制的行数。如果查询结果超过指定的值,则InfluxDB"partial":true在响应正文中包含一个标记。
环境变量: INFLUXDB_HTTP_MAX_ROW_LIMIT

max-connection-limit = 0
一次可以打开的最大连接数。超出限制的新连接将被删除。
默认值0禁用该限制。
环境变量: INFLUXDB_HTTP_MAX_CONNECTION_LIMIT

unix-socket-enabled = false
通过UNIX域套接字启用HTTP服务。要通过UNIX域套接字启用HTTP服务,请将值设置为true。
环境变量: INFLUXDB_HTTP_UNIX_SOCKET_ENABLED

bind-socket = “/var/run/influxdb.sock”
UNIX域套接字的路径。
环境变量: INFLUXDB_HTTP_UNIX_BIND_SOCKET

max-body-size = 25000000
客户端请求正文的最大大小(以字节为单位)。当HTTP客户端发送的数据超过配置的最大大小时,将413 Request Entity Too Large返回HTTP响应。要禁用限制,请将值设置为0。
环境变量: INFLUXDB_HTTP_MAX_BODY_SIZE

max-concurrent-write-limit = 0
可以同时处理的最大写入数。要禁用限制,请将值设置为0。
环境变量: INFLUXDB_HTTP_MAX_CONCURRENT_WRITE_LIMIT

max-enqueued-write-limit = 0
排队等待处理的最大写入数。要禁用限制,请将值设置为0。
环境变量: INFLUXDB_HTTP_MAX_ENQUEUED_WRITE_LIMIT

enqueued-write-timeout = 0
写入等待在队列中等待的最大持续时间。要禁用限制,请将其设置为0或将max-concurrent-write-limit值设置为0。
环境变量: INFLUXDB_HTTP_ENQUEUED_WRITE_TIMEOUT

[http.headers]
使用此[http.headers]部分可配置用户提供的HTTP响应标头。如:
[http.headers]
X-Header-1 = “Header Value 1”
X-Header-2 = “Header Value 2”

  • 日志设置

[logging]
控制记录器如何将日志发送到输出。

format = “auto”
确定要用于日志的日志编码器。有效值为auto(默认)logfmt,和json。使用默认auto选项时,如果输出到TTY设备(例如终端),则使用更加用户友好的控制台编码。如果输出是文件,则auto选项使用logfmt编码。在logfmt和json选项是用于与外部工具的集成非常有用。
环境变量: INFLUXDB_LOGGING_FORMAT

level = “info”
要发出的日志级别。有效值为error,warn,info(默认值),和debug。等于或高于指定级别的日志将被发出。
环境变量: INFLUXDB_LOGGING_LEVEL

suppress-logo = false
禁止启动程序时打印的徽标输出。如果STDOUT不是TTY,则始终禁止显示徽标。
环境变量: INFLUXDB_LOGGING_SUPPRESS_LOGO

其他配置不列出了,需要的话查看官网!

5- 如何优化性能

详见 https://blog.csdn.net/qq_35550345/article/details/115751138

6- 基本操作

6.1- 数据库操作

https://docs.influxdata.com/influxdb/v1.8/query_language/

登录数据库: influx -precision rfc3339 或者 influx
登录指定数据库:influx -precision rfc3339 -database NOAA_water_database

查看现有数据库: show databases;
创建数据库testdb: create database testdb;
CREATE DATABASE "NOAA_water_database" WITH DURATION 3d REPLICATION 1 SHARD DURATION 1h NAME "liquid"
删除数据库testdb: drop database testdb;
选中数据库testdb(设置为当前默认): use testdb;

6.2- 表操作

查看现有measurement: show measurements;

创建measurement: influxdb没有创建measurement的语句, 插入数据时默认创建.

删除measurementweather: drop measurement weather;

6.3- 用户管理

创建用户:CREATE USER  WITH PASSWORD ''
授权权限:GRANT [READ,WRITE,ALL] ON  TO 
创建并授权:CREATE USER  WITH PASSWORD '' WITH ALL PRIVILEGES
取消授权:REVOKE ALL PRIVILEGES FROM 
修改密码:SET PASSWORD FOR  = ''
删除用户:DROP USER 

6.4- 增删改查

# select
SELECT [,,] FROM [,]
SELECT *                        #返回所有字段和标签。
SELECT ""            #返回一个特定的字段。
SELECT "",""         #返回多个字段。
SELECT "",""           #返回特定的字段和标签。该SELECT子句包含标签时,必须至少指定一个字段。
SELECT * FROM test WHERE time >= '2019-08-09T00:00:00Z' and time < '2019-08-09T10:00:00Z'

# show
SHOW RETENTION POLICIES ON NOAA_water_database
SHOW SERIES ON NOAA_water_database FROM "h2o_quality" WHERE "location" = 'coyote_creek' LIMIT 2
SHOW TAG KEYS ON "NOAA_water_database"
SHOW TAG VALUES ON "NOAA_water_database" WITH KEY = "randtag"
SHOW FIELD KEYS ON "NOAA_water_database" FROM "h2o_feet"

# delete
DELETE FROM  WHERE [=''] | [

6.5- 其他常用操作

#交互模式下查询testdb数据库的series数量:
select * from _internal.."database" where "database"='testdb' order by time desc limit 1;

#命令行中查询单个measurement的series数量:
influx -database 'testdb' -execute 'show series from testmeasurement' -format 'csv' | wc -l

#交互模式下分析并执行语句,获取实际执行时间:
explain analyze select count(*) from testmeasurement;

7- 数据备份与恢复

7.1- 导出本机数据备份

备份数据库:monitordb
备份存储目录位置:/data/backup

influxd backup -portable -database monitordb /data/backup

#指定远程主机备份参数
    • -host 192.168.1.6:8086
    • -database monitordb   #指定要备份数据库,如不指定默认全部
    •  -portable            #兼容更新版本influxdb的备份文件格式,官方建议使用
    •  -start    #指定需备份数据开始时间戳-start 2015-12-24T08:12:23Z
    • -end       #结束时间戳 -end 2015-12-31T08:12:23Z

7.2- 导出远程主机备份

influxd backup -portable -database zabbix -host 192.168.1.5:8088 /data/backup
# 执行过程:
2018/11/24 17:52:58 backing up metastore to /data/backup/meta.00
2018/11/24 17:52:58 backing up db=zabbix
2018/11/24 17:52:58 backing up db=zabbix rp=autogen shard=2 to /data/backup/zabbix.autogen.00002.00 since 0001-01-01T00:00:00Z
2018/11/24 17:52:58 backup complete:
2018/11/24 17:52:58     /data/backup/20181124T095258Z.meta
2018/11/24 17:52:58     /data/backup/20181124T095258Z.s2.tar.gz
2018/11/24 17:52:58     /data/backup/20181124T095258Z.manifest

7.3- 恢复数据

恢复本地数据

influxd restore -portable -db zabbix /data/backup/

2018/11/26 05:03:42 Restoring shard 8 live from backup 20181125T205756Z.s8.tar.gz

查看恢复数据

> show series
key
---
cpu,host=serverA,region=ca_east
cpu,host=serverA,region=us_west
> show measurements
name: measurements
name
----
cpu
> show tag keys
name: cpu
tagKey
------
host
region
> show field keys
name: cpu
fieldKey fieldType
-------- ---------
value    float
> select * from zabbix
> select * from cpu
name: cpu
time                host    region  value
----                ----    ------  -----
1543042396476461820 serverA us_west 0.64
1543042713994239023 serverA ca_east 0.99

8- QA汇总

详见: https://blog.csdn.net/qq_35550345/article/details/115729323

你可能感兴趣的:(DATABASE,influxdb,influxdb性能优化,influxdb问题排查,influxdb安装)