Skip to main content

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)

#!/bin/bash
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"

# Dump database from the MySQL container
docker exec db mysqldump -u root -p"${DB_PASSWORD}" nusaas > "$BACKUP_FILE"

# Compress
gzip "$BACKUP_FILE"

# Delete backups older than 14 days
find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +14 -delete

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