35

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

4

7 回答 7

41

导出数据:

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
于 2016-10-07T17:48:55.857 回答
22

您可以转储每个表并通过 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"

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

于 2015-01-13T01:27:27.920 回答
19

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

我得到了这样的好结果:

influx -host influxdb.mydomain.com -database primary -format csv -execute "select time,value from \"continuous\" where channel='ch123'" > outtest.csv
于 2017-02-21T21:55:14.047 回答
18

正如 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,对不起,我会直接在你的答案上发表评论,但我还没有足够的声望点来做这件事。)

于 2015-03-03T03:30:33.730 回答
15

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>

其他选项包括指定timestamp等。在此处shard查看所有其他支持的选项。

于 2019-01-03T23:30:04.007 回答
8

如果您想以可读格式导出,则首选检查命令。要导出名为 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
于 2019-01-12T06:54:15.933 回答
4

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

于 2018-10-04T14:01:56.387 回答