InfluxDB v1 发布说明
此页面记录了 InfluxDB OSS 的早期版本。InfluxDB OSS v2 是最新的稳定版本。请参阅相应的 InfluxDB v2 文档: InfluxDB OSS v2 发布说明。
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。 - 为
influxREPL 添加 Flux 查询支持。 - 添加 新的下推能力 以提高 Flux 查询性能。
- InfluxDB v2 兼容性 API 更新:
- 部分支持在
/v2/api/buckets兼容性 API 中的创建、检索、更新、删除和列表操作,并正确处理对不支持的/v2/api/buckets端点的请求。 - 实现
v2/api/delete兼容性 API。
- 部分支持在
- 附加内部指标:
- 按测量的入口指标。
- 按登录的测量指标。
- 系列创建入口指标。
- 添加订阅缓冲区大小使用指标。
- 构建改进:
- 为 InfluxDB 1.x 启用静态派构建。
- 使 Windows 和 ARM64 构建成为可能。
- 杂项添加和优化:
- 添加多个UDP写入器。
- 优化序列迭代。
- 优化保存更改到
fields.idx。
错误修复
- 防止
GROUP BY在某些情况下返回每个组多个结果。 - 将
curl依赖项添加到 InfluxDB 包中,以便在 systemd 脚本中使用。 - 使用
defer来解锁互斥锁。 - 确保
influxd-ctl backup在仅提供-shard选项时创建可用的备份。 influx_inspect verify -dir不再将/data附加到目录路径。 文件会递归检查,包括/data目录和其他子目录中的文件。- 在 mmap 失败时不要重命名文件。
- 完全清理部分打开的TSI。
- 记住那些失败的碎片
Open()并避免重复尝试。 - 改善打开索引分区时的错误信息。
- 原子地创建
TSI MANIFEST文件 - 添加路径到 TSI 日志和索引文件错误。
- 在写入错误时恢复内存中的清单。
- 为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
错误修复
- 确保
curl依赖于 InfluxDB 包。 - 确保快照服务正确读取负载。
- 通过在systemd脚本中无限阻止来处理40x错误。
- 修复
influxd restore中的以下错误:- 正确验证参数。
- 在返回空快照时改进错误信息。
- 修复Windows上的临时文件删除。
版本1.8.9
错误修复
- 防止在存在重叠分片时静默丢弃写入。
- 解决
influxd restore -portable备份错误。 - 确保 systemd 启动脚本对组和其他人可执行。
- 处理systemd包装中的https,并防止其无限循环。
- 在使用InfluxDB OSS将备份恢复到InfluxDB Enterprise集群时,记录错误而不是恐慌。
v1.8.8
由于在 v.1.8.8 中遇到几个构建依赖问题,该版本将不被发布。
v1.8.7
错误修复
- 将ARM RPM更名为与yum兼容的名称。
- 在构建过程中通过Docker转换RPM的ARM架构名称。
- 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)。 - 更新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_durationstat_compile_durationstat_execute_duration现在,这些持续时间被正确记录。
版本1.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 引入了一个可能会增加内存使用的bug。如果您安装了此版本,请安装 v1.8.2,该版本包含以下功能、性能改进和错误修复。
特点
- 允许用户添加自定义HTTP响应头,以遵循内部安全政策。
性能提升
- InfluxQL 查询规划器并行规划每个字段,以提高规划时间。
- 通过批量写入墓碑提高了DELETE/DROP的性能。
错误修复
- 修复导致 panic 的 Flux
buckets()函数。 - TSI: 解决了一些导致段错误的边缘情况。
- HTTP:简化授权器。
- 在删除分片之前,请等待删除纪元。
- 改进创建快照时的错误处理。
- 从构建中删除所有 Go 1.12 的引用。
v1.8.0
特点
Flux v0.65 准备好进行生产使用
此版本更新了对Flux语言和查询的支持。要了解Flux的设计原则并查看如何开始使用Flux,请参见Introduction to Flux。
使用新的
influx -type=flux选项来启用 Flux REPL shell 以创建 Flux 查询。Flux v0.65 包含以下功能:
- Join data residing in multiple measurements, buckets, or data sources
- Perform mathematical operations using data gathered across measurements/buckets
- Manipulate Strings through an extensive library of string related functions
- Shape data through
pivot()and other functions - Group based on any data column: tags, fields, etc.
- Window and aggregate based on calendar months, years
- Join data across Influx and non-Influx sources
- Cast booleans to integers
- Query geo-temporal data (experimental)
- Many additional functions for working with data
我们正在根据您的反馈评估是否需要与现有的 InfluxQL 查询管理控制 相当的 Flux 查询管理控制。请加入 InfluxCommunity、Slack 或 GitHub 上的讨论。InfluxDB 企业客户,请联系 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),索引文件随着时间的推移而增长,并且不会自动进行压缩。该工具使管理员能够在数据库离线时执行压缩。
- 添加对使用
-url-prefix连接到自定义 HTTP 端点的支持,在influxCLI 中。这允许 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文件。
版本1.7.9
- 此版本使用 Go 1.12.10 构建,消除了 HTTP desync 漏洞。
错误修复
- 防止压缩突发吞吐量限制。
- 用计数器替换TSI压实等待组。
- 更新 InfluxQL 依赖。
- 添加选项以验证调试/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 读取崩溃。
- 移除多余的
fmt.Println在tsm1.StringArrayEncodeAll中。 - 修复了在
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解码器错误,当空标签值导致数组索引崩溃。
- 修复在
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会导致恐慌。正确的语法是now()。
- 跟踪对Prometheus远程读取处理程序的远程读取请求。
错误修复
- 确保在使用
-type=flux选项执行influxCLI 的 Flux HTTP 请求时正确传递凭证。 - 数据生成改进的回归移植:重命名文件以确保版本间的一致性,添加了
time-interval架构选项,并更新了架构示例文档。 - 修复当
[http]shared-secret配置设置为空时的安全漏洞。 - 为
tagKeyValueEntry.setIDs()添加空值检查。 - 扩展 Prometheus 远程写入端点,以丢弃不支持的 Prometheus 值 (
NaN,-Inf, 和+Inf),而不是拒绝整个批次。- 如果启用写入跟踪日志 (
[http] write-tracing = true),则丢弃值的摘要会被记录。 - 如果一批值包含随后被丢弃的值,则返回 HTTP 状态码
204。
- 如果启用写入跟踪日志 (
- 更新谓词关键映射以匹配 InfluxDB
2.x的行为。 - 修复Prometheus读取API中的恐慌。
- 为influxql添加版本约束。
1.7.5
更新 (2019-04-01): 如果您的 InfluxDB OSS 服务器使用默认的内存索引 ([data].index-version = "inmem"), 则不要升级到此版本。客户报告 InfluxDB 1.7.5 突然停止响应。有关详细信息,请参见 GitHub issue #13010。计划修复 将很快提供。
错误修复
- 更新
tagKeyValue互斥锁为写锁。 - 修复一些分片时代竞争的问题。
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.GroupAPI 来正确映射组模式。 - 标记为始终返回浮点数的函数总是返回浮点数。
- 增加对可选记录Flux查询的支持。
- 修复基数估计错误。
1.7.2
错误修复
- 更新至 Flux 0.7.1。
- 基于冲突的并发解决添加了保护措施和基于纪元的系统,以协调在同一时间对同一点的删除和写入的修改。
- 跳过并警告系列文件不应位于保留策略目录中。
- 检查测量是否从索引中删除,如果删除了,则清理字段索引。同时修复清理问题,当匹配像“m1”和“m10”这样的测量时,仅检查前缀的情况。
- 错误信息:数据库必须以非混合索引模式运行,以允许删除。
- 更新平台依赖以简化企业中的Flux支持。
- 在存在墓碑的情况下验证序列文件。
- 修复
ApplyEnvOverrides当实现了 Unmarshaler 的类型在切片中时,环境变量设置为空时不调用UnMarshaltext。 - 在写回点时丢弃NaN值,并修复点写入器以报告实际写入的点数,并省略被丢弃的点。
- 查询授权者未正确传递给子查询,因此当子查询读取值时未发生拒绝。最大系列限制未向下传播。
1.7.1
错误修复
- Simple8B
EncodeAll错误地编码了条目:对于一组1s,如果第120个或第240个条目不是1,该组将被错误编码为选择器0(240 1s) 或选择器1(120 1s),导致第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,或者直接查看入门指南和其他指南。
时间序列索引 (TSI) 查询性能和吞吐量改进
- 针对具有多个共享标签对的索引的查询的更快索引规划。
- 减少对包含先前查询的标签对的查询的索引规划 - TSI索引现在缓存部分索引结果以供后续重用。
- 性能改进需要更改要使用的磁盘上TSI格式。
- 利用这些改进:
- 重建您的索引或等待您的索引进行TSI压缩,届时将应用新的TSI格式。
- 热碎片和新碎片立即使用新的TSI格式。
其他功能
- 默认启用存储服务。
- 确保读取服务的正则表达式得到优化。
- 将分块查询添加到Go客户端v2。
- 添加
access-log-status-filters配置设置以创建访问日志过滤器。 - 时间序列索引(TSI)的压缩性能改进。
- 将咆哮位图添加到TSI索引文件。
错误修复
- 在
uuidv1 生成中缺少hardwareAddr。 - 修复导数及其他的继承间隔。
- 修复当函数引用子查询中的标签时的子查询功能。
- 当外部查询不按该标签分组时,从子查询中剥离标签。
1.6.6
错误修复
- 标记为始终返回浮点数的函数总是返回浮点数。
- 修复基数估计错误。
- 更新
tagKeyValue互斥锁为写锁。
1.6.5
特点
- 减少TSI
TagSets实现中的分配。
错误修复
- 修复
IndexSet中的恐慌。 - 将查询授权者传递给子查询。
- 修复读者错误引起的TSM1崩溃。
- 数据库和保留策略名称限制为255个字符。
- 将Go运行时更新为1.10.6。
1.6.4
特点
- 在构建TSI索引时,使用
-max-cache-size在buildtsi中设置最大缓存大小。
错误修复
- 修复
tsi1草图锁定。 - 修复当函数引用子查询中的标签时的子查询功能。
- 当外部查询不按该标签分组时,从子查询中剥离标签。
- 将
-series-file标志添加到dumptsi命令帮助中。 - 清理失败的TSM快照。
- 修复读取器错误导致的TSM1崩溃。
- 修复系列文件墓碑问题。
- 修复流迭代器以不忽略错误。
- 当系列ID迭代器为nil时,请不要惊慌。
- 修复可能为 nil 的迭代器的附加问题。
1.6.3
特点
- 从堆中移除TSI1 HLL草图。
错误修复
- 修复导数及其他的继承间隔。来自外层查询的继承间隔不应该导致内层查询失败,因为继承间隔仅隐式传递给支持按时间分组功能的内层查询。由于带有导数的内层查询不支持按时间分组,并且内层查询本身没有指定时间,因此外层查询不应该使内层查询失效。
- 修复聚合数据的导数和其他时间范围。导数函数及其他类似函数会预加载数据,以便第一个间隔成为时间范围的开始。这意味着读取时间范围之外的数据。在v1.4.0中对分片映射器所做的一项更改导致分片映射器将查询限制在给定的间隔内。这是正确的,因为分片映射器只能处理它已映射的时间,但这破坏了查看导数及其他使用该功能的函数过去的功能。查询编译器已更新,引入了一个额外的属性,用于记录需要读取多少个过去的间隔,以便分片映射器可以包含它可能不会从中读取的额外时间,但可能会因为上述描述的功能而被查询。
1.6.2
特点
- 减少TSI TagSets实现中的分配。
错误修复
- 确保孤立系列在碎片删除时得到清理。
1.6.1
特点
- 通过位集迭代器提高LogFile性能。
- 将 TSI 索引基数报告添加到
influx_inspect。 - 更新到 Go 1.10。
- 提高
buildtsi和TSI规划的性能。 - 提高单个测量的读取服务性能。
- 移除最大并发压缩限制。
- 提供可配置的TLS选项。
- 向内核添加提示 MADV_WILLNEED 的选项。
错误修复
- 改进系列段恢复。
- 修复零长度文件上的窗口mmap。
- 确保过滤器迭代器尽可能晚地执行。
- 在配置中记录UDP精度设置。
- 允许标签键包含下划线。
- 修复在匹配特定类型的正则表达式时出现的崩溃。
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工具。 - 提高优化为静态或条件的正则表达式模式的数量。
错误修复
- 支持通过环境变量设置日志级别。
- 修复检查字段集时的恐慌。
- 确保在使用逗号时解析的标签数量正确。
- 修复WAL中的数据竞争。
- 允许
SHOW SERIES被终止。 - 恢复 “在加载TSM文件时使用MADV_WILLNEED”。
- 修复回归,允许再次将 now() 用作分组偏移。
- 在保留服务中删除已删除的分片。
- 忽略索引大小在
Engine.DiskSize()中。 - 启用从子查询中转换值。
- 使用 show diagnostics 时避免出现恐慌,文本/csv。
- 正确跟踪所有格式类型查询的响应字节。
- 当不存在分片时,移除系列文件的错误。
- 修复多个嵌套distinct调用的验证。
- TSM:
TSMReader.Close阻塞直到读取完成。 - 返回
top和bottom的正确辅助值。 - 在释放 FileStore 互斥锁后,关闭
FileStore.Close的 TSMReaders。
1.5.5
特点
- 减少TSI
TagSets实现中的分配。
错误修复
- 复制
IndexSet.MeasurementNamesByExpr的返回值。 - 确保孤立系列在碎片删除时得到清理。
- 修复聚合数据的导数和其他时间范围。
- 修复流迭代器以不忽略错误。
- 当系列 ID 迭代器为
nil时,不要惊慌。 - 修复
IndexSet中的恐慌。 - 将查询授权者传递给子查询。
- 修复读取器错误导致的TSM1崩溃。
1.5.4
特点
- 添加
influx_inspect deletetsm命令以批量删除原始 TSM 文件中的测量。
错误修复
- 修复 readTombstoneV4 中的恐慌。
- buildtsi: 不要转义测量名称。
1.5.3
特点
- 在启动时立即添加
[http] debug-pprof-enabled配置设置。这对于调试启动性能问题非常有用。
错误修复
- 修复多个嵌套
DISTINCT调用的验证。 - 返回
TOP和BOTTOM的正确辅助值。
1.5.2
特点
- 在运行
buildtsi时检查是否为根用户。 - 可调节的TSI压实阈值。
错误修复
- 回退: 检查当备份目录没有清单文件时的失败情况。
- 修复回归问题,以便可以再次将
now()用作分组偏移量。 - 撤销
Use MADV_WILLNEED when loading TSM files. - 忽略索引大小在
Engine.DiskSize()中。 - 修复
buildtsi分区键。 - 确保条件被正确编码,即使抽象语法树(AST)没有正确形成。
1.5.1
错误修复
- 允许时间变量不区分大小写。
- 支持通过环境变量设置日志级别。
- 确保解析的标签数量正确。
- 修复检查字段集时的恐慌。
- 修复WAL中的数据竞争。
1.5.0
重大变更
默认的日志格式已更改。有关详细信息,请参阅 Logging and tracing in InfluxDB。
特点
- 改善命令行连接警告。
- 备份工具打印备份文件的列表。
- OSS的备份和恢复以企业兼容的备份格式生成和使用数据。
- 还原在在线模式下运行,并不会删除现有数据库。
- 使用
start和end的导出功能,通过timestamp过滤导出的数据。 - 在TSM引擎中处理高基数删除。
- 提高高基数的内存索引启动性能。
- 为流式传输和复制分片添加更多TSI支持。
- 在成功导入后安排一次全面压缩。
- 添加 Prometheus
/metrics端点。 - 添加生成 shard 摘要的功能。
- 允许在InfluxDB CLI程序中设置节点ID。
错误修复
- 拒绝额外参数到 influx CLI。
- 修复正则表达式运算符后需要的空格。谢谢 @stop-start!
- 修复
panic: sync: WaitGroup is reused before previous Wait has returned. - 修复合并迭代器关闭方法中的竞争条件。
- 修复查询编译,以便允许多个嵌套的distinct调用
- 修复CLI以允许在使用语句中引用数据库名称。
- 当响应主体长度为零时,更新客户端
4xx错误消息。 - 从日志中删除多余的换行。
- 允许在条件表达式中使用单独的布尔字面量。
- 当写入超过
max-values-per-tag或max-series时,提高性能。 - 防止在查询同时完成和被杀死时导致恐慌。
- 修复压缩时按时间排序块时缺少排序的问题。
- 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 破坏性更改部分。
错误修复
- 修复
panic: runtime error: slice bounds out of range在运行dep init时出现的错误
1.4.1
错误修复
- 通过IFQL RPC API修复降序游标和范围查询。
1.4.0
TSI指数
此功能在此版本中仍处于实验阶段。 但是,已经进行了一些改进,并且新的元查询更改将允许更深入地探索此功能,而不是以前可能的那样。目前不推荐用于生产环境。 我们感谢您对该功能的所有反馈。 请继续提供反馈!
重大变更
您不能在子查询中指定与顶层查询不同的 ORDER BY 子句。这个功能从未正常工作过,但并没有被明确禁止。
作为对tsi1索引持续开发的一部分,
对布隆过滤器的实现进行了更改,
用于有效确定系列是否不存在于索引中。
虽然这显著提高了索引的性能并减少了内存消耗,
但在运行数据库的先前版本时创建的现有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。 - 使用分片的数据和WAL目录运行
influx_inspect inmem2tsi工具,将其分别作为-datadir和-waldir。根据步骤(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语句的详细执行计划。 - 改进的压缩调度。
- 支持在Influx CLI中使用Ctrl+C取消正在运行的查询。
- 允许在配置文件中使用可读的人类字节大小。
- 尊重 X-Request-Id/Request-Id 头部。
- 将‘X-Influxdb-Build’添加到http响应头,以便用户可以识别响应是来自OSS服务还是企业服务。
- 所有来自查询或写入的错误都可以通过 X-InfluxDB-Error 头获取,5xx 错误消息将被记录到服务器日志中。
- 添加
parse-multivalue-plugin以允许用户选择 collectd 服务如何处理多值插件。 - 使客户端错误在下游错误上更有帮助。
- 允许在调查服务器问题时禁用恐慌恢复。
- 支持 http 管道化的
/query端点。 - 在读取数据时减少分配。
- 互斥锁配置文件现在可用。
- 批量更新监控服务。
- 使用系统游标进行测量、系列和标签键元查询。
- 解释计划的初始实现。
- 在迭代器成本中包含扫描的缓存值的数量。
- 提高
Include和Exclude函数的性能。 - 报告查询的任务状态。
- 减少分配,通过简化循环来提高
readEntries性能 - 将导入者的日志语句分开到stdout和stderr。
- 提高TSI索引中布隆过滤器的性能。
- 为查询响应添加消息包格式。
- 当没有下限时,隐式决定填充查询的下限。
- 流式
inmem2tsi转换。 - 排序和验证TSI键值插入。
- 处理空的 MeasurementIterator。
- 为客户端导入器添加长行支持。
- 更新到 go 1.9.2。
- InfluxDB 现在使用 MIT 许可版本的 BurntSushi/toml。
错误修复
- 将默认的统计间隔改为1秒,而不是10秒。
- illumos 构建在
syscall.Mmap上失败。 - 防止在不存在的数据库上设置权限。
influxd backup工具现在将日志分开输出到stdout和stderr。感谢 @xginn8!- 删除测量使用了几个GB的磁盘空间。
- 修复CQ的开始和结束时间以使用Unix时间戳。
influxCLI 大小写敏感性。- 为具有时区的连续查询固定时间边界。
- 以CSV格式返回查询解析错误。
- 修复在时区边界发生时的时区偏移。
- 使用
SELECT语句中的时区解析时间文字。 - 减少检查系列基数时的CPU使用率
- 当快照为空时修复备份。
- 光标泄漏,导致在压缩后累积
.tsm.tmp文件。 - 改进条件解析。
- 确保在出错时关闭输入。添加运行时 GC 最终处理程序作为关闭迭代器的额外保护。
- 修复系统迭代器上的合并错误。
- 强制子查询与父查询的排序匹配。
- 修复访问
seriesByID映射的竞争条件。 - 修复调用
SeriesIDsAllOrByExpr时的死锁。 - 修复
influx_inspect export以跳过缺失的文件。 - 减少在表达式中遍历变量引用所需的时间。
- 地址
panic: runtime error: invalid memory address or nil pointer dereference. - 丢弃系列原因:写入失败/写入超时/高内存使用。
- 修复缓存和wal读取器中增大的内存使用。
- 一个OSS只读用户应该能够列出数据库上的测量。
- 确保在删除时可以使用基于时间和标签的条件与tsi1索引。
- 在对子查询结果进行数学运算时防止死锁。
- 修复TSDB中批量处理点的一个小内存泄漏。
- 不要假设
which在安装后脚本中存在。 - 修复新打包输出中缺失的手册页。
- 修复在服务文件中使用
INFLUXD_OPTS。 - 修复 WAL 恐慌:运行时错误:makeslice:容量超出范围。
- 从TSI元函数复制返回的字节。
- 修复在时间范围外删除的数据。
- 修复在压缩过程中错误丢弃的数据。
- 在Collectd、Graphite、openTSDB和UDP关闭期间防止死锁。
- 在服务器退出后删除pidfile。
- 成功读取
InterruptCh时返回query.ErrQueryInterrupted。 - 修复测量索引中的竞争问题。
- 确保保留服务始终移除本地分片。
- 处理读取配置文件时的 utf16 文件。
- 修复
panic: runtime error: slice bounds out of range。
1.3.7
发行说明
通过社区和InfluxCloud识别的错误修复。构建工件现在与v1.3.5一致。
错误修复
- 不要假设
which在安装后脚本中存在。 - 修复在服务文件中使用
INFLUXD_OPTS。 - 修复新打包输出中缺失的手册页。
- 为
useradd添加对 shadow-utils 的 RPM 依赖。 - 修复在使用
delete时删除指定时间范围外的数据 - 修复在压缩过程中错误丢弃的数据。
- 对于在
InterruptCh上成功读取,返回query.ErrQueryInterrupted。 - 从TSI元函数复制返回的字节。
v1.3.6
发行说明
通过社区和InfluxCloud确定的错误修复。
错误修复
- 减少在表达式中遍历变量引用所需的时间。
- 地址
panic: runtime error: invalid memory address or nil pointer dereference. - 修复具有大量分片的集群中缓存和WAL读取器的内存使用增加问题。
- 在对子查询结果进行数学运算时防止死锁。
- 修复在分片和存储引擎中存在的多个竞争条件。
- 修复缓存条目的竞争条件。
发行说明
通过社区和InfluxCloud识别的错误修复。
错误修复
- 修复访问
seriesByID映射的竞争条件。 - 修复调用
SeriesIDsAllOrByExpr时的死锁。
版本1.3.5
发行说明
通过社区和InfluxCloud识别出的漏洞修复。
错误修复
- 修复访问
seriesByID映射的竞争条件。 - 修复调用
SeriesIDsAllOrByExpr时的死锁。
v1.3.4
发行说明
通过社区和InfluxCloud确定的漏洞修复。
错误修复
- 为具有时区的连续查询固定时间边界。
- 修复在时区边界发生时的时区偏移。
- 使用选择语句中的时区解析时间字面量。
- 修复测量丢失未丢弃所有数据的问题。
- 当快照为空时修复备份。
- 消除了游标泄漏,从而在压缩后导致 .tsm.tmp 文件的积累。
- 修复在删除测量和写入时出现的死锁。
- 确保在出错时关闭输入。添加运行时 GC 最终处理程序作为关闭迭代器的额外保护。
- 修复在大型压缩中止时泄漏的临时文件。
v1.3.3
发行说明
通过社区和InfluxCloud识别的错误修复。
错误修复
- 当 NewReaderIterator 创建一个 nilFloatIterator 时,解决了内存泄漏,读取器未关闭。
版本1.3.2
发行说明
通过社区和InfluxCloud识别了小错误修复。
错误修复
- 中断正在进行的TSM压缩。
- 防止在删除系列时占用过多内存。
- 显著提高SHOW TAG VALUES的性能。
版本1.3.1
发行说明
通过社区和InfluxCloud识别了小错误修复。
错误修复
- 确保在压缩被中止时临时TSM文件被清理。
- 解决导致1.3.0无响应的死锁问题。
- 通过 DELETE 后的 INSERT 生成重复点。
- 修复CQ的开始和结束时间以使用Unix时间戳。
版本 1.3.0
发行说明
TSI
版本 1.3.0 标志着新的 InfluxDB 时间序列索引 (TSI) 引擎的首次正式发布。
TSI引擎是InfluxDB中的一个重要技术进步。 它提供了对时间结构合并树引擎的高系列基数问题的解决方案。 使用TSI,系列的数量应该不受服务器硬件内存的限制,并且现有系列的数量对数据库启动时间几乎没有影响。 有关更多信息,请参见保罗·迪克斯的博客文章通往10亿时间序列的路径:InfluxDB高基数索引准备测试。
TSI在1.3版本中默认是禁用的。
要启用TSI,请取消注释index-version设置并将其设置为tsi1。
index-version设置位于配置文件的[data]部分。
接下来,重启您的InfluxDB实例。
[data]
dir = "/var/lib/influxdb/data"
index-version = "tsi1"
连续查询统计
启用时,每当一个连续查询完成时,执行的多个详细信息将被写入内部监控数据库的cq_query测量中(默认是_internal)。感兴趣的标签和字段有
| 标签 / 字段 | 描述 |
|---|---|
db | 数据库名称 |
cq | 连续查询的名称 |
durationNS | 查询执行时间(纳秒) |
startTime | 时间范围的下界 |
endTime | 时间范围的上限 |
pointsWrittenOK | 写入目标测量的点数 |
startTime和endTime是以纳秒为单位的UNIX时间戳。- 写入的点数也包含在CQ日志消息中。
移除
本次发布中,管理用户界面已被移除并无法使用。[admin] 配置部分将被忽略。
配置变更
- 顶级配置
bind-address现在默认值为localhost:8088。以前的默认值只是:8088,导致备份和恢复端口绑定在所有可用接口上(即包括互联网上的公共接口)。
以下新的配置选项可用。
[http] 部分
max-body-size被添加,默认值为 25,000,000,但可以通过将其设置为 0 来禁用。 指定客户端请求主体的最大大小(以字节为单位)。当客户端发送的数据超过 配置的最大大小时,将返回413 Request Entity Too LargeHTTP 响应。
[continuous_queries] 部分
query-stats-enabled被添加,默认值为false。当设置为true时,持续查询执行统计信息将写入默认监控存储。
特点
- 添加WAL同步延迟
- 将分块请求处理重新加入到Go客户端v2
- 允许非管理员用户执行 SHOW DATABASES
- 通过重用 gzip.Writers 来减少内存分配
- 将系统信息添加到 /debug/vars
- 向查询语言中添加模运算符。
- 导入过程中失败的点现在会导致非零退出代码
- 通过 SHOW DIAGNOSTICS 暴露一些配置设置
- 支持在InfluxQL中使用单行和多行注释
- 支持查询的时区偏移
- 在InfluxQL中添加“integral”函数
- 将“non_negative_difference”函数添加到InfluxQL
- 将按位与、或和异或运算符添加到查询语言
- 写入吞吐量/并发改进
- 移除管理员用户界面
- 更新到 go1.8.1
- 添加最大并发压缩限制
- 添加 TSI 支持工具
- 跟踪 HTTP 客户端请求的 /write 和 /query 与 /debug/requests
- 写入和压实稳定性
- 添加新的配置文件端点,用于将所有调试配置文件和查询汇总到一个归档中
- 添加纳秒持续时间字面量支持
- 使用增量聚合器优化 top() 和 bottom()
- 在写结果时保持由 top() 或 bottom() 选择的标签。
- 将CQ统计信息写入
_internal数据库
错误修复
- 几个语句缺少 DefaultDatabase 方法
- 修正配置中HTTP部分的拼写错误 - 共享密钥
- 历史文件在保存到历史记录之前应遮蔽密码
- 当它们相同时,在输出中抑制influx cli的头部
- 在命令行界面中添加分块/块大小作为设置/选项
- 如果没有运行查询,则不要增加连续查询统计
- 禁止在二进制表达式中使用通配符
- 修复当存在多个系列且有空值时的填充(线性)
- 更新线性依赖以处理 docker exec
- 默认将备份和恢复端口绑定到localhost
- 终止查询未终止查询
- KILL QUERY 应该在查询的所有阶段都能工作
- 简化管理员用户检查。
- 显著提升 DROP DATABASE 的速度
- 当解析无效的持续时间字面量时返回错误
- 当选择确切的时间戳时修复时间范围
- 修复查询解析器在使用没有空格的加法和减法时的问题
- 修复在使用选择器时出现的回归
- 确保查询引擎中某些函数的输入是有序的
- 显著提高高基数数据库的关机速度
- 修复竞争条件的集成测试
- 防止在窗口计算中出现溢出或下溢
- 为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 临时文件在磁盘上泄露
- 修复大型字段密钥以防止快照压缩
- URL 查询参数凭证优先于认证头
- TSI 分支有重复的标签值
- 使用HTTP API时内存不足
- 在尝试进行TSI级别压缩之前检查文件数量。
- tsi分支中的索引文件fd泄漏
- 修复TSI非连续压缩恐慌
版本1.2.4
错误修复
- 在其他子系统中,用
partial write:前缀部分写入错误,以便于识别。
v1.2.3
错误修复
- 在保存密码到历史文件之前进行脱敏处理。
- 向多个 InfluxQL 语句添加缺失的 DefaultDatabase 方法。
- 修复 models.Tags.Get 中的段错误。
- 简化管理员用户检查。
- 修复了在使用选择器时数学运算的回归问题。
- 确保查询引擎中某些函数的输入是有序的。
- 修复删除的
time字段键创建不可解析点的问题。
版本1.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
发行说明
错误修复
- 将带下划线的非保留测量名称视为普通测量。
- 在子查询中简化表达式以避免恐慌。
- 在子查询中正确选择标签。
- 防止在使用原始查询的内部查询中使用聚合时出现恐慌。
- 压缩后缺少的点。
- Point.UnmarshalBinary() 边界检查。
- 接口转换:tsm1.Value 是 tsm1.IntegerValue,而不是 tsm1.FloatValue。
- 使用正则表达式并且其中一个测量值为空时正确映射类型。
- 在选择具有多个测量的字段时,正确映射类型,其中一项测量为空。
- 在元查询的重写语句中包含 IsRawQuery。
- 修复 WALEntry.Encode 和 Values.Deduplicate 中的竞争
- 修复当配置从目录读取类型数据库时在collectd中的恐慌。
- 修复按时间降序排序的系列键。
- 修复当测量使用正则表达式时类型的映射。
- 修复在子查询中使用LIMIT和OFFSET时的问题。
- 修正使用不同时间发出聚合时的不正确数学计算。
- 在使用括号表达式时修复 EvalType。
- 修复当存在子查询时的身份验证问题。
- 从子查询中扩展查询维度。
- 将具有不同输出的聚合函数进行划分不会引发恐慌。
- 锚点在不区分大小写的正则表达式下未按预期工作。
版本1.2.0
发行说明
此次发布引入了一种主要的新查询功能,即子查询,并提供了若干性能改进,包括在更多核心上写入性能提高50%或更好。该版本增加了一些稳定性和内存相关的改进,以及若干与CLI相关的bug修复。如果从先前版本升级,请在升级前阅读以下部分的配置变更。
配置变更
如果从先前版本升级到 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添加清除命令。
- 在v2客户端中使用
Query结构体中的Parameters映射添加使用参数进行查询的功能。 - 允许通过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 返回 “未知的精度...”。
- 修复缺少标签值时解析关键字引发的恐慌。
- 保留政策不应允许
INF或0作为分片持续时间。 - 在解码点值时返回错误,而不是崩溃。
- 修复修剪分片组时的切片越界惊慌。
- 删除数据库将删除 /influxdb/data 目录。
- 确保可以禁用订阅者服务。
- 修复存储引擎中的竞争条件。
- 当类型不匹配错误时,InfluxDB 应该执行部分写入。
版本1.1.5
错误修复
- 在保存密码到历史文件之前进行脱敏处理。
- 向多个 InfluxQL 语句添加缺失的 DefaultDatabase 方法。
v1.1.4
错误修复
- 从1.2.0回溯:减少GC分配。
版本1.1.3
错误修复
- 删除 Tags.shouldCopy,在系列创建时用 forceCopy 替换。
版本 1.1.2
错误修复
- 修复通过HTTP写入新系列时的内存泄漏。
- 修复系列标签迭代段错误。
- 修复标签解引用引发的恐慌。
版本1.1.1
特点
- 将Go版本更新为1.7.4。
错误修复
- 修复带有尾部斜杠的字符串字段。
- 将空字符串引用为标识符。
- 修复错误消息中的不正确标签值。
安全
Go 1.7.4 发布是为了解决两个安全问题。此次发布包含这些安全修复。
版本1.1.0
发行说明
此版本是使用 GoLang 1.7.3 构建的,提供了许多性能优化、稳定性变化以及一些新的查询功能。如果您从之前的版本升级,请在升级前阅读下面的配置变更部分。
弃用
管理员界面已被废弃,将在后续版本中删除。 启用管理员UI的配置设置现在默认禁用,但如有必要可以启用。 我们建议使用 Chronograf 或 Grafana 作为替代。
配置变更
在从之前的版本升级到 1.1.0 之前,可能需要更改以下配置。
[admin] 部分
enabled现在默认为 false。如果您当前使用的是管理界面,您需要将此值更改为true以重新启用它。管理界面目前已被弃用,将在后续版本中删除。
[data]部分
max-values-per-tag被添加,默认值为 100,000,但可以通过设置为0来禁用。超出此限制的现有带标签的测量将继续加载,但会因导致标签基数增加的写入操作被丢弃,并且将返回partial write错误给调用者。这个限制可以用来防止高基数标签值被写入测量。cache-max-memory-size已从524288000增加到1048576000。此设置是分片缓存可以使用的最大内存量(以字节为单位),在超过此值后,它将拒绝写入并返回错误。将此值设置为0将禁用限制。cache-snapshot-write-cold-duration已从1h减少到10m。这个设置决定了当分片在写入时处于冷态时,值将在分片缓存中停留多长时间。compact-full-write-cold-duration已从24h减少到4h。更短的持续时间使冷分片能够更快地压缩到最佳状态。
特点
查询语言已经扩展了一些新特性:
- 支持在选择子句中的字段键上使用正则表达式。
- 新的
linear填充选项。 - 新的
cumulative_sum函数。 - 支持
ON用于SHOW命令。
所有更改:
- 过滤掉在分片中没有该系列数据的系列。
- 将形式为 host = /^server-a$/ 的正则表达式重写为 host = ‘server-a’,以利用 tsdb 索引。
- 通过缓存 tsm 文件统计信息来改善压缩规划性能。
- 按时间对齐二进制数学表达式流。
- 在计算测量的TagSet时减少map分配。
- 使输入插件服务的打开/关闭具有幂等性。
- 通过并行关闭分片来加快关机速度。
- 添加示例函数以查询语言。
- 将
fill(linear)添加到查询语言中。 - 实现 cumulative_sum() 函数。
- 更新配置中的默认值以符合最新最佳实践。
- UDP 客户端:分割大点。
- 为活跃的压缩、压缩错误添加统计信息。
- 我们打包的其他工具的更多手册页,并完全压缩手册页。
- 添加 max-values-per-tag 以限制高标签基数数据。
- 将 jwt-go 依赖更新到版本 3。
- 支持通过unix域套接字启用HTTP服务。
- 向查询执行器添加额外的统计信息。
- 功能请求:
influx inspect -export应该导出WAL文件。 - 为响应写入器实现文本/csv内容编码。
- 支持运行异步查询的工具。
- 支持 ON 并为 SHOW 命令使用默认数据库。
- 正确地从非交互式流中读取CLI的输入。
- 支持
INFLUX_USERNAME和INFLUX_PASSWORD在CLI中设置用户名/密码。 - 在没有分组间隔时优化首次/最后一次。
- 在SELECT子句中对字段和维度键使用正则表达式。
- 更改原始查询的默认时间边界。
- 支持混合持续时间单位。
错误修复
- 达到
max-row-limit时避免死锁。 - 修复在稀疏数据中使用多个聚合时的不正确分组。
- 修复 SHOW QUERIES 的输出持续时间单位。
- 在链接到文档时,截断版本字符串。
- influx_inspect: 导出不对字段键进行转义。
- 修复点被写入错误分片的问题。
- 修复保留策略的不一致性。
- 移除意外添加的字符串支持用于stddev调用。
- 删除 /data/process_continuous_queries 端点。
- 启用 https 订阅以与自定义 CA 证书一起使用。
- 减少查询规划分配。
- 分片统计信息包括WAL路径标签,因此磁盘字节更加合理。
- 在删除数据库时遇到未读的显示系列迭代器的恐慌。
- 为列格式的响应使用一致的列输出来自CLI。
- 在管理员界面正确使用密码类型字段。
- 在 ALTER RETENTION POLICY 中存在重复解析错误。
- 修复在删除分片时数据库被锁定的问题。
- 修复mmap解引用。
- 修复 /debug/vars 统计信息的 base64 编码问题。
- 丢弃测量导致缓存最大内存超出错误。
- 仅在删除测量的最后一组时减少测量次数一次。
- 当指定保留策略或数据库时,删除语句会返回错误。
- 修复美元符号,以便它正确处理保留关键字。
- 超过最大保留策略持续时间会给出不正确的错误消息。
- 当作为标签或字段键使用时,丢弃时间。
版本1.0.2
错误修复
- 修复RLE整数解码产生负数的问题。
- 在计划压缩时避免使用 stat 系统调用。
- 在高写入负载下,订阅数据丢失。
- 在使用 ALTER RETENTION POLICY 时不要自动重置分片持续时间。
- 确保在保留策略被更改时正确创建分片组。
版本1.0.1
错误修复
- 防止用户手动使用系统查询,因为不正确的使用会导致系统崩溃。
- 确保在分片测量中有可用的fieldsCreated状态。
- 在 /debug/vars 中报告命令行和内存统计信息。
- 修复示例配置文件中的拼写错误。
- 为懒时间文字实现时间数学。
- 修复在删除分片时数据库被锁定的问题。
- 在合并系列中,在导数调用中跳过同时的点。
- 将无效的JSON响应作为Influx客户端中的错误进行读取。
版本1.0.0
发行说明
InfluxDB的初始发布。
重大变更
max-series-per-database的默认值为 1M,但可以通过设置为0来禁用。现有的数据库如果有超出此限制的系列将继续加载,但创建新系列的写入将会失败。- 配置选项
[cluster]已被[coordinator]替代。 - 已删除对配置选项
[collectd]和[opentsdb]的支持;请使用[[collectd]]和[[opentsdb]]。 - 配置选项
data-logging-enabled在[data]部分已重命名为trace-logging-enabled,默认值为false。 - 此版本已移除关键字
IF、EXISTS和NOT。这意味着您不再需要为DROP DATABASE指定IF NOT EXISTS,或为CREATE DATABASE指定IF EXISTS。如果指定了这些,将返回查询解析错误。 - The Shard
writePointsFail状态已重命名为writePointsErr以与其他状态保持一致。
在此版本中,InfluxDB的systemd配置文件将使用系统配置的默认日志记录,并且默认情况下将不再写入文件到 /var/log/influxdb。在大多数系统中,日志将被定向到systemd日志,并可以通过 journalctl -u influxdb.service 访问。有关配置journald的信息,请参阅systemd journald文档。
特点
- 添加模式函数。
- 支持负时间戳用于查询引擎。
- 写入路径统计。
- 添加 MaxSeriesPerDatabase 配置设置。
- 从influxql语言中移除IF EXISTS/IF NOT EXISTS。
- 更新 go 包的库依赖。
- 将tsm文件导出添加到influx_inspect工具。
- 为命令创建手册页。
- 当身份验证成功但授权失败时返回403禁止访问。
- 添加了favicon。
- 为多个存储桶运行连续查询,而不是每个存储桶运行一个。
- 当启用持续查询日志时,记录CQ执行时间。
- 从Windows记事本保存的配置文件中删除BOM。
- 更新帮助并从配置文件中删除未使用的配置选项。
- 将 NodeID 添加到执行选项。
- 使httpd记录器更接近于公共(& 合并)日志格式。
- 允许任何帮助选项的变体触发帮助。
- 减少查询解析期间的分配。
- 优化时间戳运行长度解码。
- 添加监控统计信息以获取磁盘上的分片大小。
- 添加基于HTTP(s)的订阅。
- 将新的HTTP统计信息添加到监控中。
- 加快删除数据库。
- 添加霍尔特-温特预测函数。
- 添加对JWT令牌认证的支持。
- 添加创建分片快照的功能。
- 并行化迭代器。
- 教 http 服务如何强制执行连接限制。
- 支持选择特定类型的类型转换语法。
- 重构监控服务以避免expvar,并在缩短的时间间隔上写入监控统计信息。
- 动态更新管理员界面中的文档链接。
- 支持聚合函数中的通配符。
- 支持为图表服务指定保留策略。
- 为tsm引擎添加额外的跟踪日志。
- 为TSM引擎添加统计信息和诊断。
- 支持在SHOW TAG VALUES中对键进行正则选择。
- 修改默认保留策略名称并使其可配置。
- 更新SHOW FIELD KEYS以返回与字段键对应的字段类型。
- 支持解析器中的绑定参数。
- 向 httpd 配置添加 https-private-key 选项。
- 支持加载一个文件夹用于collectd类型数据库文件。
错误修复
- 优化将标签值与空字符串进行比较的查询。
- 允许在行协议输入中使用空行。
- 运行时:goroutine 栈超过 1000000000 字节限制。
- 修复在使用所有选项时更改保留策略的问题。
- 并发系列限制。
- 确保在influx_inspect导出中关闭gzip写入器。
- 修复处理默认值时的创建数据库。
- 修复UDP pointsRx被递增两次的问题。
- 墓碑内存改进。
- 将硬编码自动生成的RP名称设置为autogen。
- 确保在管理连续查询时ID不会冲突。
- 持续的完整压缩。
- 从 walkShards 中移除限制器。
- 复制 influx_stress 中的标签,以避免在映射上出现并发写入恐慌。
- 不要运行没有时间跨度的连续查询。
- 通过分组偏移量移动CQ间隔。
- 修复解析空键时的恐慌。
- 在CLI中更改主机时更新连接设置。
- 在输出新配置时始终使用演示配置。
- 对初始化脚本进行小幅改进。移除了sysvinit-utils作为软件包依赖。
- 修复大TSM文件的压缩计划。
- 相同时间戳的重复数据。
- 修复 Panic:在合并缓存时截断切片。
- 修复测量的正则表达式二进制编码。
- 修复与数学运算符一起使用时的填充(previous)。
- 在 influx_inspect 中将 dumptsmdev 重命名为 dumptsm。
- 移除tsm1索引写入器中的双重锁定。
- 从TSDB包中移除FieldCodec。
- 允许非管理员调用“use”用于influx CLI。
- 在创建空条件游标时,设置条件游标而不是辅助迭代器。
- 更新
stress/v2以支持集群、ssl 和用户名/密码身份验证。代码清理。 - 将最大纳秒时间修改为少一纳秒。
- 将sysvinit-tools作为rpm依赖包包含。
- 向所有的 graphite 日志输出添加端口,以帮助调试多个端点。
- 修复恐慌:运行时错误:索引超出范围。
- 移除systemd输出重定向。
- 在DROP MEASUREMENT之后数据库无响应。
- 删除度量时出现内存不足错误。
- 修复点验证解析器以正确识别和排序标签。
- 防止并发认证缓存写入时的恐慌。
- 在每个请求上设置 X-Influxdb-Version 头部(即使是 404 请求)。
- 如果没有值,则防止恐慌。
- 时间排序因覆盖点而出现问题。
- 看起来像日期的字符串查询最终会得到日期类型,而不是字符串类型。
- 并发地图读写崩溃。
- 删除保留政策时间窗口之前的写入。
- 修复SELECT语句所需的权限。
- 过滤掉不匹配分片数据库/保留策略的来源。
- 如果超过 MaxNanoTime,则截断分片组结束时间。
- 批量选择到 / CQ 写入。
- 修复压缩计划,重新压缩大型TSM文件。
- 确保客户端在插入点时发送正确的精度。
- 接受带有尾随空格的点。
- 修复在显示字段键时的恐慌。
- 在使用汇总时禁用限制优化。
- 修复恐慌:接口转换:tsm1.Value 是 *tsm1.StringValue,而不是 *tsm1.FloatValue。
- 在写入数据库后立即删除数据库时会发生数据竞争。
- 在验证查询之前,请确保管理员存在。
- 在出现恐慌时将查询执行器的堆栈跟踪打印到日志中。
- 修复读取墓碑:文件结束。
- 配置中的查询日志启用不再被忽略。
- 确保请求gzip编码主体的客户端不会收到空主体。
- 优化分片加载。
- 在覆盖点后,查询速度下降了数百倍。
- SHOW TAG VALUES 在 WHERE 子句中接受 != 和 !~。
- 移除旧的集群代码。
- 确保在SHOW查询中考虑将来的点。
- 修复全量压缩与层级压缩冲突的问题。
- 在大系列上覆盖点可能会导致压缩期间内存峰值。
- 修复parseFill以在尝试解析表达式之前检查填充标识。
- 最大索引条目超过。
- 解决启动时间缓慢的问题。
- 修复tsm1引擎中的测量字段崩溃。
- 对刚刚压缩过的文件的查询需要指向新文件。
- 在创建CQ之前,请检查保留策略是否存在。