Errors or typos? Topics missing? Hard to read? Let us know.
MAAS uses standard command-line utilities to keep backups simple and familiar.
This procedure does a clean reset backup using pg_dumpall
. MAAS and PostgreSQL are fully overwritten on restore. You can also do a limited back 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.
sudo systemctl list-units --type=service | grep postgres
cd <external-backup-media>/maas-backups/
mkdir $(date +%s)
sudo -u postgres pg_dumpall -c > "<external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_dump.sql"
sudo snap stop maas
sudo -u postgres psql -c "SELECT * FROM pg_stat_activity"
sudo systemctl stop postgresql.service
sudo snap save maas
sudo snap check-snapshot <snapshot-id>
sudo snap export-snapshot <snapshot-id> <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_snapshot_<snapshot-id>
sudo systemctl start postgresql.service
sudo systemctl status postgresql
sudo snap restart maas
sudo snap stop maas
sudo snap remove maas
sudo -u postgres psql -f <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_dump.sql postgres
sudo -u postgres psql -c "SELECT * FROM pg_stat_activity"
sudo systemctl stop postgresql.service
sudo snap import-snapshot <external-backup-media>/maas-backups/<backup-timestamp>/<snapshot-epoch>_maas_snapshot_<snapshot-id>
sudo snap restore <snapshot-id>
sudo systemctl start postgresql.service
sudo systemctl status postgresql
sudo snap restart maas
sudo systemctl list-units --type=service | grep postgres
cd <external-backup-media>/maas-backups/
mkdir $(date +%s)
sudo -u postgres pg_dumpall -c > "<external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_dump.sql"
sudo systemctl stop maas-dhcpd.service
sudo systemctl stop maas-rackd.service
sudo systemctl stop maas-regiond.service
sudo -u postgres psql -c "SELECT * FROM pg_stat_activity"
sudo systemctl stop postgresql.service
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
sudo systemctl start postgresql.service
sudo systemctl status postgresql
sudo snap restart maas
(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:
sudo systemctl list-units --type=service | grep postgres
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:
sudo systemctl stop maas-dhcpd.service
sudo systemctl stop maas-rackd.service
sudo systemctl stop maas-regiond.service
sudo -u postgres psql -c "SELECT * FROM pg_stat_activity"
sudo systemctl stop postgresql.service
mkdir /tmp/maas_backup
sudo tar xvzpf <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_backup.tgz -C /tmp/maas_backup
backup_dir="/var/backups/maas_backup/$(date +%s)"
sudo mkdir -p "$backup_dir"
sudo mv /etc/maas "$backup_dir/etc_maas"
sudo mv /var/lib/maas "$backup_dir/var_lib_maas"
sudo cp -prf /tmp/maas_backup/etc/maas /etc/
sudo cp -prf /tmp/maas_backup/var/lib/maas /var/lib/
sudo -u postgres psql -f <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_dump.sql postgres
sudo systemctl start postgresql.service
sudo systemctl status postgresql
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.
sudo systemctl list-units --type=service | grep postgres
cd <external-backup-media>/maas-backups/
mkdir $(date +%s)
sudo -u postgres psql
\l
# identifying the MAAS database is up to you
\q
sudo -u postgres pg_dump [maas_database_name] > "<external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_only_backup.sql"
sudo snap stop maas
sudo snap save maas
sudo snap check-snapshot <snapshot-id>
sudo snap export-snapshot <snapshot-id> <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_snapshot_<snapshot-id>
sudo snap restart maas
sudo snap stop maas
sudo snap remove maas
sudo -u postgres psql [maas_database_name] < <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_maas_only_backup.sql
sudo snap import-snapshot <external-backup-media>/maas-backups/<backup-timestamp>/<snapshot-epoch>_maas_snapshot_<snapshot-id>
sudo snap restore <snapshot-id>
sudo snap restart maas
sudo systemctl list-units --type=service | grep postgres
cd <external-backup-media>/maas-backups/
mkdir $(date +%s)
sudo -u postgres psql
\l
# identifying the MAAS database is up to you
\q
sudo -u postgres pg_dump [maas_database_name] > "<external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_only_backup.sql"
sudo systemctl stop maas-dhcpd.service
sudo systemctl stop maas-rackd.service
sudo systemctl stop maas-regiond.service
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
sudo snap restart maas
sudo systemctl list-units --type=service | grep postgres
sudo -u postgres psql [maas_database_name] < <external-backup-media>/maas-backups/<backup-timestamp>/<dump_epoch>_maas_only_backup.sql
mkdir /tmp/maas_backup
sudo tar xvzpf <external-backup-media>/maas-backups/<backup-timestamp>/$(date +%s)_maas_backup.tgz -C /tmp/maas_backup
backup_dir="/var/backups/maas_backup/$(date +%s)"
sudo mkdir -p "$backup_dir"
sudo mv /etc/maas "$backup_dir/etc_maas"
sudo mv /var/lib/maas "$backup_dir/var_lib_maas"
sudo apt-get remove --purge maas
sudo apt-get autoremove
Install MAAS from packages.
Once fully operational, stop these MAAS services:
sudo systemctl stop maas-dhcpd.service
sudo systemctl stop maas-rackd.service
sudo systemctl stop maas-regiond.service
sudo cp -prf /tmp/maas_backup/etc/maas /etc/
sudo cp -prf /tmp/maas_backup/var/lib/maas /var/lib/
sudo systemctl stop maas-dhcpd.service
sudo systemctl stop maas-rackd.service
sudo systemctl stop maas-regiond.service