Documentation

排除写入数据的问题

学习如何避免在写入 InfluxDB Cloud Serverless 时出现意外结果和从错误中恢复。

处理写入响应

当您发送写入请求时,InfluxDB Cloud Serverless 会执行以下操作:

  1. 验证请求。

  2. 如果成功,则尝试从请求体中摄取数据;否则,返回错误状态

  3. 从批次中摄取或拒绝数据,并返回以下HTTP状态码之一:

    • 204 No Content: 所有数据已被摄取并可查询。
    • 400 Bad Request: 某些或所有数据已被拒绝。未被拒绝的数据已被接收并可查询。

    响应主体包含关于拒绝的点的错误详细信息,最多100个点。

写操作是同步的——响应状态表示写操作的最终状态,所有摄取的数据都是可查询的。

为了确保 InfluxDB 按照您请求的顺序处理写入,发送下一个请求之前请等待响应。

查看HTTP状态码

InfluxDB使用常规HTTP状态码来指示请求的成功或失败。 响应正文的message属性可能包含关于错误的其他详细信息。 InfluxDB Cloud Serverless对于写入请求返回以下HTTP状态码之一:

HTTP 响应代码响应体描述
204 "No Content"无响应正文如果InfluxDB处理了批量中的所有数据
400 "Bad request"被拒绝点的错误详情,最多100个点:line包含第一个被拒绝的行,message描述被拒绝的原因如果某些或所有请求数据不被允许(例如,格式错误或超出了存储桶的保留期限)–响应体指示是否发生了部分写入,或者所有数据是否被拒绝
401 "Unauthorized"如果 Authorization 头缺失或格式不正确,或者如果 token 没有 permission 写入存储桶的权限。请参见写请求中的 examples using credentials
404 "未找到"请求的 资源类型(例如,“组织”或“存储桶”)和 资源名称如果请求的资源(例如,组织或存储桶)未找到
413 “请求过大”无法读取数据:批次中的点数过大如果请求超过了最大 全局限制
429 “请求过多”如果请求数量超过了可调整的服务配额Retry-After头部包含在再次尝试写入之前需要等待的秒数。
500 "内部服务器错误"错误的默认状态
503 "服务不可用"如果服务器暂时无法接受写入。Retry-After头包含在再次尝试写入之前要等待的秒数。

响应体的 message 属性可能包含有关错误的附加详细信息。 如果您的数据未写入桶中,请查看如何 排查被拒绝的点

故障排除

如果您注意到数据库中缺少数据,请执行以下操作:

排查被拒绝的要点

在从批次写入点时,InfluxDB会拒绝具有语法错误或模式冲突的点。 如果InfluxDB处理了您批次中的数据,然后拒绝了点,HTTP响应主体包含以下描述被拒绝点的属性:

  • code: "无效"
  • line: 批处理中第一个被拒绝点的行号。
  • message: 一个包含分行错误信息的字符串,每个被拒绝的点都有一个信息,最多可包含100个被拒绝的点。

InfluxDB 因以下原因拒绝数据点:

  • 行协议解析错误
  • 无效的时间戳
  • 模式冲突

当您尝试写入包含以下任何内容的数据时,会发生架构冲突:

  • 错误的数据类型:该点落在与现有桶数据相同的分区内(默认分区为测量和天),并且包含现有字段的不同数据类型
  • 具有相同键的标签和字段

示例

以下示例展示了一个写请求的响应体,其中包含两个被拒绝的点:

{
  "code": "invalid",
  "line": 2,
  "message": "failed to parse line protocol:
              errors encountered on line(s):
              error parsing line 2 (1-based): Invalid measurement was provided
              error parsing line 4 (1-based): Unable to parse timestamp value '123461000000000000000000000000'"
}

检查被拒绝的数据点与同一数据库和分区内的点之间的 字段数据类型 差异——例如,您是否尝试将 string 数据写入 int 字段?



Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看:

InfluxDB 云端无服务器