Export data from InfluxDB

2020-05-19 07:49发布

问题:

Is there a way (plugin or tool) to export the data from the database (or database itself) ? I'm looking for this feature as I need to migrate a DB from present host to another one.

回答1:

You could dump each table and load them through REST interface:

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"

Or, maybe you want to add new host to cluster? It's easy and you'll get master-master replica for free. Cluster Setup



回答2:

Export data:

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

grpcdb is name of DB and back up will be saved under /opt/data directory in this case.

Import 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


回答3:

As ezotrank says, you can dump each table. There's a missing "-d" in ezotrank's answer though. It should be:

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, sorry, I would've just posted a comment directly on your answer, but I don't have enough reputation points to do that yet.)



回答4:

If I use curl, I get timeouts, and if I use influxd backup its not in a format I can read.

I'm getting fine results like this:

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


回答5:

From 1.5 onwards, the InfluxDB OSS backup utility provides a newer option which is much more convenient:

-portable: Generates backup files in the newer InfluxDB Enterprise-compatible format. Highly recommended for all InfluxDB OSS users

Export

To back up everything:

influxd backup -portable <path-to-backup>

To backup only the myperf database:

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

Import

To restore all databases found within the backup directory:

influxd restore -portable <path-to-backup>

To restore only the myperf database (myperf database must not exist):

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

Additional options include specifying timestamp , shard etc. See all the other supported options here.



回答6:

If you have access to the machine running Influx db I would say use the 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 command.



回答7:

If You want to export in an readable format, the inspect command is to prefer. To export the database with the name HomeData the command is:

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

The parameters for -waldir and -datdir can be found in /etc/influxdb/influxdb.conf.

To import this file again, the command is:

influx -import -path=influx_backup.db


标签: influxdb