54 lines
1.3 KiB
Bash
54 lines
1.3 KiB
Bash
#!/bin/bash
|
|
# Database Restore Script for Overseas Appointment System
|
|
# Usage: ./restore-database.sh <backup_file.sql.gz>
|
|
|
|
set -e
|
|
|
|
# Check if backup file is provided
|
|
if [ -z "$1" ]; then
|
|
echo "Usage: $0 <backup_file.sql.gz>"
|
|
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
|