Migsoft
0

Резервное копирование PostgreSQL: pg_dump или pg_probackup

Для переноса и небольших баз хватает логического дампа pg_dump. Продуктивной базе нужен физический бэкап с восстановлением на момент времени: в PostgreSQL это pg_basebackup плюс WAL-архив, а в Postgres Pro — pg_probackup 3 с инкрементами, проверкой копий, запуском базы прямо из копии и хранением в S3.

Виталий Куренков
Менеджер Migsoft по СУБД Postgres Pro: помогает подобрать редакцию и рассчитать лицензии по ядрам
14 августа 2026 · 8 минут чтения · Обновлено 6 октября
Содержание

Администраторы обычно приходят к этой теме одним из двух путей: либо база выросла и ночной дамп перестал успевать, либо восстановление после сбоя заняло полдня и стало ясно, что «у нас есть pg_dump» — это ещё не стратегия. Разберём все три уровня резервного копирования PostgreSQL с рабочими командами: логический дамп, физическую копию с восстановлением на момент времени и pg_probackup — штатную утилиту СУБД Postgres Pro, которая закрывает жизненный цикл копий целиком.

Короткий ответ: какой инструмент выбрать

Возможность pg_dump pg_basebackup pg_probackup 3 (Standard) pg_probackup 3 (Enterprise)
Тип копии Логическая (SQL) Физическая Физическая Физическая
Инкрементальные копии Нет С PostgreSQL 17 Да (DELTA, PTRACK) Да (DELTA, PTRACK)
Восстановление на момент времени (PITR) Нет Да, с WAL-архивом Да Да
Проверка копии без восстановления Нет Нет Да Да
Политики хранения, слияние цепочек Нет Нет Да Да
Копия отдельной базы данных Да Нет Да Да
Копия единым файлом Да (файл дампа) Нет Да Да
Запуск базы прямо из копии (FUSE) Нет Нет Нет Да
Хранение копий в S3 Нет Нет Нет Да

Практический ориентир: база до десятка гигабайт и допустима потеря дня работы — достаточно pg_dump по расписанию. Продуктивная база, которую нужно уметь вернуть на конкретную минуту, — физический бэкап с WAL-архивом. Много баз, большие объёмы, требования к сроку восстановления — pg_probackup.

pg_dump: когда логической копии достаточно

pg_dump выгружает одну базу в виде набора SQL-команд, которые заново создают все объекты и данные. Дамп не мешает работе: пока идёт выгрузка, пользователи продолжают читать и писать, а копия получается согласованной на момент запуска.

Базовые команды по документации PostgreSQL:

pg_dump -Fc mydb > db.dump          # копия в сжатом формате для pg_restore
pg_dump -Fd mydb -j 5 -f dumpdir    # формат каталога, выгрузка в 5 потоков
pg_restore -d newdb db.dump         # восстановление в чистую базу
pg_dump -t mytab mydb > table.sql   # выгрузка одной таблицы

Роли и табличные пространства принадлежат кластеру, а не базе, поэтому pg_dump их не выгружает — для них есть pg_dumpall. Рабочая связка: дамп каждой базы в своём формате плюс pg_dumpall -g для глобальных объектов.

Ограничения тоже честные. Восстановление дампа — это выполнение всех SQL-команд заново с перестроением индексов: на сотнях гигабайт процесс растягивается на часы. И главное — вернуться можно только на момент запуска pg_dump. Всё, что записано после, теряется. Если это неприемлемо, нужен следующий уровень.

Физический бэкап и PITR: pg_basebackup и WAL-архив

Физическая копия — это файлы кластера как есть, плюс журнал предзаписи (WAL), в который PostgreSQL пишет каждое изменение. Пара «базовая копия + непрерывный архив WAL» позволяет восстановить кластер на любой момент времени — это и есть PITR (point-in-time recovery).

Включите архивирование WAL в postgresql.conf:

wal_level = replica
archive_mode = on
archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'

И снимайте базовую копию:

pg_basebackup -D /backup/base -Ft -z -P   # сжатые tar-файлы, с прогрессом

Начиная с PostgreSQL 17 pg_basebackup умеет и инкрементальные копии: сервер ведёт сводки WAL, параметр --incremental принимает манифест предыдущей копии, а перед восстановлением цепочка склеивается утилитой pg_combinebackup. Следить за цепочками, сроками хранения и целостностью копий при этом придётся самостоятельно — встроенного учёта взаимосвязей между копиями в PostgreSQL нет, документация прямо предупреждает об этом.

Для многих инсталляций этой схемы достаточно, и если ваш RPO измеряется минутами, а восстановление раз в год терпит ручную работу — можно остановиться здесь. pg_probackup нужен, когда копий много, базы большие, а восстановление должно быть быстрым и предсказуемым.

pg_probackup: что добавляет Postgres Pro

pg_probackup 3 поставляется в составе СУБД Postgres Pro Standard и Enterprise и заменяет самодельную обвязку вокруг pg_basebackup системой управления копиями: каталог с метаинформацией, инкременты, проверка целостности, политики хранения, параллельные потоки. Типовой сценарий:

pg_probackup3 init -B /backup
pg_probackup3 add-instance -B /backup -D /var/lib/pgpro/data --instance=main
pg_probackup3 backup -B /backup --instance=main -b FULL --stream    # полная копия
pg_probackup3 backup -B /backup --instance=main -b PTRACK --stream  # инкремент
pg_probackup3 show -B /backup                                       # каталог копий
pg_probackup3 validate -B /backup                                   # проверка целостности

Механизм PTRACK отслеживает изменённые страницы прямо в момент записи, поэтому инкрементальная копия не читает всю базу заново. При восстановлении работает обратная оптимизация: режим -I CHECKSUM заменяет в существующем каталоге данных только повреждённые и изменённые страницы вместо полного копирования. Политика хранения задаётся один раз, дальше утилита сама чистит устаревшие копии и ненужные сегменты WAL:

pg_probackup3 set-config -B /backup --instance=main --retention-redundancy=2 --retention-window=7
pg_probackup3 retention -B /backup --instance=main --delete-expired --delete-wal

Восстановление на момент времени — одной командой, без ручной правки конфигурации восстановления:

pg_probackup3 restore -B /backup --instance=main --recovery-target-time="2026-08-14 09:00:00+03" --recovery-target-action=promote

Третья версия добавила то, чего не было ни в pg_basebackup, ни в старом pg_probackup: копия хранится единым файлом, а не россыпью тысяч мелких; одна версия утилиты обслуживает разные версии СУБД; копировать и восстанавливать можно отдельную базу данных, а не только кластер целиком; цепочки инкрементов объединяются командой merge.

В

Товар Postgres Pro Enterprise от 358 172 ₽ Смотреть →

к этому добавляется уровень, который вендор называет работой с базой «прямо из резервной копии»: команда fuse монтирует копию как виртуальный каталог PGDATA, и экземпляр СУБД запускается на ней в режиме чтения — без полного восстановления. Так можно достать случайно удалённые данные через pg_dump со вчерашней копии, проверить состояние базы на нужную дату или построить отчёт, пока продуктив работает. Enterprise же открывает хранение копий в S3-совместимых хранилищах (данные передаются в бакет напрямую, без промежуточного диска), поддержку сжатой файловой системы CFS и ленточных устройств. Обе редакции при этом совместимы с российскими системами резервного копирования — Кибер Бэкапом и RuBackup.

Стратегия: RPO и RTO на пальцах

Прежде чем выбирать инструмент, ответьте на два вопроса. RPO (recovery point objective) — сколько данных не жалко потерять: час работы операторов? день? RTO (recovery time objective) — сколько бизнес переживёт простоя, пока база восстанавливается. Дальше арифметика простая.

Ночной pg_dump — это RPO до 24 часов и RTO в часы на заметной базе. Базовая копия с WAL-архивом сжимает RPO до минут, но RTO зависит от того, сколько WAL придётся воспроизвести с момента последней полной копии. Инкременты pg_probackup позволяют делать копии чаще и быстрее, инкрементальное восстановление сокращает RTO, а FUSE в Enterprise даёт доступ к данным из копии за минуты — ещё до того, как полное восстановление завершится.

Куда можно откатить базу после ошибки

Ночной дамп и физическая копия с архивом WAL в одной и той же аварии.

Ночной pg_dump

Логическая копия раз в сутки по расписанию.

  1. Дамп ночью копия на момент запуска

    pg_dump выгружает базу набором SQL-команд. Пока идёт выгрузка, пользователи продолжают работать, а копия согласована на момент запуска.

  2. Рабочий день пишутся новые данные

    Всё, что записано после запуска дампа, в копию уже не попадёт.

  3. Ошибочная обработка данные испорчены

    Днём запущена обработка, которая испортила данные. Базу нужно вернуть в состояние до неё.

  4. Восстановление все SQL-команды заново

    Восстановление дампа — выполнение всех SQL-команд заново с перестроением индексов: на сотнях гигабайт процесс растягивается на часы.

Вернуться можно только на момент запуска дампа: RPO до 24 часов, а восстановление заметной базы занимает часы. Итог — в конце сценария

Копия и архив WAL

Физическая базовая копия плюс непрерывный архив журнала.

  1. Базовая копия файлы кластера как есть

    Физическая копия — это файлы кластера как есть. Её снимают pg_basebackup или pg_probackup.

  2. Архив WAL каждое изменение в архиве

    В журнал предзаписи PostgreSQL пишет каждое изменение. Пара «базовая копия + непрерывный архив WAL» позволяет восстановить кластер на любой момент времени.

  3. Ошибочная обработка данные испорчены

    Та же авария: днём запущена обработка, которая испортила данные.

  4. Восстановление на минуту до ошибки

    Копия плюс воспроизведение WAL до нужной точки — это PITR. С pg_basebackup восстановление требует ручной работы, в pg_probackup — одна команда restore, без ручной правки конфигурации восстановления.

  5. База в работе состояние до ошибки

    Инкременты pg_probackup позволяют делать копии чаще, а инкрементальное восстановление сокращает время простоя.

Базу возвращают на минуту до запуска ошибочной обработки, а не на прошлую ночь. Время восстановления зависит от того, сколько WAL нужно воспроизвести с последней полной копии. Итог — в конце сценария

Схема упрощена: условный рабочий день, ошибочная обработка запущена днём.

Копия, которую ни разу не восстанавливали, — не резервная копия, а надежда. Регулярно восстанавливайте бэкап на тестовый сервер и засекайте время: это и есть ваш реальный RTO, и узнать его лучше не во время аварии.

Бэкап баз 1С на PostgreSQL

Перевод 1С на PostgreSQL сам по себе снимает главный страх файлового режима — «файл базы данных повреждён»; если вы пришли сюда именно с этой ошибкой, начните со статьи Ошибка СУБД в 1С: что делать.

База 1С в PostgreSQL — обычная база кластера, и для СУБД работают все описанные инструменты. Специфика в другом: баз обычно много (рабочая, копии для разработки, тестовые), они большие, и разработчикам регулярно нужна свежая копия отдельной базы, а не кластера целиком. Ровно этот сценарий вендор закрывает в pg_probackup: резервное копирование и восстановление отдельных баз, по оценке Postgres Professional, в несколько раз ускоряет получение копий баз для задач 1С, а PITR позволяет откатить последствия ошибочной обработки на минуту до её запуска.

Для 1С у вендора есть отдельный продукт —

Товар Postgres Pro Enterprise для 1С от 16 915 ₽ Смотреть →

— сборка Postgres Pro Enterprise с пресетом настроек под нагрузку 1С и лицензированием по конфигурации сервера, а не по ядрам. Как выбрать между бесплатной сборкой и коммерческой версией — разобрали в статье PostgreSQL для 1С.

Сколько стоит pg_probackup

Отдельной лицензии на pg_probackup не существует — утилита входит в поставку СУБД Postgres Pro Standard и Enterprise. Лицензируются сами СУБД, по ядрам процессора: сервер на 8 ядер — это 8 лицензий, минимальная покупка — 2 ядра. Лицензия бессрочная, первый год гарантийной поддержки включён.

Standard закрывает базовый сценарий: инкременты PTRACK, проверка копий, политики хранения, копии отдельных баз единым файлом. Enterprise добавляет запуск базы из копии через FUSE, хранение в S3 и ленты — плюс возможности самой СУБД уровня отказоустойчивого кластера BiHA. Полное сравнение редакций — в разборе Postgres Pro и PostgreSQL: в чём разница.

Лицензия СУБД Postgres Pro Standard на 1 ядро x86-64
Рекомендуем в статье Лицензия СУБД Postgres Pro Standard на 1 ядро x86-64
PPT-86-LIC
195 006 ₽ НДС не облагается (ст. 149 НК РФ) — позиция в реестре российского ПО
В корзине Подробнее →

Как купить на юрлицо

СУБД Postgres Pro включена в реестр российского ПО, поэтому лицензии не облагаются НДС и проходят в проекты с требованием импортозамещения. Работаем с юрлицами по безналичному расчёту: счёт, договор, закрывающие документы, комплект для тендерной документации. Отгрузка электронная.

Лицензирование по ядрам — с репликами, виртуализацией и минимумами — считается не всегда очевидно, поэтому пришлём расчёт лицензий под вашу конфигурацию и поможем спроектировать схему резервного копирования — бесплатно, в течение рабочего дня.

Документы для тендера
КП с печатью, счёт, УПД, номера реестра в спецификации.
Сверка совместимости
Проверим вашу конфигурацию по базе вендора до оплаты — бесплатно.

Частые вопросы

Чем pg_dump отличается от полноценного бэкапа? +

pg_dump снимает логическую копию: SQL-команды, которые создают базу заново. Вернуться можно только на момент запуска дампа, а восстановление большой базы занимает часы. Физический бэкап с WAL-архивом (pg_basebackup, pg_probackup) восстанавливает кластер на любую минуту и работает на уровне файлов, без перестроения индексов.

Как восстановить PostgreSQL на момент времени? +

Нужны базовая физическая копия и непрерывный архив WAL с момента её создания. В pg_probackup это одна команда restore с параметром --recovery-target-time; в чистом PostgreSQL — восстановление базовой копии и параметры целевой точки в конфигурации восстановления.

Как проверить, что резервная копия рабочая? +

В pg_probackup команда validate проверяет целостность копий по контрольным суммам без восстановления, а сами страницы сверяются ещё в момент копирования. Полную уверенность даёт только тестовое восстановление — делайте его регулярно и замеряйте время.

Где хранить резервные копии? +

Не на том же сервере, что база. Минимум — отдельный сервер или СХД; pg_probackup умеет копировать на удалённую систему по SSH, а в редакции Enterprise — напрямую в S3-совместимое хранилище и на ленточные библиотеки, без промежуточного диска.

Виталий Куренков
Менеджер Migsoft по СУБД Postgres Pro: помогает подобрать редакцию и рассчитать лицензии по ядрам

Читайте дальше

Корпоративная почта для компании: как выбрать сервис Гайды по продуктам Корпоративная почта для компании: как выбрать сервис Как выбрать корпоративную почту для компании: облако или свой сервер, что сравнивать в тарифах и чем отличаются Яндекс 360 и VK WorkSpace — с ценами за пользователя и порядком оформления на юрлицо. 7 октября 2026 · 8 мин чтения Контроль USB и флешек в организации: как выбрать программу Киберпротект · Гайды по продуктам Контроль USB и флешек в организации: как выбрать программу Программа контроля USB решает, какие флешки, диски, телефоны и принтеры можно подключать к рабочим компьютерам и кому что на них записывать. Разбираем, где хватает групповых политик Windows, что требует ФСТЭК от контроля съёмных носителей и как выбрать между Кибер Протего, Secret Net Studio и Kaspersky Endpoint Security. 6 октября 2026 · 9 мин чтения Своё S3-хранилище: облако или собственные серверы Киберпротект · Гайды по продуктам Своё S3-хранилище: облако или собственные серверы Своё S3-хранилище даёт тот же программный интерфейс, что и облако, но данные остаются на ваших серверах. Разбираем, когда это оправдано, какие российские программно-определяемые хранилища есть, что даёт сертификат ФСТЭК и как считается лицензия по объёму. 6 октября 2026 · 8 мин чтения
Postgres Pro Enterprise
от 358 172 ₽
Выбрать