#!/bin/bash # Aether MariaDB Restore Script (Physical Backup) # Automates: Stop -> Backup existing -> Extract -> Prepare -> Fix Perms -> Start set -e PROJECT_ROOT="/home/scott/OSIT_dev/aether_container_env" BACKUP_FILE="${PROJECT_ROOT}/backups/mariadbbackup_1555.gz" MARIADB_DATA="${PROJECT_ROOT}/srv/mariadb" RESTORE_TEMP="${PROJECT_ROOT}/srv/restore_temp" TIMESTAMP=$(date +%Y%m%d_%H%M%S) echo "--- Starting Aether Database Restore ---" # 1. Stop MariaDB echo ">>> Stopping MariaDB container..." cd "${PROJECT_ROOT}" && docker compose stop mariadb # 2. Archive current data if [ "$(ls -A ${MARIADB_DATA})" ]; then echo ">>> Archiving current data to srv/mariadb_bak_${TIMESTAMP}..." mv "${MARIADB_DATA}" "${PROJECT_ROOT}/srv/mariadb_bak_${TIMESTAMP}" fi mkdir -p "${MARIADB_DATA}" "${RESTORE_TEMP}" # 3. Extract and Prepare using Docker echo ">>> Running extraction and preparation in temporary container..." docker run --rm --user 0 \ -v "${PROJECT_ROOT}/backups":/backups \ -v "${RESTORE_TEMP}":/restore \ -v "${PROJECT_ROOT}/scripts/restore_internal.sh":/restore.sh \ mariadb:10.11 bash /restore.sh # 4. Move prepared data to final location echo ">>> Moving prepared data to srv/mariadb..." mv "${RESTORE_TEMP}"/* "${MARIADB_DATA}/" mv "${RESTORE_TEMP}"/.* "${MARIADB_DATA}/" 2>/dev/null || true rmdir "${RESTORE_TEMP}" # 5. Fix Permissions echo ">>> Fixing ownership for MariaDB user (999:999)..." docker run --rm -v "${MARIADB_DATA}":/var/lib/mysql alpine chown -R 999:999 /var/lib/mysql # 6. Start MariaDB echo ">>> Starting MariaDB container..." docker compose start mariadb echo "--- Restore Complete! Check logs with 'docker logs ae_mariadb_dev' ---"