Надёжное хранение информации — основа бесперебойной работы любой информационной системы. Потеря записей, повреждение файлов или сбои в оборудовании могут обернуться остановкой бизнес-процессов. В этой статье мы расскажем, как сделать бэкап базы данных, как настроить резервное копирование на сервере, а также как из бэкапа восстановить данные — просто, пошагово и на примере PostgreSQL/Postgres Pro.
Зачем нужен бэкап базы данных
Любая база данных содержит информацию, важную для бизнеса: заказы, учет клиентов, транзакции. Потеря этих данных может привести к остановке процессов, финансовым потерям и даже утрате доверия со стороны клиентов. Поэтому важно не только создать резервную копию, но и регулярно проверять возможность восстановления из неё.
К чему может привести отсутствие резервной копии
- Невозможность восстановить БД после сбоя
- Потеря записей и файлов
- Долгое восстановление из сторонних источников
- Нарушение внутренних или внешних стандартов (например, 152-ФЗ, GDPR)

Как настроить резервное копирование на сервере: пошаговая инструкция (PostgreSQL / Postgres Pro)
СУБД PostgreSQL и её российский аналог Postgres Pro поддерживают два способа создания резервных копий:
- Логическое резервное копирование (pg_dump) – подойдёт, если вы хотите копировать отдельные базы, переносить данные между разными серверами или средами, обновлять структуру базы, делать выборочное восстановление. Оно особенно удобно для разработки, тестирования и миграций.
- Физическое резервное копирование (pg_basebackup + архив WAL-файлов) – больше подходит для критичных продакшн-систем, когда важно восстановить всё окружение в конкретный момент времени, включая журналы транзакций и настройки. Этот способ требует больше настроек, но даёт возможность точного восстановления, в том числе при сбоях на уровне системы.
Выбор между логическим и физическим копированием СУБД зависит от ваших задач, масштабов инфраструктуры и требований к восстановлению.
Ниже рассмотрим пошаговые инструкции по настройке каждого варианта.
Логическое копирование базы через pg_dump
Это самый простой способ создать резервную копию рабочей базы. Используется встроенная утилита pg_dump, позволяющая выгрузить структуру и данные в отдельный .bak файл.
Шаги:
1. Убедитесь, что на сервере установлена СУБД, а вы вошли под учётной записью администратора
2. Выполните команду:
bash
pg_dump -U db_admin -F c -b -v -f /backups/backup_file.bak your_database
✅ Это создаст резервную копию базы данных в формате, пригодном для backup восстановление базы данных через pg_restore.
Пояснение параметров:
→ F c — custom-формат
→ b — включает большие объекты
→ v — отображение хода процесса
→ f — путь к файлу для сохранения
your_database — имя целевой базы данных
Физическое копирование через pg_basebackup
Этот способ позволяет восстановить базу на любой момент времени.
Настройка:
1. В файле postgresql.conf:
conf
archive_mode = on
archive_command = 'cp %p /archive/%f'
2. Перезапустите сервер:
bash
systemctl restart postgresql
3. Выполните:
bash
pg_basebackup -D /data/backup -F tar -z -U replicator -P
Для этого пользователь должен обладать правами администратора и входить в роль replication.
Автоматизация создания резервной копии
Для регулярного резервного копирования можно использовать cron:
bash
0 3 * * * pg_dump -U db_admin -F c -f /backup/db_$(date +\%F).bak db_name
Или — сторонние программы для резервного копирования с поддержкой PostgreSQL.
Также допустимо использовать сетевую версию утилиты, установленную на другом сервере, через настройку SSH-доступа.

Как восстановить базу данных из бэкапа
Процесс восстановления зависит от способа создания копии: логического или физического. Ниже описано, как из бэкапа восстановить БД для обоих случаев.
Вариант 1: Восстановление логической копии (pg_restore)
Этот способ рекомендуется использовать в типовых, штатных ситуациях, когда нужно быстро восстановить отдельную базу данных или её часть, особенно если:
→ Вы делали резервную копию базы данных с помощью pg_dump
→ Не требуется откат ко времени сбоя (до секунды)
→ Вы хотите восстановить только структуру, только данные или определённые таблицы
→ Вы переносите данные между серверами или окружениями с разной версией PostgreSQL
Когда использовать:
- Тестовый перенос базы в другое окружение (например, с продакшена на стенд)
- Восстановление после логической ошибки (удаление таблицы, неправильный импорт)
- Перенос базы между версиями PostgreSQL (например, с 13 на 15)
Инструкция:
1. Убедитесь, что PostgreSQL работает, и вы вошли с ролью db_owner
2. Если необходимо, удалите существующую базу данных:
bash
dropdb -U db_admin your_database
createdb -U db_admin your_database
3. Восстановите:
[bash]
pg_restore -U db_admin -d your_database /backups/backup_file.bak
На этом всё. База будет восстановлена из последней резервной копии.
Вариант 2: Восстановление физической копии (pg_basebackup + WAL)
Физическое восстановление — это глубокий уровень восстановления, который позволяет вернуть всё состояние базы на конкретный момент времени, включая:
→ Данные, структуру, настройки, сессии
→ Невозможность частичного восстановления — только полностью
→ Требует включённого архивирования WAL-файлов
Когда использовать:
- Необходимо восстановление базы данных резервной копии до точного момента времени перед сбоем (PITR)
- Произошёл сбой на уровне диска, файловой системы, отказ кластера
- Требуется восстановление всего экземпляра PostgreSQL
- Используется streaming replication или standby-серверы
Инструкция:
1. Остановите СУБД:
bash
systemctl stop postgresql
2. Очистите папку с данными:
bash
rm -rf /var/lib/postgresql/12/main/*
3. Распакуйте архив:
bash
tar -xf /backups/base.tar -C /var/lib/postgresql/12/main/
4. Добавьте recovery.conf с параметром:
conf
restore_command = 'cp /archive/%f %p'
5. Запустите PostgreSQL:
bash
systemctl start postgresql
Если вы укажете recovery_target_time, можно вернуть данные к точному моменту.
⚙️ Узнайте, как эффективно сделать бэкап базы данных PostgreSQL с помощью pg_dump, pg_basebackup и WAL →
Как из бэкапа восстановить данные: важные советы
1. Проверьте путь к файлу .bak — он должен быть доступен серверу
2. Убедитесь, что вы используете ту же версию PostgreSQL, с которой создавался файл резервной копии
3. При восстановлении через pg_restore возможно указать только нужные таблицы, функции или схемы — для частичного восстановления
4. Делайте восстановление базы данных резервной копии restore на тестовом стенде перед применением в продакшене
«Резервное копирование — это не просто техническая задача, а основа устойчивости ИТ-инфраструктуры и бизнеса. В Хайстекс мы помогаем компаниям выстроить процесс так, чтобы восстановление базы данных происходило быстро, точно и без потери данных», — говорит Александр Шукевич, директор по продажам и технический специалист Хайстекс.
Частые ошибки и как их избежать
Ошибка | Решение |
---|---|
Файл не найден | Проверьте, правильно ли указан путь к файлу резервной копии |
Недостаточно прав | Используйте встроенную учетную запись администратора владельца |
Ошибка формата | Убедитесь, что вы используете подходящую версию PostgreSQL |
Нет доступа к архивам WAL | Проверьте конфигурацию archive_command и путь к архивам |
Коротко о главном
Теперь вы знаете:
- Как сделать бэкап базы данных с помощью pg_dump и pg_basebackup
- Как восстановить базу данных из бэкапа, выбрав нужный способ
- Как настроить резервное копирование на сервере и автоматизировать процесс
Вы можете создать резервную копию рабочей базы в любой момент и быть уверены, что в случае сбоя или переноса на новый сервер — данные будут восстановлены.
А решение «Хайстекс Акура» поможет:
📌 Настроить резервное копирование SQL-баз
📌 Сохранять копии как на локальные, так и в облачные хранилища
📌 Автоматизировать процессы восстановления
📌 Учитывать особенности высоконагруженных систем и гибко управлять политиками хранения
Если вы хотите построить надёжную и удобную систему backup восстановление базы данных, обратитесь к нашим специалистам — мы поможем восстановить базу даже в самых сложных случаях.
Хотите восстанавливать данные бизнес-приложений, инфраструктуру за минуты и платить меньше за хранение?
Запишитесь на демо Хайстекс Акура с настройкой под вашу инфраструктуру и оцените эффективность работы решения на практике
Спасибо за заявку
Мы с Вами свяжемся в ближайшее время
Мы не передаём ваши персональные данные третьим лицам и используем их только для связи по вашему запросу. Отправляя форму, вы соглашаетесь на обработку персональных данных.