Как сделать бэкап базы данных PostgreSQL: инструкция, советы и автоматизация
- 9 мин.
Потеря данных — одна из главных угроз для любого бизнеса. Поэтому вопрос, как сделать бэкап PostgreSQL встаёт раньше, чем произойдёт сбой. В этой статье простыми словами расскажем, как выполнить резервное копирование базы данных PostgreSQL, какие инструменты подойдут под разные задачи и как автоматизировать этот процесс с помощью решений от Хайстекс.
Почему важно делать бэкапы PostgreSQL
PostgreSQL — одна из самых популярных СУБД с открытым кодом. Её выбирают стартапы, крупный бизнес, государственные организации. Но, как и любая база данных, PostgreSQL уязвима к:
- ошибкам пользователей (например, случайное удаление таблицы);
- аппаратным сбоям и перегрузкам;
- вирусным атакам, включая ransomware;
- неудачным обновлениям или миграциям.
Поэтому знание того, как сделать бэкап БД PostgreSQL, — это не опция, а необходимость. Особенно если вы хотите соблюдать принципы RPO и RTO, о которых мы рассказывали в другой статье.
Способы, как сделать бэкап PostgreSQL: от простых до профессиональных
Существует несколько подходов к созданию резервных копий PostgreSQL. Ниже — обзор самых популярных, с плюсами, минусами и примерами.
1. Классический способ, если вы только начали:
pg_dumpОдин из самых простых и доступных способов как сохранить копию базы данных PostgreSQL — использовать встроенную утилиту pg_dump. Она создаёт дамп в виде SQL-скрипта или в сжатом бинарном формате.
Пример:
bash
pg_dump -U postgres -F c -b -v -f backup_file.backup your_databaseПреимущества:
- Простой запуск и настройка;
- Можно бэкапить отдельные таблицы, схемы;
- Подходит для ежедневных или ручных бэкапов.
Ограничения:
- Подходит только для отдельных БД, не всего экземпляра;
- В больших проектах — может быть медленным;
SQL-дампы можно восстанавливать через PostgreSQL.
Это подход для тех, кто начинает или работает с небольшими проектами и хочет понять, каким образом можно сделать резервную копию PostgreSQL вручную.
pg_basebackup
pg_basebackup позволяет создавать физическую резервную копию всего кластера PostgreSQL, включая данные и журналы WAL.
Пример:
bash
pg_basebackup -h localhost -D /var/lib/postgresql/backup -U replica -Fp -Xs -P
Преимущества:
- Подходит для «живого» бэкапа без остановки;
- Копирует весь экземпляр целиком;
- Можно использовать для настройки репликации.
- Нельзя выбрать отдельную базу;
- Требует пользователя с правами репликации.
- Если вы ищете надёжный способ как настроить бэкап БД PostgreSQL для продакшн-среды — этот вариант подойдёт.
3. Файловые снапшоты — скорость и интеграция с инфраструктурой
Вы можете использовать файловую систему (например, ZFS, LVM) или гипервизоры (например, KVM) для создания моментального снимка всей системы, включая PostgreSQL, но необходимо либо перевести PostgreSQL в режим бэкапа (pg_backup_start / pg_backup_stop в PG15+, ранее pg_start_backup / pg_stop_backup), либо убедиться, что снапшот обеспечивает crash-consistent состояние. Без этого данные после восстановления могут оказаться повреждёными.
Преимущества:
- Очень быстрое создание;
- Не нагружает PostgreSQL напрямую.
Ограничения:
- Сложнее восстановить отдельную таблицу или строку;
- Требует понимания, как работают транзакционные журналы и состояния WAL.
archive_mode = on в postgresql.conf
Также необходимо установить wal_level = replica (или выше) в postgresql.conf. По умолчанию wal_level = replica, но если он не выставлен явно, читатель может не знать об этом требовании, то есть без неё WAL не будет содержать достаточно данных для PITR.
Задайте
archive_command
Например,
bash
archive_command = 'cp %p /var/lib/pgsql/archive/%f'
Важно: при использовании этого метода также нужно регулярно делать полные бэкапы базы (pg_basebackup или pg_dump). pgBackRest — если нужен production-ready инструмент
pgBackRest — зрелый специализированный инструмент резервного копирования PostgreSQL, разработанный Crunchy Data. Написан на C, распространяется с открытым исходным кодом. De facto стандарт для продакшн-окружений, когда встроенных утилит уже недостаточно: он объединяет физическое копирование, WAL-архивирование и управление бэкапами в едином решении.
Что умеет:
- Полные, дифференциальные и инкрементальные бэкапы;
- Встроенное WAL-архивирование и PITR — заменяет ручную настройку archive_command;
- Параллельное копирование и восстановление — ощутимо ускоряет работу на больших базах;
- Сжатие и шифрование данных нативно, без внешних инструментов;
- Поддержка хранилищ: локальное, S3, Azure Blob Storage, Google Cloud Storage.
# полный бэкап
pgbackrest --stanza=mydb backup --type=full
# инкрементальный бэкап
pgbackrest --stanza=mydb backup --type=incr
# восстановление на точку во времени
pgbackrest --stanza=mydb --delta restore --target="2024-01-15 14:00:00"
Если вы уже используете WAL-архивирование и вам нужна надёжная автоматизация без написания собственных скриптов — pgBackRest станет логичным следующим шагом. Как восстановить базу данных из бэкапа? Рассматриваем кейс восстановления на примере СУБД PostgreSQL / Postgres Pro →
Что учитывать, когда вы решаете, как сделать бэкап БД PostgreSQL
При выборе стратегии резервного копирования важно учитывать:
- Автоматизацию: не полагайтесь на ручные скрипты — используйте планировщики (cron, systemd) или автоматизированные платформы.
- Безопасность хранения: копия на том же сервере = отсутствие бэкапа. Используйте внешние хранилища или S3-совместимые облака.
- Шифрование и контроль доступа: особенно важно при работе с персональными или коммерческими данными.
- Тестирование восстановления: убедитесь, что вы действительно можете восстановить данные — хотя бы раз в квартал.
- Журналирование и мониторинг: проверяйте статус завершения каждой резервной копии.
Готовы защитить свои базы данных PostgreSQL от простоев и потерь данных?
Оставьте почту и мы проведём бесплатный экспресс-аудит инфраструктуры, покажем слабые места и предложим решения для вашего бизнеса. Не откладывайте на потом!
Как Хайстекс Акура помогает автоматизировать бэкап PostgreSQL
Если вы не хотите каждый раз вручную разбираться, как сделать бэкап базы данных PostgreSQL, — особенно в случае масштабной, гибридной или облачной инфраструктуры — стоит рассмотреть готовое решение.
Хайстекс Акура предлагает:
- Поддержку PostgreSQL на виртуальных и физических серверах, а также в облаках;
- Автоматическое создание резервных копий с нужной периодичностью;
- Архивирование и шифрование данных «из коробки»;
- Создание резервных копий данных и журнала транзакций по заданному вами расписанию, которые можно использовать для восстановления сервера на конкретный момент времени — вплоть до нужной транзакции;
- Централизованную панель управления и отчётность;
- Интеграцию с S3-хранилищами, включая Selectel, Yandex, VK Cloud и другие.
С помощью Хайстекс Акура вы сможете упростить процессы, обеспечить соответствие требованиям по RPO и RTO и избавиться от ручной рутины. Это решение подойдёт тем, кто ищет надёжный и проверенный способ как сделать бэкап PostgreSQL в корпоративной среде.
🔖 Защита от программ-вымогателей с Хайстекс Акура: как сохранить точки восстановления и обеспечить ИТ-устойчивость →