Backup — это не копия, это гарантия восстановления
Резервное копирование базы данных — единственная вещь, которая отличает «потеряли данные за месяц» от «потеряли 30 минут». Если backup делается вручную и никогда не восстанавливался — это не backup, это иллюзия.
Три уровня резервного копирования PostgreSQL
Уровень 1: pg_dump — логический backup
pg_dump создаёт полный логический снимок схемы и данных. Это SQL-скрипт или архив, который можно восстановить на любой PostgreSQL той же мажорной версии.
pg_dump -h localhost -U postgres -Fc -f /backup/db.dump mydb
Запускается по расписанию через cron или systemd timer. Полный снимок — раз в сутки, ночью.
Уровень 2: WAL-архивирование — непрерывный лог
PostgreSQL пишет WAL (Write-Ahead Log) — журнал всех изменений. Если архивировать WAL, можно восстановить состояние БД на любую минуту. Это называется Point-in-Time Recovery (PITR).
В postgresql.conf:
archive_mode = on archive_command = 'test ! -f /backup/wal/%f && cp %p /backup/wal/%f' wal_level = replica
Каждый WAL-сегмент копируется в архив. При восстановлении: восстанавливаем последний pg_dump, затем накатываем WAL до нужного момента.
Уровень 3: Тест восстановления
Backup, который никогда не восстанавливали — это не backup. Регулярно (раз в месяц) восстанавливаем backup на тестовом сервере и проверяем:
- БД запускается.
- Схема целостна.
- Данные за последний период присутствуют.
- Приложение подключается и работает.
Типичное расписание
- Полный pg_dump — ежедневно, 02:00.
- WAL-архивирование — непрерывно.
- Хранение — 30 дней полных backup + 7 дней WAL.
- Тест восстановления — ежемесячно, первое воскресенье.
Хранение
Backup хранится НЕ на том же сервере, что и БД. Варианты:
- Отдельный сервер в той же сети.
- S3-совместимое хранилище (MinIO, Yandex Object Storage).
- Ленточный накопитель (для долгого хранения).
Правило 3-2-1: 3 копии, 2 разных носителя, 1 вне площадки.
Для критичных систем: репликация
Для MES/WMS, где простой стоит дорого — streaming replication на горячий резерв. При падении основного сервера — переключение на резервный за секунды. RPO ≈ 0, RTO ≈ 30 секунд.
Что получает заказчик Контур Логики
- Backup-скрипты в репозитории.
- Расписание в cron/systemd.
- Скрипт восстановления с проверкой.
- Документацию: как восстановить за 30 минут.
Это не «дополнительная услуга» — это базовый уровень инженерной культуры. Система без backup — это система, которая ждёт аварии.