InfluxDB backup and restore

The databases are backed up every night using the scripts provided on the page below.

This guide shows how to backup and restore InfluxDB (v.1.5+) using the legacy method. If you want to migrate your data to our InfluxDB instance follow the procedure to make a full backup and provide the location of your data to us. You can download the scripts here:

This guide assumes the backups are stored at the following location:

/var/backups/influxdb

Full InfluxDB backup

backup-influxdb

If authentication is enabled, provide the admin user credentials in the file ~/.influx_admin:

export INFLUX_USERNAME="admin"
export INFLUX_PASSWORD="secret"          

Restore

Single database (online) restore

influx -execute "drop database <db>"
restore-influxdb-database-online <backupdir> <db> [<new_db>]

Manually grant privileges shown (adapt db name if <new_db> is used).

Full (offline) restore

systemctl stop influxd
rm -r /var/lib/influxdb/data
rm -r /var/lib/influxdb/meta
rm -r /var/lib/influxdb/wal
restore-influxdb-full <backupdir>
systemctl start influxd

Manual backup/restore

Here are a some example commands for manual backup/restore.

Legacy method (preferred)

BACKUPDIR="/var/backups/influxdb"
DATE="$(date +%Y%m%d-%H%M%S)"
umask 077

# Full backup:

influxd backup "${BACKUPDIR}/${DATE}"
influxd backup -database _internal "${BACKUPDIR}/${DATE}"
# Repeat the next line for all databases:
influxd backup -database <db> "${BACKUPDIR}/${DATE}"

# Full restore (offline):

systemctl stop influxdb
rm -r /var/lib/influxdb/*
systemctl start influxdb
systemctl stop influxdb
influxd restore -metadir /var/lib/influxdb/meta "${BACKUPDIR}/<date>"
influxd restore -db _internal -newdb _internal -datadir /var/lib/influxdb/data "${BACKUPDIR}/<date>"
# Repeat the next line for all databases:
# `-newdb` required in >1.6, see bug https://github.com/influxdata/influxdb/issues/10072
influxd restore -db <db> -newdb <db> -datadir /var/lib/influxdb/data "${BACKUPDIR}/<date>"
chown -R influxdb:influxdb /var/lib/influxdb/*
systemctl start influxdb

# Single database restore (online):

influx -execute "drop database <db>"
influxd restore -online -db <db> "${BACKUPDIR}/<date>/data/<db>"
influx -execute "grant <priv> on <db> to <user>"

Portable method

BACKUPDIR="/var/backups/influxdb"
DATE="$(date +%Y%m%d-%H%M%S)"
umask 077

# Backup:

influxd backup -portable "${BACKUPDIR}/${DATE}"

# Restore:

influx -execute "drop database <db>"
influxd restore -portable -db <db> "${BACKUPDIR}/<date>"
influx -execute "grant <priv> on <db> to <user>"