从 InfluxDB 导出数据
Export data from InfluxDB
有没有办法(插件或工具)从数据库(或数据库本身)导出数据?我正在寻找此功能,因为我需要将数据库从当前主机迁移到另一个主机。
您可以转储每个 table 并通过 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
正如 ezotrank 所说,您可以转储每个 table。不过,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,抱歉,我会直接在您的回答上发表评论,但我还没有足够的声望点数来这样做。)
导出数据:
sudo service influxdb start (Or leave this step if service is already running)
influxd backup -database grpcdb /opt/data
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
如果我使用 curl,我会超时,如果我使用 influxd backup
它不是我可以阅读的格式。
我得到了这样的好结果:
influx -host influxdb.mydomain.com -database primary -format csv -execute "select time,value from \"continuous\" where channel='ch123'" > outtest.csv
如果您有权访问机器 运行 Influx db,我会说使用 influx_inspect command. The command is simple and very fast. It will dump your db in line protocol. You can then import this dump using influx -import 命令。
从1.5
开始,InfluxDB OSS备份实用程序提供了一个更方便的新选项:
-portable
:以较新的 InfluxDB Enterprise 兼容格式生成备份文件。强烈推荐给所有 InfluxDB OSS 用户
Export
要备份所有内容:
influxd backup -portable <path-to-backup>
只备份 myperf 数据库:
influxd backup -portable -database myperf <path-to-backup>
Import
还原在备份目录中找到的所有数据库:
influxd restore -portable <path-to-backup>
只恢复 myperf 数据库(myperf 数据库不能存在):
influxd restore -portable -db myperf <path-to-backup>
其他选项包括指定 timestamp
、 shard
等。查看所有其他支持的选项 here.
如果您想以可读的格式导出,最好使用检查命令。
要导出名为 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
有没有办法(插件或工具)从数据库(或数据库本身)导出数据?我正在寻找此功能,因为我需要将数据库从当前主机迁移到另一个主机。
您可以转储每个 table 并通过 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
正如 ezotrank 所说,您可以转储每个 table。不过,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,抱歉,我会直接在您的回答上发表评论,但我还没有足够的声望点数来这样做。)
导出数据:
sudo service influxdb start (Or leave this step if service is already running)
influxd backup -database grpcdb /opt/data
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
如果我使用 curl,我会超时,如果我使用 influxd backup
它不是我可以阅读的格式。
我得到了这样的好结果:
influx -host influxdb.mydomain.com -database primary -format csv -execute "select time,value from \"continuous\" where channel='ch123'" > outtest.csv
如果您有权访问机器 运行 Influx db,我会说使用 influx_inspect command. The command is simple and very fast. It will dump your db in line protocol. You can then import this dump using influx -import 命令。
从1.5
开始,InfluxDB OSS备份实用程序提供了一个更方便的新选项:
-portable
:以较新的 InfluxDB Enterprise 兼容格式生成备份文件。强烈推荐给所有 InfluxDB OSS 用户
Export
要备份所有内容:
influxd backup -portable <path-to-backup>
只备份 myperf 数据库:
influxd backup -portable -database myperf <path-to-backup>
Import
还原在备份目录中找到的所有数据库:
influxd restore -portable <path-to-backup>
只恢复 myperf 数据库(myperf 数据库不能存在):
influxd restore -portable -db myperf <path-to-backup>
其他选项包括指定 timestamp
、 shard
等。查看所有其他支持的选项 here.
如果您想以可读的格式导出,最好使用检查命令。 要导出名为 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