Files
AzerothCore-RealmMaster/scripts/restore.sh
uprightbass360 7b256e7571 Merge playerbot backup support from modules branch
- Add automatic detection of acore_playerbots database in all backup scripts
- Improve restore script with better error handling
- Add logging of databases being backed up
- Include test-backup-detection.sh script
2025-10-11 02:09:46 -04:00

55 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
set -e
MYSQL_HOST=${MYSQL_HOST:-ac-mysql}
MYSQL_PORT=${MYSQL_PORT:-3306}
MYSQL_USER=${MYSQL_USER:-root}
MYSQL_PASSWORD=${MYSQL_PASSWORD:-password}
BACKUP_DIR="/backups"
if [ -z "$1" ]; then
echo "Usage: restore.sh <backup_timestamp>"
echo "Available backups:"
ls -la $BACKUP_DIR/ | grep "^d" | grep "[0-9]"
exit 1
fi
TIMESTAMP=$1
BACKUP_SUBDIR="$BACKUP_DIR/$TIMESTAMP"
if [ ! -d "$BACKUP_SUBDIR" ]; then
echo "❌ Backup not found: $BACKUP_SUBDIR"
exit 1
fi
echo "⚠️ WARNING: This will overwrite existing databases!"
echo "Restoring from backup: $TIMESTAMP"
# List databases that will be restored
echo "Databases that will be restored:"
for backup_file in $BACKUP_SUBDIR/*.sql.gz; do
if [ -f "$backup_file" ]; then
db_name=$(basename "$backup_file" .sql.gz)
echo " - $db_name"
fi
done
echo "Press Ctrl+C within 10 seconds to cancel..."
sleep 10
# Restore databases
for backup_file in $BACKUP_SUBDIR/*.sql.gz; do
if [ -f "$backup_file" ]; then
db_name=$(basename "$backup_file" .sql.gz)
echo "Restoring database: $db_name"
# Restore with error handling for optional databases
if zcat "$backup_file" | mysql -h$MYSQL_HOST -P$MYSQL_PORT -u$MYSQL_USER -p$MYSQL_PASSWORD; then
echo "✅ Successfully restored $db_name"
else
echo "⚠️ Warning: Failed to restore $db_name (this may be normal for optional databases)"
fi
fi
done
echo "✅ Database restore completed"