Backups & Maintenance
Backups & Maintenance
To ensure data integrity, automate daily MySQL database backups from the running db container.
Automated Backup Script (/var/scripts/nusaas_backup.sh)
#!/usr/bin/env bash
set -euo pipefail
BACKUP_DIR="/var/backups/nusaas"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/nusaas_db_$TIMESTAMP.sql"
mkdir -p "$BACKUP_DIR"
# Use credentials already injected into the MySQL container.
cd /opt/nusaas
docker compose exec -T db sh -c \
'mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"' \
> "$BACKUP_FILE"
# Compress
gzip "$BACKUP_FILE"
# Delete backups older than 14 days
find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +14 -delete
Database dumps do not include uploaded files. Back up the storage-data volume as well, and copy both backups to off-site storage. Test restoration regularly.
Cron Schedule Setup
sudo chmod +x /var/scripts/nusaas_backup.sh
sudo crontab -e
# Add the following line to run at midnight:
# 0 0 * * * /var/scripts/nusaas_backup.sh > /dev/null 2>&1
Everyday Maintenance Commands
Run these commands inside /opt/nusaas:
# Stream all container logs
docker compose logs -f
# Restart all stack services
docker compose restart
# Stop all containers (keeps volume data)
docker compose down
# Force pull latest images and restart
docker compose pull && docker compose up -d