diff --git a/scripts/pg_restore01.sh b/scripts/pg_restore01.sh new file mode 100644 index 0000000..0fd18f6 --- /dev/null +++ b/scripts/pg_restore01.sh @@ -0,0 +1,58 @@ +#!/bin/bash + + +DB_HOST="localhost" +DB_PORT="5432" +DB_USER="postgres" +DB_OWNER="eds" +DUMP_BASE_PATH="/pgbkp/20260730" + +# Список баз +databases=("db01" "db02" "db03") + + +# Создаем базы +for db in "${databases[@]}"; do + echo "Creating: $db" + psql -p "$DB_PORT" -U "$DB_USER" -c "DROP DATABASE IF EXISTS $db WITH (FORCE)" -q + + psql -p "$DB_PORT" -U "$DB_USER" -v ON_ERROR_STOP=1 << EOF + CREATE DATABASE $db + WITH + OWNER = $DB_OWNER + ENCODING = 'UTF8' + LC_COLLATE = 'en_US.UTF-8' + LC_CTYPE = 'en_US.UTF-8' + ICU_LOCALE = 'en-US' + LOCALE_PROVIDER = 'icu' + TABLESPACE = pg_default + CONNECTION LIMIT = -1 + IS_TEMPLATE = False; + ALTER DATABASE $db + SET log_statement TO 'ddl'; +EOF + + if [ $? -eq 0 ]; then + echo "Database $db created with owner $DB_OWNER" + else + echo "Failed to create database $db" + exit 1 + fi + +done + +export PGPASSWORD="" + +# Восстанавливаем +for db in "${databases[@]}"; do + echo "Restoring: $db" + if pg_restore -h "$DB_HOST" -p "$DB_PORT" -U "$DB_OWNER" -d "$db" -F d -j 4 --no-owner --no-privileges --no-tablespaces "$DUMP_BASE_PATH/${db}_dir"; then + echo "Restore $db Done" + else + echo "Restore $db Failed" + fi +done + +echo "All done" + +unset PGPASSWORD