Without regular backups, you risk irreversible data loss and costly recovery efforts
Errors or typos? Topics missing? Hard to read? Let us know!
MAAS uses standard command-line utilitlies to keep backups simple and familiar.
Clean reset backup and restore
This procedure does a clean reset backup using pg_dumpall. MAAS and PostgreSQL are fully overwritten on restore. You can also do a targeted backup and restore if other services are sharing your PostgreSQL database.
Generally, using pg_dumpall for a database dump doesn't require stopping PostgreSQL. It works with live databases, ensuring consistent backups and minimal service disruption. The PostgreSQL transactional model guarantees dump accuracy. You should be able to keep PostgreSQL running -- skipping the optional steps below -- but you should stop MAAS first to avoid conflicts during the dump. If you're concerned at all, just use the optional steps to stop and restart PostgreSQL.
Please note that the order of steps is important.
Make a clean backup of a snap install
nohighlight
   sudo systemctl list-units --type=service | grep postgres
nohighlight
   cd <external-backup-media>/maas-backups/
   mkdir $(date +%s)
nohighlight
   sudo -u postgres pg_dumpall -c > "<external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_dump.sql"
nohighlight
   sudo snap stop maas
nohighlight
   sudo -u postgres psql -c  "SELECT * FROM pg_stat_activity"
nohighlight
   sudo systemctl stop postgresql.service
nohighlight
   sudo snap save maas
nohighlight
   sudo snap check-snapshot <snapshot-id>
nohighlight
   sudo snap export-snapshot <snapshot-id> <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_snapshot_<snapshot-id>
nohighlight
   sudo systemctl start postgresql.service
nohighlight
   sudo systemctl status postgresql
nohighlight
   sudo snap restart maas
Do a clean restore of a snap install
nohighlight
   sudo snap stop maas
nohighlight
   sudo snap remove maas
nohighlight
   sudo -u postgres psql -f <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_dump.sql postgres
nohighlight
   sudo -u postgres psql -c  "SELECT * FROM pg_stat_activity"
nohighlight
   sudo systemctl stop postgresql.service
nohighlight
   sudo snap import-snapshot <external-backup-media>/maas-backups/<backup-timestamp>/<snapshot-epoch>_maas_snapshot_<snapshot-id>
nohighlight
   sudo snap restore <snapshot-id>
nohighlight
   sudo systemctl start postgresql.service
nohighlight
   sudo systemctl status postgresql
nohighlight
   sudo snap restart maas
Make a clean backup of a package install
nohighlight
   sudo systemctl list-units --type=service | grep postgres
nohighlight
   cd <external-backup-media>/maas-backups/
   mkdir $(date +%s)
nohighlight
   sudo -u postgres pg_dumpall -c > "<external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_dump.sql"
nohighlight
   sudo systemctl stop maas-dhcpd.service
   sudo systemctl stop maas-rackd.service
   sudo systemctl stop maas-regiond.service
nohighlight
   sudo -u postgres psql -c  "SELECT * FROM pg_stat_activity"
nohighlight
   sudo systemctl stop postgresql.service
nohighlight
   sudo tar cvpzWf <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_backup.tgz --exclude=/var/lib/maas/boot-resources /etc/maas /var/lib/maas
nohighlight
   sudo systemctl start postgresql.service
nohighlight
   sudo systemctl status postgresql
nohighlight
   sudo snap restart maas
Do a clean restore of a package install
(Optional, but recommended if possible) Begin with a fresh Ubuntu install.
Make sure the required PostgreSQL version is installed.
Use this command, if needed, to confirm the local PostgreSQL service name:
nohighlight
   sudo systemctl list-units --type=service | grep postgres
nohighlight
   sudo -u postgres psql -f <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_dump.sql postgres
Install MAAS from packages.
Once fully operational, stop these MAAS services:
nohighlight
   sudo systemctl stop maas-dhcpd.service
   sudo systemctl stop maas-rackd.service
   sudo systemctl stop maas-regiond.service
nohighlight
   sudo -u postgres psql -c  "SELECT * FROM pg_stat_activity"
nohighlight
   sudo systemctl stop postgresql.service
nohighlight
   mkdir /tmp/maas_backup
   sudo tar xvzpf <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_backup.tgz -C /tmp/maas_backup
nohighlight
   backup_dir="/var/backups/maas_backup/$(date +%s)"
   sudo mkdir -p "$backup_dir"
nohighlight
   sudo mv /etc/maas "$backup_dir/etc_maas"
   sudo mv /var/lib/maas "$backup_dir/var_lib_maas"
nohighlight
   sudo cp -prf /tmp/maas_backup/etc/maas /etc/
   sudo cp -prf /tmp/maas_backup/var/lib/maas /var/lib/
nohighlight
   sudo -u postgres psql -f <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_dump.sql postgres
nohighlight
   sudo systemctl start postgresql.service
nohighlight
   sudo systemctl status postgresql
nohighlight
   sudo systemctl stop maas-dhcpd.service
   sudo systemctl stop maas-rackd.service
   sudo systemctl stop maas-regiond.service
For MAAS and PostgreSQL setups which are shared with other services, follow these backup and restore guidelines.
Make a minimal-downtime backup of a snap install
nohighlight
   sudo systemctl list-units --type=service | grep postgres
nohighlight
   cd <external-backup-media>/maas-backups/
   mkdir $(date +%s)
nohighlight
   sudo -u postgres psql
   \l
   # identifying the MAAS database is up to you
   \q
nohighlight
   sudo -u postgres pg_dump [maas_database_name] > "<external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_only_backup.sql"
nohighlight
   sudo snap stop maas
nohighlight
   sudo snap save maas
nohighlight
   sudo snap check-snapshot <snapshot-id>
nohighlight
   sudo snap export-snapshot <snapshot-id> <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_snapshot_<snapshot-id>
nohighlight
   sudo snap restart maas
Do a minimal downtime restore of a MAAS snap install
nohighlight
   sudo snap stop maas
nohighlight
   sudo snap remove maas
nohighlight
   sudo -u postgres psql [maas_database_name] < <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_maas_only_backup.sql
nohighlight
   sudo snap import-snapshot <external-backup-media>/maas-backups/<backup-timestamp>/<snapshot-epoch>_maas_snapshot_<snapshot-id>
nohighlight
   sudo snap restore <snapshot-id>
nohighlight
   sudo snap restart maas
Make a minimal-downtime backup of a package install
nohighlight
   sudo systemctl list-units --type=service | grep postgres
nohighlight
   cd <external-backup-media>/maas-backups/
   mkdir $(date +%s)
nohighlight
   sudo -u postgres psql
   \l
   # identifying the MAAS database is up to you
   \q
nohighlight
   sudo -u postgres pg_dump [maas_database_name] > "<external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_only_backup.sql"
nohighlight
   sudo systemctl stop maas-dhcpd.service
   sudo systemctl stop maas-rackd.service
   sudo systemctl stop maas-regiond.service
nohighlight
   sudo tar cvpzWf <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_backup.tgz --exclude=/var/lib/maas/boot-resources /etc/maas /var/lib/maas
nohighlight
   sudo snap restart maas
Do a minimal-downtime restore of a package install
nohighlight
   sudo systemctl list-units --type=service | grep postgres
nohighlight
   sudo -u postgres psql [maas_database_name] < <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_maas_only_backup.sql
nohighlight
   mkdir /tmp/maas_backup
   sudo tar xvzpf <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_backup.tgz -C /tmp/maas_backup
nohighlight
   backup_dir="/var/backups/maas_backup/$(date +%s)"
   sudo mkdir -p "$backup_dir"
nohighlight
   sudo mv /etc/maas "$backup_dir/etc_maas"
   sudo mv /var/lib/maas "$backup_dir/var_lib_maas"
nohighlight
   sudo apt-get remove --purge maas
   sudo apt-get autoremove
Install MAAS from packages.
Once fully operational, stop these MAAS services:
nohighlight
   sudo systemctl stop maas-dhcpd.service
   sudo systemctl stop maas-rackd.service
   sudo systemctl stop maas-regiond.service
nohighlight
   sudo cp -prf /tmp/maas_backup/etc/maas /etc/
   sudo cp -prf /tmp/maas_backup/var/lib/maas /var/lib/
nohighlight
   sudo systemctl stop maas-dhcpd.service
   sudo systemctl stop maas-rackd.service
   sudo systemctl stop maas-regiond.service