cmc-sales/scripts/util/restore_db_from_backup.sh

48 lines
1.3 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
set -e
# Default to local
TARGET="local"
for arg in "$@"; do
if [[ "$arg" == "-target" ]]; then
NEXT_IS_TARGET=1
continue
fi
if [[ $NEXT_IS_TARGET == 1 ]]; then
TARGET="$arg"
NEXT_IS_TARGET=0
fi
done
if [[ "$TARGET" == "prod" ]]; then
DB_CONTAINER="cmc-prod-db"
DB_USER="cmc"
DB_PASS="xVRQI&cA?7AU=hqJ!%au"
DB_NAME="cmc"
elif [[ "$TARGET" == "stg" ]]; then
DB_CONTAINER="cmc-stg-db"
DB_USER="cmc"
DB_PASS="xVRQI&cA?7AU=hqJ!%au"
DB_NAME="cmc"
else
# local
DB_CONTAINER="cmc-db"
DB_USER="cmc"
DB_PASS="xVRQI&cA?7AU=hqJ!%au"
DB_NAME="cmc"
fi
# Get latest backup from production
LATEST_REMOTE_BACKUP=$(ssh cmc "ls -t /home/cmc/backups/backup_*.sql.gz | head -n1")
echo "Syncing latest backup: $LATEST_REMOTE_BACKUP"
rsync -avz --progress "cmc:$LATEST_REMOTE_BACKUP" ~/backups/
LATEST_BACKUP=$(basename "$LATEST_REMOTE_BACKUP")
LATEST_BACKUP=~/backups/$LATEST_BACKUP
echo "Restoring database from latest backup: $LATEST_BACKUP to $TARGET ($DB_CONTAINER)"
if [ -f "$LATEST_BACKUP" ]; then
docker cp "$LATEST_BACKUP" "$DB_CONTAINER":/tmp/backup.sql.gz
docker exec "$DB_CONTAINER" sh -c "gunzip < /tmp/backup.sql.gz | mariadb -u $DB_USER -p'$DB_PASS' $DB_NAME"
echo "Database restore complete."
else
echo "No backup file found in ~/backups. Skipping database restore."
fi