How to backup MetalSoft

MetalSoft’s Global Controller stores all the data. The Site controller is stateless and its configuration can be regenerated and does not need any backup.

The Global controller uses two databases that need to be backed up, the rest of the containers are stateless and can be re-deployed. Both databases run inside containers.

  • MySQL

  • CouchDB

Enabling the automatic backup of the databases

MetalSoft provides a script to perform the backup automatically as part of a cron job, available on github. The script also supports the signing and shipping of the backup files to a remote location.

To use the script:

  1. Create the destination folder and ensure it is created and writable by the user

mkdir {{backup_folder}}DR/
  1. Add it to the CRON of one of the head nodes of the kubernetes system:

52 * * * * /usr/local/bin/cron_metalsoft_backup_dbs -u administrator -s 172.17.83.141 -d {{backup_folder}}DR/

Parameters for the backup script

The script can be invoked manually as well:

./test.sh --help

  Usage: ./test.sh -e environment_namespace

  Available parameters:
  -e | -n = [required] environment namespace
  -k = kubectl command to use
  -l = Location of Backup Folder for all backups (default: {{backup_folder}})
  -g = GPG email to use for signing the backup (check gpg --list-keys) PG_PASS env variable can be used to specify the GPG passphrase GPG_PASS_FILE env variable can be used to specify the GPG passphrase-file
  -s = ssh host to rsync to
  -p = ssh port (default: 22)
  -u = ssh user (default: root)
  -d = ssh destination