created proper db backup on push to ensure this wont happen again
This commit is contained in:
@@ -53,6 +53,26 @@ if [[ -z "$RESTORE_URL" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ARCHIVE_EXISTING_RESTORE_DB="${ARCHIVE_EXISTING_RESTORE_DB:-1}"
|
||||
RESTORE_ARCHIVE_DIR="${RESTORE_ARCHIVE_DIR:-./backups/restore-archives}"
|
||||
|
||||
if [[ "$ARCHIVE_EXISTING_RESTORE_DB" == "1" ]]; then
|
||||
DB_EXISTS="$(psql "$ADMIN_URL" -At -v ON_ERROR_STOP=1 -c "SELECT 1 FROM pg_database WHERE datname = '${RESTORE_DB}' LIMIT 1;")"
|
||||
if [[ "$DB_EXISTS" == "1" ]]; then
|
||||
mkdir -p "$RESTORE_ARCHIVE_DIR"
|
||||
ARCHIVE_STAMP="$(date +%F_%H%M%S)"
|
||||
ARCHIVE_FILE="${RESTORE_ARCHIVE_DIR}/${RESTORE_DB}_pre_restore_${ARCHIVE_STAMP}.dump"
|
||||
ARCHIVE_BASENAME="$(basename "$ARCHIVE_FILE")"
|
||||
ARCHIVE_DIR_ABS="$(cd "$RESTORE_ARCHIVE_DIR" && pwd)"
|
||||
|
||||
echo "Archiving existing restore database: ${RESTORE_DB}"
|
||||
pg_dump "$RESTORE_URL" -Fc -f "$ARCHIVE_FILE"
|
||||
(cd "$ARCHIVE_DIR_ABS" && sha256sum "$ARCHIVE_BASENAME" > "${ARCHIVE_BASENAME}.sha256")
|
||||
echo "Archive written to: $ARCHIVE_FILE"
|
||||
echo "Archive checksum written to: ${ARCHIVE_FILE}.sha256"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Creating restore database: ${RESTORE_DB}"
|
||||
psql "$ADMIN_URL" -v ON_ERROR_STOP=1 -c "DROP DATABASE IF EXISTS \"${RESTORE_DB}\";" >/dev/null
|
||||
psql "$ADMIN_URL" -v ON_ERROR_STOP=1 -c "CREATE DATABASE \"${RESTORE_DB}\";" >/dev/null
|
||||
|
||||
Reference in New Issue
Block a user