DB Restore script
This commit is contained in:
@@ -3,3 +3,4 @@ node_modules/
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
*.log
|
*.log
|
||||||
docker-compose.yaml
|
docker-compose.yaml
|
||||||
|
backups/
|
||||||
|
|||||||
@@ -105,6 +105,27 @@ Optionale Variablen:
|
|||||||
BACKUP_DIR=/pfad/zum/backup KEEP_DAYS=90 ./scripts/backup-db.sh
|
BACKUP_DIR=/pfad/zum/backup KEEP_DAYS=90 ./scripts/backup-db.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 6. Datenbank Restore
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/restore-db.sh backups/resource_manager-YYYYMMDD-HHMMSS.sql.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
Vor dem Restore wird automatisch ein neues Sicherheitsbackup erstellt.
|
||||||
|
Der Restore muss durch Eingabe des Datenbanknamens bestaetigt werden.
|
||||||
|
|
||||||
|
Ohne Rueckfrage, z. B. fuer Automatisierung:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
FORCE=1 ./scripts/restore-db.sh backups/resource_manager-YYYYMMDD-HHMMSS.sql.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
Sicherheitsbackup vor dem Restore ueberspringen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
SKIP_PRE_RESTORE_BACKUP=1 ./scripts/restore-db.sh backups/resource_manager-YYYYMMDD-HHMMSS.sql.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
🗄️ Datenbank Schema
|
🗄️ Datenbank Schema
|
||||||
resources
|
resources
|
||||||
|
|||||||
Executable
+59
@@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
DB_SERVICE="${DB_SERVICE:-db}"
|
||||||
|
DB_NAME="${DB_NAME:-resource_manager}"
|
||||||
|
DB_USER="${DB_USER:-resman}"
|
||||||
|
DB_PASSWORD="${DB_PASSWORD:-resmanpass}"
|
||||||
|
FORCE="${FORCE:-0}"
|
||||||
|
SKIP_PRE_RESTORE_BACKUP="${SKIP_PRE_RESTORE_BACKUP:-0}"
|
||||||
|
|
||||||
|
if [[ $# -ne 1 ]]; then
|
||||||
|
echo "Usage: $0 <backup.sql|backup.sql.gz>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
RESTORE_FILE="$1"
|
||||||
|
|
||||||
|
if [[ ! -f "$RESTORE_FILE" ]]; then
|
||||||
|
echo "Backup file not found: $RESTORE_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$ROOT_DIR"
|
||||||
|
|
||||||
|
if [[ "$FORCE" != "1" ]]; then
|
||||||
|
echo "This will restore '$RESTORE_FILE' into database '$DB_NAME'."
|
||||||
|
echo "Existing data may be overwritten."
|
||||||
|
read -r -p "Type '$DB_NAME' to continue: " CONFIRMATION
|
||||||
|
|
||||||
|
if [[ "$CONFIRMATION" != "$DB_NAME" ]]; then
|
||||||
|
echo "Restore cancelled."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$SKIP_PRE_RESTORE_BACKUP" != "1" ]]; then
|
||||||
|
echo "Creating safety backup before restore..."
|
||||||
|
"$ROOT_DIR/scripts/backup-db.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Restoring database '$DB_NAME' from: $RESTORE_FILE"
|
||||||
|
|
||||||
|
if [[ "$RESTORE_FILE" == *.gz ]]; then
|
||||||
|
gunzip -c "$RESTORE_FILE" | docker compose exec -T "$DB_SERVICE" \
|
||||||
|
mariadb \
|
||||||
|
--user="$DB_USER" \
|
||||||
|
--password="$DB_PASSWORD" \
|
||||||
|
"$DB_NAME"
|
||||||
|
else
|
||||||
|
docker compose exec -T "$DB_SERVICE" \
|
||||||
|
mariadb \
|
||||||
|
--user="$DB_USER" \
|
||||||
|
--password="$DB_PASSWORD" \
|
||||||
|
"$DB_NAME" \
|
||||||
|
< "$RESTORE_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Restore finished."
|
||||||
Reference in New Issue
Block a user