Бэкапы

Бэкапы базы данных

Раздел управления резервными копиями PostgreSQL. Позволяет создавать бэкапы вручную и настраивать автоматическое резервное копирование по расписанию.

Основные возможности

  • Создание бэкапа вручную из веб-интерфейса
  • Автоматический бэкап по расписанию (каждую ночь в 4:00)
  • Просмотр истории бэкапов с размерами и статусами
  • Настройка количества хранимых бэкапов (ротация)
  • Восстановление через консоль сервера

Что включается в бэкап

Бэкап содержит все данные базы, кроме:

  • Тел запросов и ответов (api_requests.request_body, api_requests.response_body) — исключены намеренно для уменьшения размера

Формат бэкапа: PostgreSQL custom format (pg_dump --format=custom), что обеспечивает сжатие и возможность выборочного восстановления.

Хранение файлов

Внутри контейнера файлы лежат в /app/backups/. В стандартной установке это
каталог backups/ рядом с compose.prem.yml — например /opt/prem/backups/,
то есть бэкапы доступны прямо на сервере, без обращения к контейнеру.

Имена файлов: backup_YYYYMMDD_HHMMSS.dump

⚠️ Бэкапа базы недостаточно для полного восстановления. Он содержит
только базу и не включает ни загруженные файлы и вложения, ни файл .env с
ключами шифрования. Без .env зашифрованные поля (ключи API узлов, пароль
подключения к LDAP) не восстановятся даже из корректного бэкапа базы.
Полная процедура резервного копирования и восстановления описана в инструкции
по установке.

Настройки

Параметр По умолчанию Описание
Автобэкап Выключен Включить автоматический бэкап по расписанию
Хранить бэкапов 3 Количество последних бэкапов для хранения

Настройки доступны в разделе Настройки → «Бэкапы базы данных».

Ротация бэкапов

После каждого успешного бэкапа система автоматически удаляет старые файлы, оставляя только N последних (по настройке «Хранить бэкапов»). Удаляются как файлы на диске, так и записи в базе данных.

Создание бэкапа вручную

  1. Перейдите в раздел Система → Бэкапы
  2. Нажмите кнопку «Создать бэкап»
  3. Подтвердите действие
  4. Бэкап запускается в фоне — статус обновится на странице

⚠️ Одновременно может выполняться только один бэкап. Если бэкап уже запущен, кнопка недоступна.

Восстановление из бэкапа

Восстановление выполняется только через консоль сервера. Веб-интерфейс не поддерживает восстановление.

⚠️ Внимание: восстановление перезапишет все текущие данные в базе. Убедитесь, что у вас есть актуальный бэкап перед выполнением операции.

Шаг 1: Найти нужный файл

Бэкапы лежат в каталоге установки, поэтому проще всего посмотреть их прямо на
сервере:

ls -lh /opt/prem/backups/

Пример вывода:

-rw-r--r-- 1 root root 12M Mar 12 04:00 backup_20260312_040000.dump
-rw-r--r-- 1 root root 11M Mar 11 04:00 backup_20260311_040000.dump
-rw-r--r-- 1 root root 11M Mar 10 04:00 backup_20260310_040000.dump

Шаг 2: Восстановить бэкап

cd /opt/prem
sudo ./prem exec app bash -c \
  'PGPASSWORD="$DATABASE_PASSWORD" pg_restore --clean --if-exists \
   -h "$DATABASE_HOST" -U "$DATABASE_USER" -d "$DATABASE_NAME" \
   /app/backups/backup_20260312_040000.dump'

Параметры подключения берутся из переменных окружения контейнера, поэтому имя
базы и пароль подставлять вручную не нужно.

Шаг 3: Перезапустить приложение

cd /opt/prem
sudo ./prem restart app solid_queue

Автоматический бэкап

При включённом автобэкапе задача DatabaseBackupJob запускается каждую ночь в 4:00 через Solid Queue. Расписание задано в config/recurring.yml.

Если автобэкап выключен в настройках, задача запускается, но сразу завершается без создания бэкапа.

Связанные разделы