Files
psql_tasks/scripts/pg_restore01.sh
T

59 lines
1.3 KiB
Bash
Raw Normal View History

2026-08-07 17:24:51 +08:00
#!/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