从InfluxDB导出数据

Sri*_*nta 23 influxdb

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

Amm*_*mad 33

出口数据:

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

grpcdb是DB的名称,在这种情况下,备份将保存在/ 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
Run Code Online (Sandbox Code Playgroud)

  • 在处理海量数据库时,这实际上是唯一可行的方法. (2认同)

小智 19

您可以转储每个表并通过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"
Run Code Online (Sandbox Code Playgroud)

或者,您是否想要将新主机添加到群集?它很简单,你将免费获得master-master复制品.群集设置

  • 或者`curl -G'http:// hosta:8086/query?' --data-urlencode"db = dbname"--data-urlencode"q = SELECT*FROM series_name" (2认同)

小智 15

正如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"
Run Code Online (Sandbox Code Playgroud)

(Ezotrank,对不起,我会直接在你的答案上发表评论,但我还没有足够的声誉点来做到这一点.)


non*_*ont 14

如果我使用卷曲,我会得到超时,如果我使用influxd backup它不是我可以阅读的格式.

我得到了这样的好结果:

influx -host influxdb.mydomain.com -database primary -format csv -execute "select time,value from \"continuous\" where channel='ch123'" > outtest.csv
Run Code Online (Sandbox Code Playgroud)


小智 6

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

sudo influx_inspect export -waldir /var/lib/influxdb/wal -datadir /var/lib/influxdb -out "influx_backup.db" -database HomeData
Run Code Online (Sandbox Code Playgroud)

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

要再次导入此文件,命令为:

influx -import -path=influx_backup.db
Run Code Online (Sandbox Code Playgroud)


Bos*_*Man 5

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


Neo*_*Neo 5

从那时1.5起,InfluxDB OSS备份实用程序提供了一个更新的选项,该选项更加方便:

-portable:以较新的InfluxDB Enterprise兼容格式生成备份文件。强烈建议所有InfluxDB OSS用户使用

出口

备份所有内容:

influxd backup -portable <path-to-backup>
Run Code Online (Sandbox Code Playgroud)

要仅备份myperf数据库:

influxd backup -portable -database myperf <path-to-backup>
Run Code Online (Sandbox Code Playgroud)

进口

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

influxd restore -portable <path-to-backup>
Run Code Online (Sandbox Code Playgroud)

要仅还原myperf数据库(myperf数据库必须不存在):

influxd restore -portable -db myperf <path-to-backup>
Run Code Online (Sandbox Code Playgroud)

其他选项包括指定timestampshard等看到所有的其他支持的选项在这里