Резервное копирование и восстановление PostgreSQL

Создание папки для бэкапов и выдача прав
sudo mkdir /bcp-sql sudo chown postgres:postgres /bcp-sql
ls -ld /bcp-sql


Создание бэкапа базы gilev
sudo -u postgres pg_dump -F c -f /bcp-sql/gilev.backup gilev

Восстановление базы в gilev2
sudo -u postgres createdb gilev2


Восстановить данные из бэкапа:
sudo -u postgres pg_restore -d gilev2 /bcp-sql/gilev.backup





Перезапись базы gilev из бэкапа
Остановить пользователей в 1С
Закрыть активные сеансы
Сделать свежий бэкап текущей базы

sudo -u postgres pg_restore -c -d gilev /bcp-sql/gilev.backup
-c — удаляет старые объекты перед восстановлением
-d gilev — целевая база


pgAdmin


1️ Закрыть активные подключения к базе

sudo -u postgres psql -d postgres -c "
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'rti_unf-test'
AND pid <> pg_backend_pid();
"

2️ Пересоздать базу (чтобы не было мусора от прошлых запусков)

sudo -u postgres psql -d postgres -c "DROP DATABASE IF EXISTS \"unf-test\";"
sudo -u postgres psql -d postgres -c "CREATE DATABASE \"unf-test\" TEMPLATE template0;"

Сообщение про /root можно игнорировать — это нормально.


3️ Восстановить дамп

cd /tmpsudo -u postgres bash -c '
set -euo pipefail
zcat /mnt/backups/1c_backups/daily/unf_2026030202.sql.gz | psql -v ON_ERROR_STOP=1 -d "unf-test"
'