#!/bin/bash # Database Restore Script for Overseas Appointment System # Usage: ./restore-database.sh set -e # Check if backup file is provided if [ -z "$1" ]; then echo "Usage: $0 " echo "Available backups:" ls -lh /backups/mysql/*.sql.gz 2>/dev/null || echo "No backups found" exit 1 fi BACKUP_FILE="$1" # Check if backup file exists if [ ! -f "${BACKUP_FILE}" ]; then echo "ERROR: Backup file not found: ${BACKUP_FILE}" exit 1 fi # Database credentials (from environment or defaults) DB_HOST="${DB_HOST:-mysql}" DB_PORT="${DB_PORT:-3306}" DB_NAME="${DB_NAME:-overseas_appointment}" DB_USER="${DB_USER:-app_user}" DB_PASSWORD="${DB_PASSWORD:-}" echo "[$(date)] Starting database restore from: ${BACKUP_FILE}" echo "WARNING: This will overwrite the current database!" read -p "Are you sure you want to continue? (yes/no): " confirm if [ "$confirm" != "yes" ]; then echo "Restore cancelled." exit 0 fi # Restore database echo "[$(date)] Restoring database..." gunzip -c "${BACKUP_FILE}" | mysql \ --host="${DB_HOST}" \ --port="${DB_PORT}" \ --user="${DB_USER}" \ --password="${DB_PASSWORD}" \ "${DB_NAME}" if [ $? -eq 0 ]; then echo "[$(date)] Database restored successfully!" else echo "[$(date)] ERROR: Database restore failed!" exit 1 fi