diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dc92fb..d67bf19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### New Features +* [fix] restore_backup.sh restores the default public scheme * SSL configuration is enabled by default * Add backup and restore scripts * Add `markdownlint` check in CI diff --git a/restore_backup.sh b/restore_backup.sh old mode 100644 new mode 100755 index ad92ee9..4a8959b --- a/restore_backup.sh +++ b/restore_backup.sh @@ -7,8 +7,44 @@ CPU_COUNT=4 DB_CONTAINER_ID=$(docker-compose ps -q db) BACKUP_NAME="${BACKUP_NAME:-unknown-backup}" + +echo 'The script restores the default state of the' \ + 'public schema, which will delete all data' + +while true; do + + echo "Continue? (yes/no) " + read -r yn + + case $yn in + yes ) echo 'start of dump recovery'; + break;; + no ) echo 'exiting...'; + exit 1;; + * ) echo 'invalid response';; + esac + +done + + +# download dump aws s3 cp s3://palladium-backup/"$BACKUP_NAME" . + +# reset the public schema & define access privileges +docker exec \ +-u postgres \ +"$DB_CONTAINER_ID" \ +psql -c \ +'DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO public;' + +# restore pg_backup docker cp "$BACKUP_NAME" "$DB_CONTAINER_ID":/tmp/ -docker exec "$DB_CONTAINER_ID" pg_restore -j $CPU_COUNT -U postgres -d postgres /tmp/"$BACKUP_NAME" +docker exec "$DB_CONTAINER_ID" \ + pg_restore \ + -j $CPU_COUNT \ + -U postgres \ + -d postgres \ + /tmp/"$BACKUP_NAME" docker exec "$DB_CONTAINER_ID" rm /tmp/"$BACKUP_NAME" + rm "$BACKUP_NAME"