50 lines
1.7 KiB
Bash
Executable File
50 lines
1.7 KiB
Bash
Executable File
#!/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' ---"
|
|
|