【问题标题】:Export data from InfluxDB从 InfluxDB 导出数据
【发布时间】:2015-03-02 23:41:55
【问题描述】:

有没有办法(插件或工具)从数据库(或数据库本身)导出数据?我正在寻找此功能,因为我需要将数据库从当前主机迁移到另一个主机。

【问题讨论】:

    标签: influxdb


    【解决方案1】:

    导出数据:

    sudo service influxdb start (Or leave this step if service is already running)
    influxd backup -database grpcdb /opt/data  
    

    grpcdb 是数据库的名称,在这种情况下备份将保存在 /opt/data 目录下。

    导入数据:

    sudo service influxdb stop  (Service should not be running)
    influxd restore -metadir /var/lib/influxdb/meta /opt/data
    influxd restore -database grpcdb -datadir /var/lib/influxdb/data /opt/data
    sudo service influxdb start
    

    【讨论】:

    • 在处理海量数据库时,这确实是唯一可行的方法。
    • 是的,假设 OP 正在迁移到另一个 InfluxDB 主机(希望是相同的版本)而不是其他类型的数据库
    • N.B.1 有一种新的(更好的)数据备份/恢复机制,请参阅docs.influxdata.com/influxdb/v1.7/administration/… N.B.2。导入数据后,确保/var/lib/influxdb 再次归influxdb:influxdb 所有,即运行sudo chown -R influxdb:influxdb /var/lib/influxdb
    【解决方案2】:

    您可以转储每个表并通过 REST 接口加载它们:

    curl "http://hosta:8086/db/dbname/series?u=root&p=root&q=select%20*%20from%20series_name%3B" > series_name.json
    curl -XPOST -d @series_name.json "http://hostb:8086/db/dbname/series?u=root&p=root"
    

    或者,也许您想将新主机添加到集群?这很容易,您将免费获得主-主副本。 Cluster Setup

    【讨论】:

    【解决方案3】:

    如果我使用 curl,我会超时,如果我使用 influxd backup,它不是我可以阅读的格式。

    我得到了这样的好结果:

    influx -host influxdb.mydomain.com -database primary -format csv -execute "select time,value from \"continuous\" where channel='ch123'" > outtest.csv
    

    【讨论】:

      【解决方案4】:

      正如 ezotrank 所说,您可以转储每个表。不过,ezotrank 的答案中缺少一个“-d”。应该是:

      curl "http://hosta:8086/db/dbname/series?u=root&p=root&q=select%20*%20from%20series_name%3B" > series_name.json
      curl -XPOST -d @series_name.json "http://hostb:8086/db/dbname/series?u=root&p=root"
      

      (Ezotrank,抱歉,我会直接对你的回答发表评论,但我还没有足够的声望点来做这件事。)

      【讨论】:

      • 不能在最新版本的 influxdb 中使用。
      【解决方案5】:

      1.5 开始,InfluxDB OSS 备份实用程序提供了一个更方便的新选项:

      -portable:以更新的 InfluxDB Enterprise 兼容格式生成备份文件。强烈推荐给所有 InfluxDB OSS 用户

      导出

      备份所有内容:

      influxd backup -portable <path-to-backup>
      

      仅备份 myperf 数据库:

      influxd backup -portable -database myperf <path-to-backup>
      

      导入

      要恢复在备份目录中找到的所有数据库:

      influxd restore -portable <path-to-backup>
      

      仅恢复 myperf 数据库(myperf 数据库不得存在):

      influxd restore -portable -db myperf <path-to-backup>
      

      其他选项包括指定timestampshard 等。查看所有其他支持的选项here

      【讨论】:

        【解决方案6】:

        如果您想以可读格式导出,则首选检查命令。 要导出名为 HomeData 的数据库,命令是:

        sudo influx_inspect export -waldir /var/lib/influxdb/wal -datadir /var/lib/influxdb -out "influx_backup.db" -database HomeData
        

        -waldir 和 -datdir 的参数可以在 /etc/influxdb/influxdb.conf 中找到。

        要再次导入这个文件,命令是:

        influx -import -path=influx_backup.db
        

        【讨论】:

          【解决方案7】:

          如果您可以访问运行 Influx db 的机器,我会说使用 influx_inspect 命令。该命令简单且非常快速。它会将您的数据库转储到line protocol。然后,您可以使用influx -import 命令导入此转储。

          【讨论】:

          • 这个(转储和恢复)必须为每个分片单独完成,对吧?
          猜你喜欢
          • 2020-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-21
          • 1970-01-01
          • 2017-08-28
          • 2022-06-17
          相关资源
          最近更新 更多