Add scripts/pg_restore01.sh
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user