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