Documentation

从 InfluxDB OSS 复制数据

使用 InfluxDB 复制流(InfluxDB 边缘数据复制)将选择的桶的输入数据复制到一个或多个远程 InfluxDB OSS、InfluxDB Cloud 或 InfluxDB Enterprise 实例上的桶中。

将数据从 InfluxDB OSS 复制到 InfluxDB Cloud、InfluxDB OSS 或 InfluxDB Enterprise。

配置复制流

使用influx CLIInfluxDB Cloud API 来配置复制流。

要将数据复制到 InfluxDB OSS 或 InfluxDB Enterprise,请相应地调整远程连接值。

  1. 在您的 InfluxDB OSS 实例中,使用 influx remote create 命令创建一个远程连接以复制数据。

    提供以下内容:

    • 远程连接名称
    • InfluxDB Cloud 区域 URL
    • InfluxDB Cloud API 令牌 (API 令牌必须对目标存储桶具有写入权限)
    • InfluxDB Cloud 组织 ID
    influx remote create \
      --name example-remote-name \
      --remote-url https://cloud2.influxdata.com \
      --remote-api-token mYsuP3r5Ecr37t0k3n \
      --remote-org-id 00xoXXoxXX00
    

    如果您已经配置了远程 InfluxDB 连接,您可以使用现有连接。要查看现有连接,请运行 influx remote list

  2. 在您的 InfluxDB OSS 实例中,使用 influx replication create 命令来创建一个复制流。

    提供以下内容:

    • 复制流名称
    • 远程连接 ID
    • 要复制写入的 InfluxDB OSS 存储桶 ID
    • 用于复制写入的 InfluxDB Cloud 桶 ID
    influx replication create \
      --name REPLICATION_STREAM_NAME \
      --remote-id REPLICATION_REMOTE_ID \
      --local-bucket-id INFLUX_BUCKET_ID \
      --remote-bucket REMOTE_INFLUX_BUCKET_NAME
    

一旦创建了复制流,InfluxDB 将会将所有写入复制到指定的存储桶到 InfluxDB Cloud 存储桶。使用 influx replication list 命令查看当前队列大小、最大队列大小和最新状态代码等信息。

  1. 向您的 InfluxDB OSS /api/v2/remotes 端点发送 POST 请求,以创建一个远程连接以复制数据。

    POST localhost:8086/api/v2/remotes

    在您的请求中包含以下内容:

    • 请求方法: POST
    • 头部:
      • 授权: Token 方案与您的 InfluxDB OSS API 令牌
      • 内容类型: application/json
    • 请求体: 包含以下字段的 JSON 对象:
      * 必填
      • * allowInsecureTLS: 所有不安全的 TLS 连接
      • description: 远程描述
      • * name: 远程连接名称
      • * orgID: InfluxDB OSS 组织 ID
      • * remoteAPIToken: InfluxDB Cloud API 令牌 (API 令牌必须具有对目标存储桶的写入权限)
      • * remoteOrgID: InfluxDB Cloud 组织 ID
      • * remoteURL: InfluxDB Cloud 区域 URL
    curl --request POST http://localhost:8086/api/v2/remotes \
      --header 'Authorization: Token INFLUX_OSS_TOKEN' \
      --data '{
        "allowInsecureTLS": false,
        "description": "Example remote description",
        "name": "Example remote name",
        "orgID": "INFLUX_OSS_ORG_ID",
        "remoteAPIToken": "REMOTE_INFLUX_TOKEN",
        "remoteOrgID": "REMOTE_INFLUX_ORG_ID",
        "remoteURL": "https://cloud2.influxdata.com"
      }'
    

    如果您已经配置了远程 InfluxDB 连接,您可以使用现有的连接。要查看现有连接,请使用 /api/v2/remotes 端点和 GET 请求方法。

    GET localhost:8086/api/v2/remotes

    在您的请求中包含以下内容:

    • 请求方法: GET
    • 头部:
      • 授权: Token 方案以及您的 InfluxDB OSS API token
    • 查询参数:
      • orgID: InfluxDB OSS 组织ID
    curl --request GET \
      http://localhost:8086/api/v2/remotes?orgID=INFLUX_OSS_ORG_ID \
      --header 'Authorization: Token INFLUX_OSS_TOKEN' \
    
  2. 向您的 InfluxDB OSS /api/v2/replications 端点发送一个 POST 请求以创建一个复制流。

    POST localhost:8086/api/v2/remotes

    在您的请求中包含以下内容:

    • 请求方法: POST
    • 头部:
      • 授权: Token 方案与您的 InfluxDB OSS API 令牌
      • 内容类型: application/json
    • 请求体: 带有以下字段的 JSON 对象: * 必需
      • dropNonRetryableData: 当遇到不可重试的错误时丢弃数据。
      • * localBucketID: 需要从中复制写入的 InfluxDB OSS 存储桶 ID。
      • * maxAgeSeconds: 数据在被丢弃之前的最大年龄(以秒为单位,默认值为 604800,必须大于或等于 0)。
      • * maxQueueSizeBytes: 复制队列的最大大小(以字节为单位,默认值为 67108860,必须大于或等于 33554430)。
      • * name: 复制流名称。
      • * orgID: InfluxDB OSS 组织 ID。
      • * remoteBucketID: 需要复制写入到的 InfluxDB Cloud 存储桶 ID。
      • * remoteBucketName: 需要复制写入到的 InfluxDB Cloud 存储桶名称。
      • * remoteID: 远程连接 ID

remoteBucketIDremoteBucketName 是互斥的。

curl --request POST http://localhost:8086/api/v2/replications \
  --header 'Authorization: Token INFLUX_OSS_TOKEN' \
  --data '{
    "dropNonRetryableData": false,
    "localBucketID": "INFLUX_OSS_BUCKET_ID",
    "maxAgeSeconds": 604800,
    "maxQueueSizeBytes": 67108860,
    "name": "Example replication stream name",
    "orgID": "INFLUX_OSS_ORG_ID",
    "remoteBucketName": "REMOTE_INFLUX_BUCKET_NAME",
    "remoteID": "REMOTE_ID",
  }'

一旦创建了复制流,InfluxDB将把指定本地桶中的所有写入复制到InfluxDB Cloud桶中。要获取有关每个复制流的信息,例如当前队列大小、最大队列大小和最新状态代码,请向您的InfluxDB OSS /api/v2/replications端点发送GET请求。

GET localhost:8086/api/v2/replications

在您的请求中包含以下内容:

  • 请求方法: GET
  • 头部:
    • 授权: Token 方案与您的 InfluxDB OSS API token
  • 查询参数:
    • orgID: InfluxDB OSS 组织 ID
curl --request GET \
  http://localhost:8086/api/v2/replications?orgID=INFLUX_OSS_ORG_ID \
  --header 'Authorization: Token INFLUX_OSS_TOKEN' \

需要注意的重要事项

  • 只有写操作会被复制。其他数据操作(如删除或恢复)不会被复制。
  • 在InfluxDB OSS中,大的写入请求体会被完整地写入。当进行复制时,写入请求会分批发送到远程存储桶。最大的批量大小是500 kB(通常在250到500行行协议之间)。这可能导致某些批次成功而其他批次失败的情况。

复制降采样或处理后的数据

在某些情况下,您可能不想将原始的高精度数据写入远程的 InfluxDB Cloud 实例。要仅复制降采样或处理过的数据:

  1. 在您的 InfluxDB OSS 实例中创建一个 bucket,以存储降采样或处理过的数据。

  2. 创建一个InfluxDB任务,该任务对数据进行降采样或处理,并将其存储在新的存储桶中。例如:

    import "influxdata/influxdb/tasks"
    import "types"
    
    // omit this line if adding task via the UI
    option task = {name: "Downsample raw data", every: 10m}
    
    data = () => from(bucket: "example-bucket")
        |> range(start: tasks.lastSuccess(orTime: -task.every))
    
    numeric = data()
        |> filter(fn: (r) => types.isType(v: r._value, type: "float") or types.isType(v: r._value, type: "int") or types.isType(v: r._value, type: "uint"))
        |> aggregateWindow(every: task.every, fn: mean)
    
    nonNumeric = data()
        |> filter(fn: (r) => types.isType(v: r._value, type: "string") or types.isType(v: r._value, type: "bool"))
        |> aggregateWindow(every: task.every, fn: last)
    
    union(tables: [numeric, nonNumeric])
        |> to(bucket: "example-downsampled-bucket")
    
  3. 创建一个复制流以将数据从降采样桶复制到远程 InfluxDB Cloud 实例。

查看 InfluxDB OSS 复制服务指标

除了您可以使用CLIAPI访问的复制流信息,您还可以查看InfluxDB OSS实例的复制服务级别指标,例如/api/v2/write错误详细信息、对服务的调用次数和持续时间,以及排队的点的总数。

要查看复制服务级别指标,请向您的本地 InfluxDB OSS /metrics 端点发送 GET 请求。

有关更多信息,请参见 InfluxDB OSS metrics



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 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

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

由TSM驱动的InfluxDB Cloud