35 lines
2.0 KiB
Bash
Executable File
35 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
repo=$(CDPATH= cd -- "$(dirname "$0")/.." && pwd)
|
|
cd "$repo"
|
|
drill_root=$(mktemp -d /tmp/rf4-restore-drill.XXXXXX)
|
|
project="rf4-restore-drill-$$"
|
|
export COMPOSE_PROJECT_NAME="$project"
|
|
export COMPOSE_ENV_FILE=.env.production.example
|
|
export BACKUP_DIRECTORY="$drill_root"
|
|
compose="docker compose --env-file $COMPOSE_ENV_FILE -f compose.production.yaml"
|
|
|
|
cleanup() {
|
|
$compose down --volumes --remove-orphans >/dev/null 2>&1 || true
|
|
rm -rf "$drill_root"
|
|
}
|
|
trap cleanup EXIT INT TERM
|
|
|
|
$compose up -d --wait db minio
|
|
$compose run --rm minio-init
|
|
$compose exec -T db sh -c 'psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "create table restore_drill (value text primary key); insert into restore_drill values ('"'"'database-ok'"'"');"' >/dev/null
|
|
$compose run --rm --entrypoint /bin/sh storage-tool -c 'mc alias set local http://minio:9000 "$S3_ACCESS_KEY" "$S3_SECRET_KEY" >/dev/null; mc stat "local/$S3_BUCKET" >/dev/null; printf object-ok | mc pipe "local/$S3_BUCKET/restore-drill.txt"' >/dev/null
|
|
|
|
./deploy/backup.sh "$drill_root"
|
|
backup=$(find "$drill_root" -mindepth 1 -maxdepth 1 -type d ! -name '.rf4-restore.*' | head -n 1)
|
|
$compose exec -T db sh -c 'psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "drop table restore_drill;"' >/dev/null
|
|
$compose run --rm --entrypoint /bin/sh storage-tool -c 'mc alias set local http://minio:9000 "$S3_ACCESS_KEY" "$S3_SECRET_KEY" >/dev/null; mc rm --force "local/$S3_BUCKET/restore-drill.txt"' >/dev/null
|
|
|
|
CONFIRM_RESTORE=rf4-spotter RESTORE_START_SERVICES=minio ./deploy/restore.sh "$backup"
|
|
db_value=$($compose exec -T db sh -c 'psql -At -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select value from restore_drill;"')
|
|
object_value=$($compose run --rm --entrypoint /bin/sh storage-tool -c 'mc alias set local http://minio:9000 "$S3_ACCESS_KEY" "$S3_SECRET_KEY" >/dev/null; mc cat "local/$S3_BUCKET/restore-drill.txt"')
|
|
test "$db_value" = "database-ok"
|
|
test "$object_value" = "object-ok"
|
|
echo "Backup/restore drill passed for PostgreSQL and MinIO"
|