You are browsing documentation for a version other than the latest stable release. Switch to the latest stable release, 1.1.

Backup and restore

Docker volumes

As described in the production installation chapter, the Mender production stack requires a number of Docker volumes to be created. These volumes can be backed up using regular docker commands, such as docker run or docker cp.

A simple example displaying a method of backing up the contents of the mender-artifacts volume is provided below. The command will start a temporary container using the alpine:latest image, mount the mender-artifacts volume under the /from path and $PWD under /to. Then all files and directories under /from are passed through the tar | gzip pipeline and saved to /to/arifacts-backup.tar.gz. Once the container exits, the file $PWD/artifacts-backup.tar.gz can be verified to have correct contents.

docker run -it --rm -v mender-artifacts:/from -v $PWD:/to -w /from \
    alpine \
    ash -c 'tar c * | gzip -9 > /to/artifacts-backup.tar.gz'

This method can be applied to all volumes used by the Mender stack.

Make sure that the relevant services are stopped before backing up respective volumes.

Database

While it is possible to perform a backup of the databases used by Mender services with the volume based method outlined in volumes section, one can also use DB specific tools to dump and restore database contents.

The Mender integration repository provides tools for dumping and restoring all databases.

The tool dump-db will run a mongo container inside the mender network and dump the contents of each DB into $PWD/db-dump/<service-name> directory.

../migration/dump-db

Stopping menderproduction_mender-deployments_1 ... done
Stopping menderproduction_mender-inventory_1 ... done
Stopping menderproduction_mender-device-adm_1 ... done
Stopping menderproduction_mender-useradm_1 ... done
Stopping menderproduction_mender-device-auth_1 ... done
Starting mender-mongo-device-adm ... done
Starting mender-mongo-device-auth ... done
Starting mender-mongo-deployments ... done
Starting mender-mongo-inventory ... done
Starting mender-mongo-useradm ... done
2017-06-06T11:20:05.004+0000 writing admin.system.version to
2017-06-06T11:20:05.024+0000 done dumping admin.system.version (1 document)
2017-06-06T11:20:05.024+0000 writing useradm.migration_info to
2017-06-06T11:20:05.024+0000 writing useradm.users to
2017-06-06T11:20:05.025+0000 done dumping useradm.migration_info (1 document)
(output continues...)
2017-06-06T11:20:05.315+0000 done dumping deployment_service.migration_info (1 document)

The tool restore-db will run a mongo container inside the mender network to restore DB dumps previously created with dump-db.

../migration/restore-db

Stopping menderproduction_mender-deployments_1 ... done
Stopping menderproduction_mender-inventory_1 ... done
Stopping menderproduction_mender-device-adm_1 ... done
Stopping menderproduction_mender-useradm_1 ... done
Stopping menderproduction_mender-device-auth_1 ... done
Starting mender-mongo-device-adm ... done
Starting mender-mongo-device-auth ... done
Starting mender-mongo-deployments ... done
Starting mender-mongo-inventory ... done
Starting mender-mongo-useradm ... done
2017-06-06T11:35:09.988+0000 preparing collections to restore from
2017-06-06T11:35:10.088+0000 reading metadata for useradm.migration_info from /srv/db-dump/mender-mongo-useradm/useradm/migration_info.metadata.json
(output continues...)
2017-06-06T11:35:14.563+0000 no indexes to restore
2017-06-06T11:35:14.563+0000 finished restoring deployment_service.migration_info (1 document)
2017-06-06T11:35:14.563+0000 done

Note restore-db and dump-db will automatically stop all Mender services that may access respective DBs.

Once the data has been dumped or restored, the services can be started using

./run up -d

menderproduction_mender-mongo-device-auth_1 is up-to-date
menderproduction_mender-mongo-device-adm_1 is up-to-date
menderproduction_mender-elasticsearch_1 is up-to-date
menderproduction_mender-gui_1 is up-to-date
menderproduction_mender-mongo-inventory_1 is up-to-date
menderproduction_mender-mongo-useradm_1 is up-to-date
menderproduction_minio_1 is up-to-date
menderproduction_mender-dynomite_1 is up-to-date
menderproduction_mender-mongo-deployments_1 is up-to-date
Starting menderproduction_mender-device-auth_1
Starting menderproduction_mender-device-adm_1
Starting menderproduction_mender-inventory_1
Starting menderproduction_mender-useradm_1
menderproduction_storage-proxy_1 is up-to-date
menderproduction_mender-conductor_1 is up-to-date
Starting menderproduction_mender-deployments_1
menderproduction_mender-api-gateway_1 is up-to-date

Occasionally services may get new IP addresses and the API gateway DNS cache may no longer be correct. To refresh the API gateway's cache, run the following command:

./run exec mender-api-gateway kill -HUP 1