InfluxDB v1 版本说明
此页面记录了早期版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅等效的 InfluxDB v2 文档: InfluxDB OSS v2 版本说明。
v1.12.0
功能
- 在使用
influx_inspect buildtsi
重建 TSI 索引时,添加额外的日志输出。 - 使用
influx_inspect export
和-tsmfile
选项 导出单个 TSM 文件。 - 将
fluxQueryRespBytes
指标添加到/debug/vars
指标端点。 - 添加
aggressive-points-per-block
配置选项,以防止 TSM 文件无法完全压缩。 - 改进错误处理。
- InfluxQL 更新
- 按保留策略删除序列。
- 允许保留策略丢弃在其范围内但超出
FUTURE LIMIT
和PAST LIMIT
范围的写入。
错误修复
- 记录拒绝写入到订阅。
- 更新
xxhash
并避免在缓存中使用stringtoslicebyte
。 - 防止分片组没有分片时发生 panic。
- 修复
Compactor.write
中的文件句柄泄漏。 - 确保内存中的字段与磁盘上的字段匹配。
- 确保在压缩失败后删除临时文件。
- 不要在无效的多个子查询上 panic。
其他
- 将 Go 更新到 1.23.5。
- 将 Flux 升级到 v0.196.1。
- 将 InfluxQL 升级到 v1.4.1。
- 各种其他依赖项更新。
v1.11.8
错误修复
- 在字符串比较之前,从
/api/v2/delete
兼容性 API 中的测量名称中去除双引号(例如,允许测量名称中使用特殊字符)。
v1.11.7
此版本代表自 2021 年以来 InfluxDB OSS v1 的首次公开版本,包括添加到 InfluxDB Enterprise 然后反向移植到 InfluxDB OSS v1 的许多增强功能和错误修复。 这些增强功能中的许多功能改进了 InfluxDB v1 和 InfluxDB 3 之间的兼容性,并有助于简化 InfluxDB v1 工作负载到 InfluxDB 3 的迁移。
升级到 InfluxDB 1.11 之前
InfluxDB v1 的最后一个公共版本是 v1.8.10。 从 v1.8.10 升级到 v1.11.7 是一个很大的跨越,应谨慎进行。 升级前请考虑执行以下一项或多项操作
- 备份您的数据
- 使用 InfluxDB 1.11 创建当前 InfluxDB 的克隆,并具有相同的配置选项。 双写到您当前的 InfluxDB 实例和新的 1.11 实例。 使用 InfluxDB 1.11 测试写入和查询数据。
没有 32 位构建
InfluxData 不再为 32 位架构提供 InfluxDB v1 的构建。 所有官方构建包都适用于 64 位架构。
功能
- InfluxQL 改进
- 升级到 InfluxQL 1.2.0。
- 在
SHOW MEASUREMENTS
中支持数据库和保留策略通配符 – 例如:SHOW MEASUREMENTS ON *.*
- 优化
SHOW FIELD KEY CARDINALITY
。 SHOW TAG VALUES
从一个特定的保留策略返回结果。- 在
SHOW TAG KEYS
中支持WITH KEY
子句。 - 支持 Hyper Log Log 运算符:
count_hll
、sum_hll
、merge_hll
。 - 对
SHOW SERIES CARDINALITY
查询使用count_hll
。
- 日志记录改进
- 即使未启用查询日志记录,也记录慢查询。
- 始终记录日志级别。
- 将版本号添加到
/debug/vars
输出。 - 在
/debug/vars
输出中包含crypto
诊断信息。 - 添加记录被
query-timeout
终止的查询的能力。 - 为压缩添加日志记录。
- 新的 InfluxDB 检查工具
- 添加
influx_inspect report-db
命令,以估计迁移到 InfluxDB Cloud (TSM) 时 1.x 数据库的基数。 - 添加
influx_inspect check-schema
和influx_inspect merge-schema
命令,以检查分片之间的类型冲突。
- 添加
- 新的配置选项
- 添加
total-buffer-bytes
配置选项,以设置分配给订阅缓冲区的总字节数。 - 添加
termination-query-log
配置选项,以启用在SIGTERM
上将正在运行的查询转储到日志。 - 添加
max-concurrent-deletes
配置选项,以设置删除并发性。 - 添加 Flux 查询配置设置。
- 添加
compact-series-file
配置选项,以启用或禁用启动时的序列文件压缩。 - 添加
prom-read-auth-enabled
配置选项,以验证 Prometheus 远程读取的身份。
- 添加
- Flux 改进
- 将 Flux 升级到 v0.194.5。
- 更新 Flux 组件以使用
flux/array
而不是arrow/array
。 - 将 Flux 查询支持添加到
influx
REPL。 - 添加 新的下推功能,以提高 Flux 查询性能。
- InfluxDB v2 兼容性 API 更新
- 部分支持
/v2/api/buckets
兼容性 API 中的创建、检索、更新、删除和列表操作,并正确处理对不受支持的/v2/api/buckets
端点的请求。 - 实现
v2/api/delete
兼容性 API。
- 部分支持
- 其他内部指标
- 按测量指标的入口指标。
- 按登录名的测量指标。
- 序列创建入口指标。
- 添加订阅缓冲区大小使用率指标。
- 构建改进
- 为 InfluxDB 1.x 启用 static-pie 构建。
- 使 Windows 和 ARM64 构建成为可能。
- 其他添加和优化
- 添加多个 UDP 写入器。
- 优化序列迭代。
- 优化将更改保存到
fields.idx
。
错误修复
- 防止
GROUP BY
在某些情况下为每个组返回多个结果。 - 将
curl
依赖项添加到 InfluxDB 包中,以便在 systemd 脚本中使用。 - 使用
defer
解锁互斥锁。 - 确保仅提供
-shard
选项时,influxd-ctl backup
创建可用的备份。 influx_inspect verify -dir
不再将/data
附加到目录路径。 文件将递归检查,包括/data
目录和其他子目录中的文件。- 不要在 mmap 失败时重命名文件。
- 完全清理部分打开的 TSI。
- 记住
Open()
失败的分片,并避免重复尝试。 - 改进打开索引分区时的错误消息。
- 原子性地创建
TSI MANIFEST
文件 - 将路径添加到 TSI 日志和索引文件错误。
- 在写入错误时恢复内存 Manifest。
- 通用化 Windows 测试。
- 当重命名跨卷时使用
copy
。 - 为跨卷的文件重命名添加测试。
- 记录连续查询统计信息存储中的错误。
- 删除
_fieldKeys
迭代器的破坏性参数验证。 ListBuckets
正确返回包装的响应。- 不要将跳过的分片消息写入行协议输出目标。
- 如果遇到
fields.idxl
,则添加警告。 - 防止世界可写的
MANIFEST
文件。 - 不要转义 CSV 输出。
- 避免读取非标准序列段文件时出现 SIGBUS。
- 防止保留服务创建孤立的分片文件。
- 在关闭之前同步索引文件。
- 在遇到精度错误时中止处理写入请求。
MeasurementsCardinality
不应小于 0。- 替换错误中不可打印和无效的字符。
- 保持 TSI 引用,或者不要在错误时关闭
TagValueSeriesIDIterator
。 - 消除
Monitor.globalTags
上的竞争条件。 - 正确处理
MaxSeriesPerDatabaseExceeded
。 - 在创建订阅时返回底层错误。
- 修复导致恢复命令失败的竞争条件。
- 创建没有重叠时间范围的分片。
- 改进没有数据的快照的错误消息。
- 检测错误引用的标签值并返回错误。
- 在
influx_tools compact-shard
中使用debug
日志级别。 - 允许在 Flux 迭代器读取期间限制分片。
- 恢复数据时,当使用
-newdb
时强制使用-db
参数。 - 在写入后将序列段同步到磁盘。
- 修复
influx_inspect dumptsi
中的死锁。 - 防止从便携式备份恢复时出错。
- 在关闭迭代器之前从 mmapped 内存复制名称。
- TSI 应压缩旧的或过大的日志文件。
- 压缩没有新写入的旧
tsl
文件。 - 在解析行协议时,强制执行字段大小的硬限制。
- 确保日志格式 (JSON) 得到遵守。
- 确保 systemd 处理 HTTPS 和 40x 响应代码,并在等待 API 响应时无限期阻塞。
- 避免压缩队列统计信息抖动。
- 需要数据库授权才能查看连续查询。
- 返回
ErrNotExecuted
的正确计数。 - 解决各种
staticcheck
警告。 - 正确关闭多个 HTTP 服务器。
- 使丢失分片的错误消息保持一致。
- 修复 prometheus 收集器指标的冗余注册。
- 提高排序合并迭代器的性能。
- 在需要时增长标签索引缓冲区。
- 修复序列化
/debug/vars
时的键冲突。 - 尝试删除不存在的分片 ID 时返回错误。
- 改进的 CORS 支持
- 将 User-Agent 添加到允许的 CORS 标头。
- 在 v2 兼容性端点中允许 CORS。
- 允许
PATCH
请求方法。
其他
- 升级到 Go 1.22.7。
- 检测并使用 Flux 中定义的 Rust 版本 (1.73)。
- 将 Flux 升级到 v0.194.5。
- 升级多个依赖项以进行维护和安全。
- 升级
xbuilder
以与 InfluxDB Enterprise 对等。 - 升级到最新的 crossbuilder。
- 使用社区维护的
golang-jwt
- 为每个版本生成
influxdb.${CIRCLE_TAG}.digests
。 - 更新贡献指南。
- 删除已弃用的
influx_stress
工具。
v1.8.10
错误修复
- 确保 InfluxDB 包的
curl
依赖项。 - 确保快照服务正确读取有效负载。
- 通过在 systemd 脚本中无限期阻止来处理 40x 错误。
- 修复
influxd restore
中的以下错误- 正确验证参数。
- 改进返回空快照时的错误消息。
- 修复 Windows 上的临时文件删除。
v1.8.9
错误修复
- 防止在存在重叠分片时静默丢弃写入。
- 解决
influxd restore -portable
备份错误。 - 确保 systemd-startup 脚本可由组和其他人执行。
- 处理 systemd 包装器中的 https,并防止其永远循环。
- 使用 InfluxDB OSS 将备份还原到 InfluxDB Enterprise 集群时,记录错误而不是 panic。
v1.8.8
由于 v.1.8.8 中遇到多个构建依赖项问题,因此不会发布此版本。
v1.8.7
错误修复
- 使用 yum 兼容的名称重命名 ARM RPM。
- 通过 Docker 在构建期间转换 RPM 的 ARM arch 名称。
- Systemd 单元现在在启动时阻塞,直到 HTTP 端点准备就绪。
- 将 protobuf 库更新到当前版本。
v1.8.6
此版本仅适用于 InfluxDB Enterprise 1.8.6 客户。 InfluxDB 1.8.6 没有进行 OSS 特定的更改 – 对代码库进行了更新,以支持 InfluxDB Enterprise 1.8.6。
v1.8.5
功能
- 使用新的
influx_inspect report-disk
命令添加查找哪些测量或分片导致磁盘大小增加的功能。 对容量规划和管理存储需求很有用。 - 添加对
influx_inspect export
的支持,通过在-out
标志后添加连字符来写入标准输出 (stdout
)。 使用此选项会写入stdout
,并将错误和状态消息发送到标准错误 (stderr
)。 - 更新
/query
的 HTTP 处理程序,以 记录 POST 请求的查询文本。 - 优化仅包含一个分片的组中的分片查找。 感谢 @StoneYunZhao!
错误修复
- 更新元查询(例如,SHOW TAG VALUES、SHOW TAG KEYS、SHOW SERIES CARDINALITY、SHOW MEASUREMENT CARDINALITY 和 SHOW MEASUREMENTS),以在可能的情况下检查查询上下文,以遵守在
query-timeout
配置参数 中设置的超时值。 请注意,元查询检查上下文的频率低于使用迭代器的常规查询,因为元查询以批处理方式返回数据。 - 以前,成功的写入错误地增加了
WriteErr
统计信息。 现在,成功的写入正确地增加了writeOK
统计信息。 - 更正 JSON 编组错误格式。
- 以前,GROUP BY 查询的偏移量导致间隔跨越夏令时更改时,会插入一个多出一个小时的额外输出行。 现在,在计算时区偏移量之前,设置了正确的 GROUP BY 间隔开始时间。
- 改进了 TCP 连接关闭的错误日志记录。
- 修复
regexp
处理以符合 PromQL。 - 以前,当 SELECT INTO 查询生成不受支持的值(例如,
+/- Inf
)时,查询会静默失败。 现在,会发生错误以通知该值无法插入。 - 解决备份期间发生的“快照正在进行中”错误。
- 修复访问墓碑统计信息 (
TombstoneStat
) 时的数据竞争。 - 在添加新字段或测量时,最大限度地减少锁争用。
- 解决在报告较早错误时发生错误导致资源过度使用的问题。
v1.8.4
功能
- 将
stat_total_allocated
添加到 Flux 日志记录。 为了确保启用 Flux 日志记录,请在 InfluxDB 配置文件 中将flux-enabled
和flux-log-enabled
都设置为true
。 有关 InfluxDB 日志记录的更多信息,请参阅 使用 InfluxDB 进行日志和追踪。
错误修复
将持续时间添加到 Flux 日志记录,包括日志编译、执行和总请求持续时间。 以前,以下统计信息错误地记录了
0.000ms
stat_total_duration
stat_compile_duration
stat_execute_duration
现在,这些持续时间已正确记录。
v1.8.3
功能
- 使用最新版本的 InfluxQL 包。
- 将
-lponly
标志添加到influx export
子命令。 - 添加通过 跟踪值数量 的功能,该值通过 /debug/vars HTTP 端点 写入。
- 将 UUID 库从 github.com/satori/go.uuid 更新到 github.com/gofrs/uuid。
错误修复
- 多块数据的 ArrayFilterCursor 截断。
- 多测量查询现在返回所有适用的序列。
- 在写入之前锁定映射。
v1.8.2
错误修复
- 恢复对
DefaultSeriesIDSetCacheSize
的配置更改,该更改导致某些环境的内存使用量增加。
v1.8.1
InfluxDB 1.8.1 引入了一个可能增加内存使用量的错误。 如果您安装了此版本,请安装 v1.8.2,其中包括以下功能、性能改进和错误修复。
功能
- 允许用户添加自定义 HTTP 响应标头以符合内部安全策略。
性能改进
- InfluxQL 查询计划器并行计划每个字段,以缩短计划时间。
- 通过批量处理墓碑写入来提高 DELETE/DROP 的性能。
错误修复
- 修复导致 panic 的 Flux
buckets()
函数。 - TSI:解决了一些导致段错误的边缘情况。
- HTTP:简化 Authorizer。
- 等待删除 epoch,然后再删除分片。
- 改进创建快照时的错误处理。
- 从构建中删除所有 Go 1.12 引用。
v1.8.0
功能
Flux v0.65 已准备好用于生产环境
此版本更新了对 Flux 语言和查询的支持。 要了解 Flux 设计原则并查看如何开始使用 Flux,请参阅 Flux 简介。
使用新的
influx -type=flux
选项启用 Flux REPL shell 以创建 Flux 查询。Flux v0.65 包括以下功能
- 连接驻留在多个测量、存储桶或数据源中的数据
- 使用跨测量/存储桶收集的数据执行数学运算
- 通过广泛的字符串相关函数库操作字符串
- 通过
pivot()
和其他函数塑造数据 - 基于任何数据列(标签、字段等)进行分组
- 基于日历月、年进行窗口化和聚合
- 跨 Influx 和非 Influx 源连接数据
- 将布尔值转换为整数
- 查询地理时序数据(实验性)
- 许多用于处理数据的其他函数
我们正在根据您的反馈评估对等效于现有 InfluxQL 查询管理控件 的 Flux 查询管理控件的需求。 请加入 InfluxCommunity、Slack 或 GitHub 上的讨论。 InfluxDB Enterprise 客户,请联系 support@influxdata.com。
向前兼容性
- InfluxDB 2.x API 兼容性端点 现在是 InfluxDB 1.x 系列的一部分。
这使您可以利用新的 InfluxDB 2.0 客户端库,用于使用 Flux 写入和查询数据。 在为迁移到 InfluxDB 2.0 Cloud 做好准备的同时,充分利用最新的客户端库,以便在您准备好扩展时进行扩展。
操作改进
- 添加
influx inspect verify-tombstone
命令 - 将 离线序列压缩添加到
influx_inspect buildtsi
。 如果您当前正在使用时间序列索引 (tsi1),则索引文件会随着时间的推移而增长,并且不会自动压缩。 此工具使管理员能够在数据库脱机时执行压缩。 - 添加使用
influx
CLI 中的-url-prefix
连接到自定义 HTTP 端点的支持。 这允许 Influx CLI 连接到在具有自定义子路径/
端点的反向代理后面运行的 InfluxDB 实例。
安全增强
- 添加对 TLS 1.3 配置 的支持,并更新当前的 Go 密码 列表。
- 扩展对查询中绑定参数的支持,以防止注入攻击。
其他更新
- 将 Go 版本更新到 1.13.8。
错误修复
- 如果
snapshotter
繁忙,则在备份期间跳过WriteSnapshot
。 此修复消除了快照和备份进程之间的争用,从而使备份能够更可靠地完成。 - 当实际删除数据时(而不是仅在缓存中或时间范围之外找到已删除的数据时)重建序列索引。
- 正确解析 Accept 标头。
- 将压缩错误日志从
Info
升级到Warn
。 - 删除
meta
索引的双重递增。 - 改进
inmem
索引的序列基数限制。 - 确保返回所有块数据。
- 如果未使用 Flux,则缩短
influxd
和influx
启动时间。 - 修复
-compact-series-file
标志中的错误。 - 修复访问
tsi
活动日志时出现的 SIGSEGV。 - 验证写入请求中的精度。
v1.7.10
错误修复
- 修复失败的损坏数据文件重命名过程。
- 使分片摘要对于并发使用是安全的。
- 修复 TSI 索引中的缺陷,其中负相等过滤器 (
!=
) 可能会导致没有匹配的序列。 - 修复不频繁的缓存快照上的压缩逻辑,这导致频繁的完全压缩而不是 级别压缩。
- 修复序列键块数据在读入空缓冲区时被截断的问题。 确保返回所有块数据。
- 在压缩期间,跳过 TSM 文件,其中包含来自先前压缩的块读取错误。
v1.7.9
- 此版本使用 Go 1.12.10 构建,消除了 HTTP desync 漏洞。
错误修复
- 防止压缩突发吞吐量限制。
- 用计数器替换 TSI 压缩等待组。
- 更新 InfluxQL 依赖项。
- 添加选项以验证 debug/pprof 和 ping 端点的身份。
- 即使指定了自定义 TLS 配置,也遵守
insecure-skip-verify
。
功能
- 将 Go 版本更新到 1.12.10。
- 删除 Godeps 文件。
- 将 Flux 版本更新到 v0.50.2。
v1.7.8
InfluxDB 现在拒绝所有非 UTF-8 字符。 要成功地将数据写入 InfluxDB,请仅在数据库名称、测量名称、标签集和字段集中使用 UTF-8 字符。
错误修复
- 修复 Prometheus 读取 panic。
- 删除
tsm1.StringArrayEncodeAll
中的无关fmt.Println
。 - 修复字段在
DROP MEASUREMENT
后重新出现的问题。 - 删除调试
println
调用。 - 降序模式下聚合的子查询排序错误。
- 修复 http 处理程序,使其不会将序列错误标记为部分序列。
- 使
SHOW SERIES EXACT CARDINALITY
仅计数不同的序列。 - 修复超出最小/最大边界的时间范围。
功能
- 将 Flux 版本更新到 v0.36.2
1.7.7
已知问题
- Flux 技术预览未进行改进,仍为版本 0.24.0。 下个月的维护版本将更新预览。
- 升级后,由于此版本中引入的
Println
语句,客户遇到了过大的输出附加行。 有关可能的解决方法,请参阅 https://github.com/influxdata/influxdb/issues/14265#issuecomment-508875853。 下个月的维护版本将解决此问题。
错误修复
- 修复聚合的排序顺序,以便它们按标签然后按时间排序。
- 在子查询中评估时间文字时使用时区。
- 修复 CSV 解码器错误,其中空标签值会导致数组索引 panic。
- 修复
SeriesFile
中的打开/关闭竞争。 - 在截断后同步序列段。
- 修复具有不同外部标签的子查询中选择器的排序。
1.7.6
如果您的 InfluxDB OSS 服务器正在使用默认内存索引 ([data].index-version = "inmem"
),则此版本包括针对 InfluxDB 1.7.5 服务器停止响应且没有警告的修复。
功能
- 将 Flux 升级到
0.24.0
并删除平台依赖项。- 如果启用了 Flux,请使用 Chronograf 1.7.11 或更高版本。
- 使用 Flux 时,存在一个已知问题,即使用
now
会导致 panic。 正确的语法是now()
。
- 跟踪到 Prometheus 远程读取处理程序的远程读取请求。
错误修复
- 确保在使用
influx
CLI 和-type=flux
选项执行 Flux HTTP 请求时,正确传递凭据。 - 数据生成改进的反向移植:重命名文件以在版本之间保持一致性,添加
time-interval
模式选项,并更新模式示例文档。 - 修复
[http]shared-secret
配置设置为空时的安全漏洞。 - 为
tagKeyValueEntry.setIDs()
添加 nil 检查。 - 扩展 Prometheus 远程写入端点以删除不受支持的 Prometheus 值 (
NaN
,-Inf
和+Inf
),而不是拒绝整个批处理。- 如果启用了写入跟踪日志记录 (
[http] write-tracing = true
),则会记录丢弃值的摘要。 - 如果一批值包含随后被丢弃的值,则返回 HTTP 状态代码
204
。
- 如果启用了写入跟踪日志记录 (
- 更新谓词键映射以匹配 InfluxDB
2.x
行为。 - 修复 Prometheus 读取 API 中的 panic。
- 为 influxql 添加版本约束。
1.7.5
更新 (2019-04-01): 如果您的 InfluxDB OSS 服务器正在使用默认内存索引 ([data].index-version = "inmem"
),则不要升级到此版本。 客户报告 InfluxDB 1.7.5 停止响应且没有警告。 有关详细信息,请参阅 GitHub 问题 #13010。 计划的修复 将很快可用。
错误修复
- 将
tagKeyValue
互斥锁更新为写入锁。 - 修复更多分片 epoch 竞争。
1.7.4
功能
- 允许配置 TSI 位集缓存。 请参阅:InfluxDB 配置
[data]
错误修复
- 在 TSI 中缓存位图时删除写时复制。
- 对 Amazon Linux 2 使用
systemd
。 - 还原“限制强制完全和冷压缩大小”。
- 转换
TagValueSeriesIDCache
以使用字符串字段。 - 确保缓存的序列 ID 集是 Go 堆支持的。
1.7.3
重要更新
如果您尚未安装此版本,请安装 1.7.4 版本。
如果您当前正在运行此版本,请尽快升级到 1.7.4 版本。
- 在 InfluxDB 1.7.3 版本中发现了一个严重缺陷,我们的工程团队在 1.7.4 版本中修复了该问题。 出于对您的数据和项目的高度关注,请尽快升级到 1.7.4 版本。
- 严重缺陷: 大于 16GB 的分片在完全压缩期间存在数据丢失的高风险。 当分片“变冷”时,即在分片指定的时间范围内没有新数据写入数据库时,会运行完全压缩过程。
- 事后分析: InfluxData 工程团队正在进行事后分析,以确定如何引入此缺陷。 他们的发现将在博客文章中分享。
重大更改
- 修复阻止分片打开的无效 UTF-8 字节。 将字段和测量值视为原始字节。
功能
- 将 Flux 更新到
0.12.0
错误修复
- 限制强制完全和冷压缩大小。
- 为 Flux HTTP 请求添加用户身份验证和授权支持。
- 调用
storage.Group
API 以正确映射组模式。 - 将始终返回浮点数的函数标记为始终返回浮点数。
- 添加对可选记录 Flux 查询的支持。
- 修复基数估计错误。
1.7.2
错误修复
- 更新到 Flux 0.7.1。
- 基于冲突的并发解析添加了保护和基于 epoch 的系统,以便在针对同一时间点的写入发生删除时协调修改。
- 跳过并警告序列文件不应位于保留策略目录中。
- 检查是否已从索引中删除测量值,如果已删除,则清理字段索引之外的内容。 还要修复清理问题,其中仅在匹配“m1”和“m10”之类的测量值时才检查前缀。
- 向用户发送错误消息,即数据库必须在非混合索引模式下运行才能允许删除。
- 更新平台依赖项以简化 Enterprise 中的 Flux 支持。
- 在存在墓碑的情况下验证序列文件。
- 修复当切片中存在实现 Unmarshaler 的类型时,
ApplyEnvOverrides
在环境变量设置为空时不会调用UnMarshaltext
的问题。 - 丢弃写回点时的 NaN 值,并修复点写入器以报告实际写入的点数,并忽略被丢弃的点。
- 查询授权器未正确传递到子查询,因此当子查询是读取值的一方时,不会发生拒绝。最大序列限制未向下传播。
1.7.1
错误修复
- Simple8B
EncodeAll
错误地编码条目:对于1
的游程,如果第 120 个或第 240 个条目不是1
,则游程将被错误地编码为选择器0
(240 个 1
) 或选择器1
(120 个 1
),导致第 120 个或第 240 个值的数据丢失。表现为消耗大量 CPU 资源以及压缩无限期运行。
1.7.0
重大更改
分块查询已添加到 Go 客户端 v2 接口中。如果您之前针对 Go 客户端 v2 进行了编译,则需要使用更新后的接口重新编译。
功能
Flux v0.7 技术预览
此版本中已添加对 Flux 语言和查询的支持。开始探索 Flux 0.7(技术预览)
- 使用新的配置设置启用 Flux
[http] flux-enabled = true
。 - 使用新的
influx -type=flux
选项启用 Flux REPL shell 以创建 Flux 查询。 - 阅读有关 Flux 和 Flux 语言、启用 Flux 的信息,或跳转到入门指南和其他指南。
时间序列索引 (TSI) 查询性能和吞吐量改进
- 针对具有许多共享标签对的索引的查询,索引计划更快。
- 减少包含先前查询的标签对的查询的索引计划 — TSI 索引现在缓存部分索引结果以供稍后重用。
- 性能改进需要更改要使用的磁盘 TSI 格式。
- 为了利用这些改进:
- 重建您的索引或等待 TSI 压缩您的索引,届时将应用新的 TSI 格式。
- 热分片和新分片立即使用新的 TSI 格式。
其他功能
- 默认启用存储服务。
- 确保读取服务正则表达式得到优化。
- 将分块查询添加到 Go 客户端 v2 中。
- 添加
access-log-status-filters
配置设置以创建访问日志过滤器。 - 时间序列索引 (TSI) 的压缩性能改进。
- 将 roaring bitmaps 添加到 TSI 索引文件。
错误修复
- 在
uuid
v1 生成中缺少hardwareAddr
。 - 修复派生和其他函数的继承间隔。
- 修复当函数引用子查询中的标签时的子查询功能。
- 当外部查询不按该标签分组时,从子查询中剥离标签。
1.6.6
错误修复
- 将始终返回浮点数的函数标记为始终返回浮点数。
- 修复基数估计错误。
- 将
tagKeyValue
互斥锁更新为写入锁。
1.6.5
功能
- 减少 TSI
TagSets
实现中的分配。
错误修复
- 修复
IndexSet
中的 panic。 - 将查询授权器传递给子查询。
- 修复 TSM1 在读取器错误时的 panic。
- 将数据库和保留策略名称限制为 255 个字符。
- 将 Go 运行时更新到 1.10.6。
1.6.4
功能
- 在构建 TSI 索引时,使用
buildtsi
中的-max-cache-size
设置最大缓存大小。
错误修复
- 修复
tsi1
sketch 锁定。 - 修复当函数引用子查询中的标签时的子查询功能。
- 当外部查询不按该标签分组时,从子查询中剥离标签。
- 将
-series-file
标志添加到dumptsi
命令帮助。 - 清理失败的 TSM 快照。
- 修复 TSM1 在读取器错误时的 panic。
- 修复序列文件逻辑删除。
- 修复流迭代器以不忽略错误。
- 当序列 ID 迭代器为 nil 时,不要 panic。
- 修复可能的 nil 迭代器的追加。
1.6.3
功能
- 从堆中删除 TSI1 HLL sketch。
错误修复
- 修复派生和其他函数的继承间隔。来自外部查询的继承间隔不应导致内部查询失败,因为继承间隔仅隐式传递给支持按时间分组功能的内部查询。由于具有派生函数的内部查询不支持按时间分组,并且内部查询本身未指定时间,因此外部查询不应使内部查询失效。
- 修复聚合数据的派生函数和其他函数的时间范围。派生函数和与其类似的函数会预加载自身的数据,以便第一个间隔将是时间范围的开始。这意味着读取时间范围之外的数据。v1.4.0 中对分片映射器的一项更改导致分片映射器将查询限制为给分片映射器的间隔。这是正确的,因为分片映射器只能处理它已映射的时间,但这破坏了回顾过去以获取派生函数和其他使用该功能的函数的功能。查询编译器已使用一个附加属性进行了更新,该属性记录了需要读取过去多少个间隔,以便分片映射器可以包含可能不一定读取,但可能由于上述功能而被查询的额外时间。
1.6.2
功能
- 减少 TSI TagSets 实现中的分配。
错误修复
- 确保孤立序列在删除分片时被清理。
1.6.1
功能
- 使用位集迭代器提高 LogFile 性能。
- 将 TSI 索引基数报告添加到
influx_inspect
。 - 更新到 Go 1.10。
- 提高
buildtsi
和 TSI 计划的性能。 - 提高单次测量读取服务的性能。
- 删除最大并发压缩限制。
- 提供可配置的 TLS 选项。
- 添加选项以提示内核 MADV_WILLNEED。
错误修复
- 改进序列段恢复。
- 修复 Windows 上零长度文件的 mmap。
- 确保过滤器迭代器尽可能晚地执行。
- 在配置中记录 UDP 精度设置。
- 允许标签键包含下划线。
- 修复在匹配特定类型的正则表达式时发生的 panic。
1.6.0
重大更改
- 如果数学运算多次使用相同的选择器,它现在将充当选择器而不是聚合器。有关详细信息,请参阅 #9563。
- 对于从 Prometheus 端点接收的数据,每个 Prometheus 测量现在都存储在其自己的 InfluxDB 测量中,而不是使用 Prometheus 测量名称作为
__name__
标签将所有内容存储在_
测量中。
功能
- 在
influx
客户端中支持代理环境变量。 - 实现基本三角函数。
- 添加使用谓词删除多个序列的功能。
- 实现
floor
、ceil
和round
函数。 - 向 InfluxQL 添加更多数学函数。
- 允许自定义服务器创建的 unix 套接字组和权限。
- 添加
suppress-write-log
选项以在启用日志时禁用写入日志。 - 添加额外的技术分析算法。
- 验证输入点。
- 记录启动期间的索引版本信息。
- 在
influx_inspect
实用程序的deletetsm
命令中添加键清理。 - 优化
spread
函数以迭代处理点而不是批量处理。 - 允许在条件中使用数学函数。
- 添加 HTTP 写入节流设置:
max-concurrent-write-limit
、max-enqueued-write-limit
和enqueued-write-timeout
。 - 实现
SHOW STATS FOR indexes
。 - 将
dumptsmwal
命令添加到influx_inspect
实用程序。 - 改进优化为静态 OR 条件的正则表达式模式的数量。
错误修复
- 支持通过环境变量设置日志级别。
- 修复检查 fieldsets 时的 panic。
- 确保在使用逗号时解析正确数量的标签。
- 修复 WAL 中的数据竞争。
- 允许
SHOW SERIES
kill。 - 还原 “在加载 TSM 文件时使用 MADV_WILLNEED”。
- 修复回归问题,以再次允许将 now() 用作 group by 偏移量。
- 在保留服务中删除已删除的分片。
- 在
Engine.DiskSize()
中忽略索引大小。 - 启用从子查询转换值。
- 避免在使用 text/csv 的 show diagnostics 时出现 panic。
- 正确跟踪所有格式类型的查询的响应字节写入。
- 当不存在分片时,删除序列文件的错误。
- 修复多个嵌套 distinct 调用的验证。
- TSM:
TSMReader.Close
阻塞直到读取完成。 - 为
top
和bottom
返回正确的辅助值。 - 在释放 FileStore 互斥锁后,从
FileStore.Close
关闭 TSMReaders。
1.5.5
功能
- 减少 TSI
TagSets
实现中的分配。
错误修复
- 复制
IndexSet.MeasurementNamesByExpr
的返回值。 - 确保孤立序列在删除分片时被清理。
- 修复聚合数据的派生函数和其他函数的时间范围。
- 修复流迭代器以不忽略错误。
- 当序列 ID 迭代器为
nil
时,不要 panic。 - 修复
IndexSet
中的 panic。 - 将查询授权器传递给子查询。
- 修复 TSM1 在读取器错误时的 panic。
1.5.4
功能
- 添加
influx_inspect deletetsm
命令,用于批量删除原始 TSM 文件中的测量。
错误修复
- 修复 readTombstoneV4 中的 panic。
- buildtsi:不要转义测量名称。
1.5.3
功能
- 立即在启动时添加
[http] debug-pprof-enabled
配置设置。对调试启动性能问题很有用。
错误修复
- 修复多个嵌套
DISTINCT
调用的验证。 - 为
TOP
和BOTTOM
返回正确的辅助值。
1.5.2
功能
- 在运行
buildtsi
时检查 root 用户。 - 可调整的 TSI 压缩阈值。
错误修复
- backport:检查备份目录没有清单文件时的失败情况。
- 修复回归问题,以再次允许将
now()
用作 group by 偏移量。 - 还原
在加载 TSM 文件时使用 MADV_WILLNEED
。 - 在
Engine.DiskSize()
中忽略索引大小。 - 修复
buildtsi
分区键。 - 确保即使 AST 未正确形成,条件也能正确编码。
1.5.1
错误修复
- 再次允许时间变量不区分大小写。
- 支持通过环境变量设置日志级别。
- 确保解析正确数量的标签。
- 修复检查 fieldsets 时的 panic。
- 修复 WAL 中的数据竞争。
1.5.0
重大更改
默认日志记录格式已更改。有关详细信息,请参阅 InfluxDB 中的日志记录和跟踪。
功能
- 改进 CLI 连接警告。
- 备份实用程序打印备份文件列表。
- OSS 的备份和还原以 Enterprise 兼容的备份格式生成和使用数据。
- 还原以在线模式运行,并且不删除现有数据库。
- 使用
start
和end
的导出功能按timestamp
过滤导出的数据。 - 处理 TSM 引擎中的高基数删除。
- 提高高基数的内存索引启动性能。
- 为流式传输和复制分片添加进一步的 TSI 支持。
- 在成功导入后安排完全压缩。
- 添加 Prometheus
/metrics
端点。 - 添加生成分片摘要的功能。
- 允许在 InfluxDB CLI 程序中设置节点 ID。
错误修复
- 拒绝 influx CLI 的额外参数。
- 修复正则表达式运算符后所需的空格。感谢 @stop-start!
- 修复
panic: sync: WaitGroup is reused before previous Wait has returned
。 - 修复合并迭代器关闭方法中的竞争条件。
- 修复查询编译,以便允许多个嵌套的 distinct 调用
- 修复 CLI 以允许在 use 语句中使用带引号的数据库名称。
- 当响应体长度为零时,更新了客户端
4xx
错误消息。 - 从日志中删除无关的换行符。
- 允许条件表达式中使用独立的布尔文字。
- 提高写入超过
max-values-per-tag
或max-series
时的性能。 - 防止查询同时完成并在同一时间被终止时发生 panic。
- 修复压缩时按时间缺少块排序的问题。
- WAL:更新
lastWriteTime
行为
1.4.3
配置更改
[data]
部分
cache-snapshot-memory-size
:默认值从 25m
更改为 256m
。
错误修复
- 修复较高的磁盘 I/O 利用率
1.4.2
如果 influxd
启动失败并出现 incompatible tsi1 index MANIFEST
错误,请参阅 1.4.0 破坏性更改部分。
错误修复
- 修复运行
dep init
时出现的panic: runtime error: slice bounds out of range
1.4.1
错误修复
- 修复通过 IFQL RPC API 的降序游标和范围查询。
1.4.0
TSI 索引
此功能在此版本中仍为实验性功能。但是,已进行了一些改进,新的元查询更改将允许比以前更深入地探索此功能。目前不建议在生产环境中使用。我们感谢您对该功能的所有反馈。请继续提供反馈!
重大更改
您不能再在子查询中指定与顶层查询中不同的 ORDER BY
子句。此功能从未正常工作,但未明确禁止。
作为 tsi1
索引持续开发的一部分,更改了 Bloom Filter 的实现,Bloom Filter 用于有效地确定序列是否不存在于索引中。虽然这显着提高了索引的性能并减少了其内存消耗,但在运行以前版本的数据库时创建的现有 tsi1
索引与 1.4.0 不兼容。
使用 tsi1
索引的数据库用户必须执行以下过程才能升级到 1.4.0
- 停止
influxd
。 - 删除使用
tsi1
索引的数据库上的所有index
目录。使用默认配置,这些目录可以在/var/lib/influxdb/data/DB_NAME/RP_NAME/SHARD_ID/index
或~/.influxdb/data/DB_NAME/RP_NAME/SHARD_ID/index
中找到。值得注意的是此时您访问了多少个不同的shard_ids
。 - 对于
-datadir
和-waldir
,分别使用分片的数据和 WAL 目录运行influx_inspect inmem2tsi
工具。给定步骤 (2) 中的示例,这将是influx_inspect inmem2tsi -datadir /var/lib/influxdb/data/DB_NAME/RP_NAME/SHARD_ID -waldir /path/to/influxdb/wal/DB_NAME/RP_NAME/SHARD_ID
。 - 对每个需要转换的分片重复步骤 (3)。
- 启动
influxd
。
对于现有 tsi1
分片的用户,如果他们尝试在未执行上述步骤的情况下启动 1.4.0 版本,则会发现分片拒绝打开,并且很可能会看到以下错误消息:incompatible tsi1 index MANIFEST
。
配置更改
[collectd]
部分
- 添加了
parse-multivalue-plugin
选项,默认值为split
。当设置为split
时,多值插件数据(例如df free:5000,used:1000
)将被拆分为单独的测量(例如,df_free, value=5000
和df_used, value=1000
)。当设置为join
时,多值插件将存储为单个多值测量(例如,df, free=5000,used=1000
)。
功能
- 添加
influx_inspect inmem2tsi
命令,以将现有的内存中(基于 TSM)分片转换为 TSI(时间序列索引)格式。 - 添加对 Prometheus 远程读取和写入 API 的支持。
- 支持测量、序列、标签键、标签键值和字段键的估计和精确的 SHOW CARDINALITY 命令。
- 提高
SHOW TAG KEYS
性能。 - 添加
EXPLAIN ANALYZE
命令,该命令生成SELECT
语句的详细执行计划。 - 改进的压缩调度。
- 支持 Ctrl+C 以取消 Influx CLI 中正在运行的查询。
- 允许在配置文件中使用人类可读的字节大小。
- 尊重 X-Request-Id/Request-Id 标头。
- 将 ‘X-Influxdb-Build’ 添加到 http 响应标头,以便用户可以识别响应是来自 OSS 服务还是 Enterprise 服务。
- 来自查询或写入的所有错误都通过 X-InfluxDB-Error 标头提供,并且 5xx 错误消息将写入服务器日志。
- 添加
parse-multivalue-plugin
以允许用户选择 collectd 服务应如何处理多值插件。 - 使客户端错误在下游错误时更有帮助。
- 允许在调查服务器问题时禁用 panic 恢复。
- 支持
/query
端点的 http 管道。 - 减少读取数据时的分配。
- 互斥锁配置文件现在可用。
- 批量处理监视器服务的写入。
- 将系统游标用于测量、序列和标签键元查询。
- 解释计划的初始实现。
- 在迭代器成本中包含扫描的缓存值数量。
- 提高
Include
和Exclude
函数的性能。 - 报告查询的任务状态。
- 减少分配,通过简化循环来提高
readEntries
性能 - 将导入器日志语句分隔到 stdout 和 stderr。
- 提高 TSI 索引中 Bloom Filter 的性能。
- 为查询响应添加消息包格式。
- 当不存在填充查询的较低限制时,隐式决定较低的限制。
- 流式
inmem2tsi
转换。 - 排序和验证 TSI 键值插入。
- 处理 nil MeasurementIterator。
- 向客户端导入器添加长行支持。
- 更新到 go 1.9.2。
- InfluxDB 现在使用 MIT 许可版本的 BurntSushi/toml。
错误修复
- 将默认统计信息间隔从 10 秒更改为 1 秒。
- illumos 构建在
syscall.Mmap
上中断。 - 防止在不存在的数据库上设置权限。
influxd backup
工具现在将日志记录分隔到stdout
和stderr
。感谢 @xginn8!- 删除测量使用了几 GB 的磁盘空间。
- 修复 CQ 开始和结束时间以使用 Unix 时间戳。
influx
CLI 区分大小写。- 修复了具有时区的连续查询的时间边界。
- 在 CSV 格式中返回查询解析错误。
- 修复当时区转换发生在时区边界时的时间区域偏移。
- 使用
SELECT
语句中的时区解析时间文字。 - 减少检查序列基数时的 CPU 使用率
- 修复快照为空时的备份。
- 游标泄漏,导致压缩后累积
.tsm.tmp
文件。 - 改进条件解析。
- 确保在出错时关闭输入。添加运行时 GC finalizer 作为关闭迭代器的额外保护。
- 修复系统迭代器上的合并错误。
- 强制子查询匹配父查询的排序。
- 修复访问
seriesByID
map 时的竞争条件。 - 修复调用
SeriesIDsAllOrByExpr
时的死锁。 - 修复
influx_inspect export
以使其跳过丢失的文件。 - 减少在表达式中遍历 varrefs 所需的时间。
- 解决
panic: runtime error: invalid memory address or nil pointer dereference
。 - 删除序列导致写入失败/写入超时/高内存使用率。
- 修复缓存和 wal 读取器中增加的内存使用率。
- OSS 只读用户应该能够列出数据库上的测量。
- 确保时间和基于标签的条件可以与 tsi1 索引一起使用进行删除。
- 防止在对子查询的结果进行数学运算时发生死锁。
- 修复 TSDB 中批量处理点时的一个小的内存泄漏。
- 不要假设
which
存在于软件包安装后脚本中。 - 修复新软件包输出中缺少 man 页面。
- 修复服务文件中
INFLUXD_OPTS
的使用。 - 修复 WAL panic:runtime error: makeslice: cap out of range。
- 从 TSI 元函数复制返回的字节。
- 修复在时间范围外删除数据的问题。
- 修复在压缩期间错误删除数据的问题。
- 防止 Collectd、Graphite、openTSDB 和 UDP 关闭期间的死锁。
- 在服务器退出后删除 pid 文件。
- 为
InterruptCh
上的成功读取返回query.ErrQueryInterrupted
。 - 修复 Measurement 索引内部的竞争。
- 确保保留服务始终删除本地分片。
- 读取配置文件时处理 utf16 文件。
- 修复
panic: runtime error: slice bounds out of range
。
1.3.7
发行说明
通过社区和 InfluxCloud 识别出的错误修复。构建工件现在与 v1.3.5 一致。
错误修复
- 不要假设
which
存在于软件包安装后脚本中。 - 修复服务文件中
INFLUXD_OPTS
的使用。 - 修复新软件包输出中缺少 man 页面。
- 为
useradd
添加 RPM 依赖项 shadow-utils。 - 修复使用
delete
时在指定时间范围外删除数据的问题 - 修复在压缩期间错误删除数据的问题。
- 为
InterruptCh
上的成功读取返回query.ErrQueryInterrupted
。 - 从 TSI 元函数复制返回的字节。
v1.3.6
发行说明
通过社区和 InfluxCloud 识别出的错误修复。
错误修复
- 减少在表达式中遍历 varrefs 所需的时间。
- 解决
panic: runtime error: invalid memory address or nil pointer dereference
。 - 修复了具有大量分片的集群的缓存和 WAL 读取器中内存使用率增加的问题。
- 防止在对子查询的结果进行数学运算时发生死锁。
- 修复了分片和存储引擎中存在的多个竞争条件。
- 修复缓存条目上的竞争条件。
发行说明
通过社区和 InfluxCloud 识别出的错误修复。
错误修复
- 修复访问
seriesByID
map 时的竞争条件。 - 修复调用
SeriesIDsAllOrByExpr
时的死锁。
v1.3.5
发行说明
通过社区和 InfluxCloud 识别出的错误修复。
错误修复
- 修复访问
seriesByID
map 时的竞争条件。 - 修复调用
SeriesIDsAllOrByExpr
时的死锁。
v1.3.4
发行说明
通过社区和 InfluxCloud 识别出的错误修复。
错误修复
- 修复了具有时区的连续查询的时间边界。
- 修复当时区转换发生在时区边界时的时间区域偏移。
- 使用 select 语句中的时区解析时间文字。
- 修复 drop measurement 未删除所有数据的问题。
- 修复快照为空时的备份。
- 消除了游标泄漏,导致压缩后累积 .tsm.tmp 文件。
- 修复删除测量和写入时发生的死锁。
- 确保在出错时关闭输入。添加运行时 GC finalizer 作为关闭迭代器的额外保护。
- 修复大型压缩中止时泄漏 tmp 文件的问题。
v1.3.3
发行说明
通过社区和 InfluxCloud 识别出的错误修复。
错误修复
- 解决了当 NewReaderIterator 创建 nilFloatIterator 时,读取器未关闭的内存泄漏问题。
v1.3.2
发行说明
通过社区和 InfluxCloud 识别出了一些小的错误修复。
错误修复
- 中断 “正在进行中” 的 TSM 压缩。
- 防止删除序列时过度使用内存。
- 显着提高 SHOW TAG VALUES 的性能。
v1.3.1
发行说明
通过社区和 InfluxCloud 识别出了一些小的错误修复。
错误修复
- 确保在压缩中止时清理临时 TSM 文件。
- 解决导致 1.3.0 无响应的死锁问题。
- 在 DELETE 后通过 INSERT 生成重复的点。
- 修复 CQ 开始和结束时间以使用 Unix 时间戳。
v1.3.0
发行说明
TSI
版本 1.3.0 标志着新的 InfluxDB 时间序列索引 (TSI) 引擎的首次正式发布。
TSI 引擎是 InfluxDB 的一项重大技术进步。它为 时间结构化合并树 引擎的 高序列基数问题 提供了解决方案。使用 TSI,序列的数量应不受服务器硬件上内存的限制,并且现有序列的数量对数据库启动时间的影响可以忽略不计。有关更多信息,请参阅 Paul Dix 的博客文章 Path to 1 Billion Time Series: InfluxDB High Cardinality Indexing Ready for Testing。
TSI 在版本 1.3 中默认禁用。要启用 TSI,请取消注释 index-version
设置 并将其设置为 tsi1
。index-version
设置位于配置文件的 [data]
部分中。接下来,重新启动您的 InfluxDB 实例。
[data]
dir = "/var/lib/influxdb/data"
index-version = "tsi1"
连续查询统计信息
启用后,每次完成连续查询时,都会将有关执行的一些详细信息写入内部监视器数据库(默认为 _internal
)的 cq_query
测量中。感兴趣的标签和字段是
标签 / 字段 | 描述 |
---|---|
db | 数据库名称 |
cq | 连续查询的名称 |
durationNS | 查询执行时间(纳秒) |
startTime | 时间范围的下限 |
endTime | 时间范围的上限 |
pointsWrittenOK | 写入目标测量的点数 |
startTime
和endTime
是 UNIX 时间戳,以纳秒为单位。- 写入的点数也包含在 CQ 日志消息中。
移除
在此版本中,管理 UI 已移除且不可用。[admin]
配置部分将被忽略。
配置更改
- 顶层配置
bind-address
现在默认为localhost:8088
。之前的默认值仅为:8088
,导致备份和还原端口绑定到所有可用接口(即包括公共互联网上的接口)。
以下新的配置选项可用。
[http]
部分
- 添加了
max-body-size
,默认值为 25,000,000,但可以通过将其设置为 0 来禁用。指定客户端请求体的最大大小(以字节为单位)。当客户端发送的数据超过配置的最大大小时,将返回413 Request Entity Too Large
HTTP 响应。
[continuous_queries]
部分
- 添加了
query-stats-enabled
,默认值为false
。当设置为true
时,连续查询执行统计信息将写入默认监视器存储。
功能
- 添加 WAL 同步延迟
- 将分块请求处理添加回 Go 客户端 v2
- 允许非管理员用户执行 SHOW DATABASES
- 通过在请求之间重用 gzip.Writers 来减少内存分配
- 将系统信息添加到 /debug/vars
- 向查询语言添加模运算符。
- 导入期间失败的点现在会导致非零退出代码
- 通过 SHOW DIAGNOSTICS 公开一些配置设置
- 在 InfluxQL 中支持单行和多行注释
- 支持查询的时区偏移
- 向 InfluxQL 添加 “integral” 函数
- 向 InfluxQL 添加 “non_negative_difference” 函数
- 向查询语言添加按位 AND、OR 和 XOR 运算符
- 写入吞吐量/并发性改进
- 移除管理 UI
- 更新到 go1.8.1
- 添加最大并发压缩限制
- 添加 TSI 支持工具
- 使用 /debug/requests 跟踪 /write 和 /query 的 HTTP 客户端请求
- 写入和压缩稳定性
- 添加新的 profile 端点,用于在单个存档中收集所有调试配置文件和查询
- 添加纳秒持续时间文字支持
- 使用增量聚合器优化 top() 和 bottom()
- 在写入结果时,维护由 top() 或 bottom() 选择的点的标签。
- 将 CQ 统计信息写入
_internal
数据库
错误修复
- 几个语句缺少 DefaultDatabase 方法
- 修复配置的 HTTP 部分中的拼写错误 – shared-secret
- 历史记录文件应在保存到历史记录之前编辑密码
- 当 influx cli 输出中的标头相同时,禁止显示标头
- 在 cli 中添加分块/块大小作为设置/选项
- 如果没有运行查询,则不要递增连续查询统计信息
- 禁止在二元表达式中使用通配符
- 修复当存在多个序列且存在空值时的 fill(linear)
- 更新 liner 依赖项以处理 docker exec
- 默认情况下将备份和还原端口绑定到 localhost
- Kill query 未杀死查询
- KILL QUERY 应在查询的所有阶段都有效
- 简化管理员用户检查。
- 显着提高 DROP DATABASE 速度
- 当解析无效的持续时间文字时,返回错误
- 修复选择确切时间戳时的时间范围
- 修复在不带空格的情况下使用加法和减法时的查询解析器
- 修复当数学运算与选择器一起使用时的回归
- 确保查询引擎中某些函数的输入是有序的
- 显着提高高基数数据库的关闭速度
- 修复 racy 集成测试
- 防止在窗口计算期间溢出或下溢
- 为 admin、httpd、subscriber、udp 启用了 golint,感谢 @karlding
- 在与布尔值的二元表达式中隐式将 null 转换为 false
- 限制 fill(none) 和 fill(linear) 仅可用于聚合查询
- 限制 top() 和 bottom() 选择器与任何其他函数一起使用
- top() 和 bottom() 现在返回每个点的时间
- 删除 DELETE 查询的默认上限时间范围
- 修复某些聚合查询的 LIMIT 和 OFFSET
- 重构子查询代码并修复外部条件查询
- 修复压缩中止日志消息
- TSM 压缩不会在错误时删除 .tmp 文件
- 将 CSV 输出中的空值设置为空字符串
- InfluxDB 中的压缩耗尽磁盘资源
- 对 etc/config.sample.toml 文件进行小的编辑
- 超出保留策略范围的点被静默删除
- 修复 TSM tmp 文件在磁盘上泄漏的问题
- 修复大型字段键阻止快照压缩的问题
- URL 查询参数凭据优先于身份验证标头
- TSI 分支具有重复的标签值
- 使用 HTTP API 时内存不足
- 在尝试 TSI 级别压缩之前检查文件计数。
- tsi 分支中的索引文件 fd 泄漏
- 修复 TSI 非连续压缩 panic
v1.2.4
错误修复
- 在部分写入错误前添加
partial write:
前缀,以概括其他子系统中的识别。
v1.2.3
错误修复
- 在将密码保存到历史记录文件之前对其进行编辑。
- 将缺少的 DefaultDatabase 方法添加到几个 InfluxQL 语句。
- 修复 models.Tags.Get 中的段错误。
- 简化管理员用户检查。
- 修复当数学运算与选择器一起使用时的回归。
- 确保查询引擎中某些函数的输入是有序的。
- 修复已删除的
time
字段键创建无法解析的点的问题。
v1.2.2
发行说明
配置更改
[http]
部分
max-row-limit
现在默认为0
。在 1.0 和 1.1 版本中,默认设置为10000
,但由于一个错误,在 1.0 和 1.1 版本中使用的值实际上是0
。在 1.2.0 到 1.2.1 版本中,我们修复了该错误,但该修复程序对 Grafana 和 Kapacitor 用户造成了破坏性更改;未将max-row-limit
设置为0
的用户由于10000
行限制而经历了截断/部分数据。在 1.2.2 版本中,我们将默认的max-row-limit
设置更改为0
,以匹配 1.0 和 1.1 版本中的行为。
错误修复
- 将默认的
max-row-limit
设置从10000
更改为0
,以防止 Grafana 或 Kapacitor 中缺少数据。
v1.2.1
发行说明
错误修复
- 将带有下划线的非保留测量名称视为正常测量。
- 减少子查询中的表达式以避免 panic。
- 在子查询中正确选择标签。
- 防止在内部查询中使用聚合和原始查询时发生 panic。
- 压缩后缺少点。
- Point.UnmarshalBinary() 边界检查。
- 接口转换:tsm1.Value 是 tsm1.IntegerValue,而不是 tsm1.FloatValue。
- 当使用正则表达式且其中一个测量为空时,正确映射类型。
- 当选择具有多个测量的字段时,如果其中一个测量为空,则正确映射类型。
- 在元查询的重写语句中包含 IsRawQuery。
- 修复 WALEntry.Encode 和 Values.Deduplicate 中的竞争
- 修复配置为从目录读取类型 DB 时 collectd 中的 panic。
- 修复使用排序序列键的 ORDER BY time DESC。
- 修复当测量使用正则表达式时类型的映射。
- 修复在子查询中使用 LIMIT 和 OFFSET 时的问题。
- 修复当使用发出不同时间的聚合时,不正确的数学运算。
- 修复使用括号表达式时的 EvalType。
- 修复存在子查询时的身份验证。
- 从子查询扩展查询维度。
- 用不同输出划分聚合函数不会发生 panic。
- 锚点在不区分大小写的正则表达式中无法按预期工作。
v1.2.0
发行说明
此版本引入了一项主要的新查询功能,即子查询,并提供了一些性能改进,包括在更多内核上写入性能提高 50% 或更高。该版本增加了一些稳定性并改进了内存相关问题,以及一些与 CLI 相关的错误修复。如果从早期版本升级,请在升级前阅读以下部分中的配置更改。
配置更改
如果从早期版本升级到 1.2.0
,则以下新的配置选项可用。
[[collectd]]
部分
security-level
默认为"none"
。此字段也接受"sign"
和"encrypt"
,并为 collectd 插件启用不同级别的传输安全性。auth-file
默认为"/etc/collectd/auth_file"
。指定在使用签名或加密模式时用于验证客户端身份的身份验证文件的位置。
弃用
压力测试工具 influx_stress
将在后续版本中删除。我们建议使用 influx-stress
作为替代品。
功能
- 删除 GOMAXPROCS 的覆盖。
- 从默认配置文件中取消注释节标题。
- 显着提高写入性能。
- 修剪元存储中已删除分片的数据。
- 使用 Godeps 更新最新的依赖项。
- 引入用于标记带有分块的部分响应的语法。
- 如果存在,则在 HTTP 记录器中使用 X-Forwarded-For IP 地址。
- 添加对通过 collectd 进行安全传输的支持。
- 切换日志记录以在所有位置使用结构化日志记录。
- [CLI 功能请求] 对查询使用保留策略。
- 向 CLI 添加 clear 命令。
- 添加在 v2 客户端中使用查询中的参数的功能,使用
Query
结构中的Parameters
map。 - 允许通过 ENV 向数组配置添加项。
- 支持查询语言中的子查询执行。
- SSL 连接错误的详细输出。
- 缓存快照性能改进
错误修复
- 修复 tsm1_cache memBytes 统计信息正确性中的潜在竞争条件。
- 修复元客户端的 UpdateUser 和 DropContinuousQuery 方法上损坏的错误返回。
- 修复字符串引用,并显著提高
influx_inspect export
的性能。 - CLI 为插入语句缓存了 db/rp。
- 修复使用自签名 SSL 证书时 CLI 导入的错误。
- 修复跨平台备份/恢复。
- 确保删除数据库时,与该数据库关联的所有用户权限都被移除。
- 从整数的百分位数调用中返回时间。
- 当使用通配符和
sample()
时,展开字符串和布尔字段。 - 修复 init 脚本中的 chuid 参数顺序。
- 拒绝无效的订阅 URL。
- CLI 应该使用空格进行对齐,而不是制表符。
- 0.12.2 InfluxDB CLI 客户端 PRECISION 返回 “Unknown precision…”。
- 修复缺少标签值时解析键的 panic。
- 保留策略不应允许
INF
或0
作为分片持续时间。 - 解码点值时返回错误而不是 panic。
- 修复修剪分片组时切片越界 panic。
- 删除数据库将删除 /influxdb/data 目录。
- 确保可以禁用 Subscriber 服务。
- 修复存储引擎中的竞争条件。
- InfluxDB 应该在类型不匹配错误时执行部分写入。
v1.1.5
错误修复
- 在将密码保存到历史记录文件之前对其进行编辑。
- 将缺少的 DefaultDatabase 方法添加到几个 InfluxQL 语句。
v1.1.4
错误修复
- 从 1.2.0 Backport:减少 GC 分配。
v1.1.3
错误修复
- 移除 Tags.shouldCopy,在系列创建时替换为 forceCopy。
v1.1.2
错误修复
- 修复通过 HTTP 写入新系列时发生的内存泄漏。
- 修复系列标签迭代的段错误。
- 修复标签解引用 panic。
v1.1.1
功能
- 更新 Go 版本至 1.7.4。
错误修复
- 修复带有尾部斜杠的字符串字段。
- 将空字符串引用为标识符。
- 修复错误消息中不正确的标签值。
安全
Go 1.7.4 已发布,以解决两个安全问题。此版本包含这些安全修复。
v1.1.0
发行说明
此版本基于 GoLang 1.7.3 构建,并提供了许多性能优化、稳定性更改和一些新的查询功能。如果从早期版本升级,请在升级前阅读下面的配置更改部分。
弃用
管理界面已被弃用,将在后续版本中移除。启用管理 UI 的配置设置现在默认禁用,但如果需要可以启用。我们建议使用 Chronograf 或 Grafana 作为替代方案。
配置更改
在从早期版本升级到 1.1.0
之前,可能需要更改以下配置。
[admin]
部分
enabled
现在默认为 false。如果您当前正在使用管理界面,您需要将此值更改为true
以重新启用它。管理界面目前已被弃用,将在后续版本中移除。
[data]
部分
- 添加了
max-values-per-tag
,默认值为 100,000,但可以通过将其设置为0
来禁用。标签超过此限制的现有 measurements 将继续加载,但会导致标签基数增加的写入将被丢弃,并将向调用者返回partial write
错误。此限制可用于防止将高基数标签值写入 measurement。 cache-max-memory-size
已从524288000
增加到1048576000
。此设置是分片缓存可以使用的最大 RAM 量(以字节为单位),超过此值将拒绝写入并返回错误。将此值设置为0
将禁用限制。cache-snapshot-write-cold-duration
已从1h
减少到10m
。此设置确定当分片对于写入为冷状态时,值在分片缓存中保留多长时间。compact-full-write-cold-duration
已从24h
减少到4h
。更短的持续时间允许冷分片更快地压缩到最佳状态。
功能
查询语言已扩展了一些新功能
- 支持在 select 子句中的字段键上使用正则表达式。
- 新的
linear
填充选项。 - 新的
cumulative_sum
函数。 - 支持
SHOW
命令的ON
子句。
所有更改
- 过滤掉分片内没有该系列数据的系列。
- 将 host = /^server-a$/ 形式的正则表达式重写为 host = ‘server-a’,以利用 tsdb 索引。
- 通过缓存 tsm 文件统计信息来提高压缩计划性能。
- 按时间对齐二进制数学表达式流。
- 减少计算 measurement 的 TagSet 时的 map 分配。
- 使输入插件服务的 open/close 操作具有幂等性。
- 通过并发关闭分片来加速关闭过程。
- 向查询语言添加 sample 函数。
- 向查询语言添加
fill(linear)
。 - 实现 cumulative_sum() 函数。
- 更新配置中的默认值以获得最新的最佳实践。
- UDP 客户端:拆分大型点。
- 添加活动压缩、压缩错误的统计信息。
- 为我们打包的其他工具添加更多 man 手册,并完全压缩 man 手册。
- 添加 max-values-per-tag 以限制高标签基数数据。
- 将 jwt-go 依赖项更新到版本 3。
- 支持通过 unix 域套接字启用 HTTP 服务。
- 向查询执行器添加额外的统计信息。
- 功能请求:
influx inspect -export
应该转储 WAL 文件。 - 为响应写入器实现 text/csv 内容编码。
- 支持运行异步查询的工具。
- 支持 SHOW 命令的 ON 子句,并使用默认数据库。
- 正确地从 CLI 的非交互式流中读取输入。
- 支持
INFLUX_USERNAME
和INFLUX_PASSWORD
以在 CLI 中设置用户名/密码。 - 在没有 group by interval 时优化 first/last 函数。
- 使正则表达式在 SELECT 子句中的字段和维度键上工作。
- 更改原始查询的默认时间边界。
- 支持混合持续时间单位。
错误修复
- 避免在达到
max-row-limit
时发生死锁。 - 修复将多个聚合函数与稀疏数据一起使用时分组不正确的问题。
- 修复 SHOW QUERIES 的输出持续时间单位。
- 在链接到文档时截断版本字符串。
- influx_inspect: export 不转义字段键。
- 修复点会被写入错误分片的问题。
- 修复保留策略不一致性。
- 移除 stddev 调用意外添加的字符串支持。
- 移除 /data/process_continuous_queries 端点。
- 使 https 订阅能够与自定义 CA 证书一起工作。
- 减少查询计划分配。
- 分片统计信息包含 WAL 路径标签,因此磁盘字节更有意义。
- 在删除数据库期间,未读取的 show series 迭代器会导致 panic。
- 对于列格式化响应,从 CLI 使用一致的列输出。
- 在 Admin UI 中正确使用密码类型字段。
- ALTER RETENTION POLICY 中的重复解析错误。
- 修复删除分片时数据库被锁定的问题。
- 修复 mmap 解引用。
- 修复 /debug/vars 统计信息的 base64 编码问题。
- 删除 measurement 导致缓存最大内存超出错误。
- 仅在从 measurement 中删除最后一个系列时,才减少 measurement 的数量。
- 当指定保留策略或数据库时,Delete 语句返回错误。
- 修复美元符号,使其正确处理保留关键字。
- 超过最大保留策略持续时间会给出不正确的错误消息。
- 删除用作标签或字段键的时间。
v1.0.2
错误修复
- 修复 RLE 整数解码产生负数的问题。
- 在计划压缩时避免 stat 系统调用。
- 高写入负载下的订阅数据丢失。
- 在使用 ALTER RETENTION POLICY 时,不要自动重置分片持续时间。
- 确保在保留策略被更改后创建正确的分片组。
v1.0.1
错误修复
- 防止用户手动使用系统查询,因为不正确的使用会导致 panic。
- 确保分片 measurement 中提供 fieldsCreated 统计信息。
- 在 /debug/vars 中报告 cmdline 和 memstats。
- 修复示例配置文件中的拼写错误。
- 为惰性时间字面量实现时间数学运算。
- 修复删除分片时数据库被锁定的问题。
- 在合并系列中的导数调用中,跳过同一时间的点。
- 在 Influx 客户端中,将无效的 JSON 响应读取为错误。
v1.0.0
发行说明
InfluxDB 的初始版本发布。
重大更改
- 添加了
max-series-per-database
,默认值为 1M,但可以通过将其设置为0
来禁用。系列数超过此限制的现有数据库将继续加载,但会创建新系列的写入将失败。 - 配置选项
[cluster]
已被[coordinator]
替换。 - 已移除对配置选项
[collectd]
和[opentsdb]
的支持;请改用[[collectd]]
和[[opentsdb]]
。 [data]
部分中的配置选项data-logging-enabled
已重命名为trace-logging-enabled
,默认值为false
。- 在此版本中,关键字
IF
、EXISTS
和NOT
已被移除。这意味着您不再需要为DROP DATABASE
指定IF NOT EXISTS
或为CREATE DATABASE
指定IF EXISTS
。如果指定了这些关键字,将返回查询解析错误。 - 为了与其他统计信息保持一致,分片
writePointsFail
统计信息已重命名为writePointsErr
。
在此版本中,InfluxDB 的 systemd 配置文件将使用系统配置的默认日志记录,默认情况下不再将文件写入 /var/log/influxdb
。在大多数系统中,日志将被定向到 systemd 日志,并且可以通过 journalctl -u influxdb.service
访问。有关配置 journald 的信息,请查阅 systemd journald 文档。
功能
- 添加 mode 函数。
- 支持查询引擎的负时间戳。
- 写入路径统计信息。
- 添加 MaxSeriesPerDatabase 配置设置。
- 从 influxql 语言中移除 IF EXISTS/IF NOT EXISTS。
- 更新 go 包库依赖项。
- 向 influx_inspect 工具添加 tsm 文件导出功能。
- 为命令创建 man 手册。
- 当身份验证成功但授权失败时,返回 403 Forbidden。
- 添加了网站图标。
- 为多个 bucket 而不是每个 bucket 运行一个连续查询。
- 当启用连续查询日志记录时,记录 CQ 执行时间。
- 从 Windows 记事本保存的配置文件中去除 BOM。
- 更新帮助信息,并从配置文件中移除未使用的配置选项。
- 向执行选项添加 NodeID。
- 使 httpd logger 更接近 Common (& combined) Log Format。
- 允许任何 help 选项的变体触发帮助信息。
- 减少查询解析期间的分配。
- 优化时间戳游程编码解码。
- 为磁盘分片大小添加监控统计信息。
- 添加基于 HTTP(s) 的订阅。
- 向监控添加新的 HTTP 统计信息。
- 加速删除数据库操作。
- 添加 Holt-Winter 预测函数。
- 添加对 JWT 令牌身份验证的支持。
- 添加创建分片快照的功能。
- 并行化迭代器。
- 教导 http 服务如何强制连接限制。
- 支持用于选择特定类型的 cast 语法。
- 重构 monitor 服务,以避免 expvar,并在截断的时间间隔内写入监控统计信息。
- 在管理 UI 中动态更新文档链接。
- 支持聚合函数中的通配符。
- 支持为 graphite 服务指定保留策略。
- 向 tsm 引擎添加额外的跟踪日志记录。
- 向 TSM 引擎添加统计信息和诊断信息。
- 支持 SHOW TAG VALUES 中键的正则表达式选择。
- 修改默认保留策略名称并使其可配置。
- 更新 SHOW FIELD KEYS 以返回字段键的字段类型。
- 支持解析器中的绑定参数。
- 向 httpd 配置添加 https-private-key 选项。
- 支持加载 collectd typesdb 文件的文件夹。
错误修复
- 优化将标签值与空字符串进行比较的查询。
- 允许在线协议输入中使用空行。
- 运行时:goroutine 堆栈超出 1000000000 字节限制。
- 修复使用所有选项时的 alter retention policy。
- 并发系列限制。
- 确保在 influx_inspect export 中关闭 gzip 写入器。
- 修复处理默认值时的 CREATE DATABASE。
- 修复 UDP pointsRx 被递增两次的问题。
- Tombstone 内存改进。
- 硬编码自动生成的 RP 名称为 autogen。
- 确保在管理连续查询时 ID 不会冲突。
- 连续完全压缩。
- 从 walkShards 中移除限制器。
- 复制 influx_stress 中的标签,以避免 map 上的并发写入 panic。
- 不要运行没有时间跨度的连续查询。
- 通过 group by 偏移量移动 CQ 间隔。
- 修复解析空键的 panic。
- 在 CLI 中更改主机时更新连接设置。
- 在输出新配置时始终使用演示配置。
- 对 init 脚本进行小的改进。移除 sysvinit-utils 作为包依赖项。
- 修复大型 TSM 文件的压缩计划。
- 相同时间戳的重复数据。
- 修复 panic:合并缓存时截断切片。
- 修复 measurement 的正则表达式二进制编码。
- 修复与数学运算符一起使用时的 fill(previous)。
- 在 influx_inspect 中将 dumptsmdev 重命名为 dumptsm。
- 移除 tsm1 索引写入器中的双重锁。
- 从 TSDB 包中移除 FieldCodec。
- 允许非管理员用户为 influx CLI 调用 “use”。
- 在创建 nil 条件游标时,设置条件游标而不是 aux 迭代器。
- 更新
stress/v2
以使用集群、ssl 和用户名/密码身份验证。代码清理。 - 修改最大纳秒时间,使其减少一纳秒。
- 包含 sysvinit-tools 作为 rpm 依赖项。
- 将端口添加到所有 graphite 日志输出,以帮助调试多个端点。
- 修复 panic:运行时错误:索引超出范围。
- 移除 systemd 输出重定向。
- DROP MEASUREMENT 后数据库无响应。
- 解决删除 Measurement 时的内存不足错误。
- 修复点验证解析器以正确识别和排序标签。
- 防止并发身份验证缓存写入时的 panic。
- 在每个请求上设置 X-Influxdb-Version 标头(即使是 404 请求)。
- 如果没有值,防止 panic。
- 时间排序因覆盖点而损坏。
- 带有看起来像日期的字符串的查询最终得到日期类型,而不是字符串类型。
- 并发 map 读写 panic。
- 丢弃早于保留策略时间窗口的写入。
- 修复 SELECT 语句所需的权限。
- 过滤掉与分片数据库/保留策略不匹配的源。
- 如果分片组结束时间超过 MaxNanoTime,则截断它。
- 批量 SELECT INTO / CQ 写入。
- 修复压缩计划重新压缩大型 TSM 文件的问题。
- 确保客户端在插入点时发送正确的精度。
- 接受带有尾随空格的点。
- 修复 SHOW FIELD KEYS 中的 panic。
- 在使用聚合函数时禁用限制优化。
- 修复 panic:接口转换:tsm1.Value 是 *tsm1.StringValue,而不是 *tsm1.FloatValue。
- 在写入数据库后立即删除数据库时发生数据竞争。
- 确保管理员存在,然后再对查询进行身份验证。
- 在发生 panic 时,将查询执行器的堆栈跟踪打印到日志。
- 修复读取 tombstone:EOF。
- 配置中的 Query-log-enabled 不再被忽略。
- 确保请求 gzip 编码主体的客户端不会收到空主体。
- 优化分片加载。
- 覆盖点后查询速度减慢数百倍。
- SHOW TAG VALUES 在 WHERE 子句中接受 != 和 !~。
- 移除旧的集群代码。
- 确保 SHOW 查询中考虑未来的点。
- 修复完全压缩与级别压缩冲突的问题。
- 覆盖大型系列上的点可能会在压缩期间导致内存峰值。
- 修复 parseFill 以在尝试解析表达式之前检查 fill 标识符。
- 超出最大索引条目数。
- 解决启动时间缓慢的问题。
- 修复 tsm1 引擎中的 measurement 字段 panic。
- 针对刚刚压缩过的文件的查询需要指向新文件。
- 在创建 CQ 之前检查保留策略是否存在。
此页对您有帮助吗?
感谢您的反馈!