Add scripts/ pg_restore02.sh
This commit is contained in:
@@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DB_HOST="localhost"
|
||||||
|
DB_PORT="5432"
|
||||||
|
DB_USER="postgres"
|
||||||
|
DB_OWNER="eds"
|
||||||
|
DUMP_BASE_PATH="/pgbkp/20260730"
|
||||||
|
|
||||||
|
# Списки баз
|
||||||
|
source_db=("db01" "db02" "db03")
|
||||||
|
temp_db=("temp_db01" "temp_db02" "temp_db03")
|
||||||
|
|
||||||
|
# Создаем временные базы
|
||||||
|
for i in "${!source_db[@]}"; do
|
||||||
|
src="${source_db[$i]}"
|
||||||
|
tmp="${temp_db[$i]}"
|
||||||
|
|
||||||
|
echo "Creating: $tmp (from source $src)"
|
||||||
|
psql -p "$DB_PORT" -U "$DB_USER" -c "DROP DATABASE IF EXISTS $tmp WITH (FORCE)" -q
|
||||||
|
|
||||||
|
psql -p "$DB_PORT" -U "$DB_USER" -v ON_ERROR_STOP=1 << EOF
|
||||||
|
CREATE DATABASE $tmp
|
||||||
|
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 $tmp
|
||||||
|
SET log_statement TO 'ddl';
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Database $tmp created with owner $DB_OWNER"
|
||||||
|
else
|
||||||
|
echo "Failed to create database $tmp"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
export PGPASSWORD=""
|
||||||
|
|
||||||
|
# Восстанавливаем дампы
|
||||||
|
for i in "${!source_db[@]}"; do
|
||||||
|
src="${source_db[$i]}"
|
||||||
|
tmp="${temp_db[$i]}"
|
||||||
|
|
||||||
|
echo "Restoring: $src -> $tmp"
|
||||||
|
|
||||||
|
# Примечание: оставлен суффикс _dir, как был в оригинале для формата -F d.
|
||||||
|
# Если ваши папки называются просто по имени базы, замените ${src}_dir на ${src}.
|
||||||
|
if pg_restore -h "$DB_HOST" -p "$DB_PORT" -U "$DB_OWNER" -d "$tmp" -F d -j 4 --no-owner --no-privileges --no-tablespaces "$DUMP_BASE_PATH/${src}_dir"; then
|
||||||
|
echo "Restore $src to $tmp Done"
|
||||||
|
else
|
||||||
|
echo "Restore $src Failed"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "All done"
|
||||||
|
|
||||||
|
unset PGPASSWORD
|
||||||
Reference in New Issue
Block a user