Компания Postgres Professional выпускает Postgres Pro Backup (ProBackup) 3.5.0 — очередное обновление инструмента резервного копирования и восстановления. В новой версии функциональность удалённого восстановления полностью объединена внутри основной утилиты, расширены возможности синхронизации реплик при расхождении линий времени, добавлена многопоточность при управлении политиками хранения, а также оптимизирована производительность работы с SFTP, S3 и сжатой файловой системой CFS.
Напомним, что Postgres ProBackup разрабатывался с учётом требований крупных корпоративных клиентов. В одном продукте сочетаются базовые функции резервного копирования и возможности, востребованные в Enterprise-сегменте: резервное копирование через API для интеграции с внешними системами управления, хранение бэкапов в формате единого файла, работа без SSH-доступа и без прав к PGDATA (в том числе от непривилегированных пользователей), а также поддержка всех версий PostgreSQL 15+.
Утилита позволяет выполнять монтирование резервных копий через FUSE для мгновенного доступа к данным, осуществлять удалённое восстановление и restore отдельных баз данных, работать в трёх режимах копирования (BASE, PRO, DIRECT), объединять цепочки инкрементальных бэкапов и оптимизировать процессы под различные типы хранилищ — от облачных платформ до enterprise-кластеров с жёсткими требованиями к безопасности и отказоустойчивости.
Единый инструмент удалённого восстановления receive-backup
В версии 3.5.0 функциональность утилиты pgpro_backupstream полностью перенесена в pg_probackup3 в виде новой команды receive-backup. Теперь удалённое восстановление выполняется исключительно силами единой утилиты pg_probackup3 без необходимости привлекать сторонние инструменты.
Связка команд send-backup (на локальном хосте) и receive-backup (на целевом сервере) позволяет передавать, распаковывать и восстанавливать резервные копии напрямую по сети в многопоточном режиме без ручного копирования файлов архива:
поддерживается как полное восстановление в пустой каталог, так и инкрементальное восстановление (
-I/--incremental-mode) в режимахCHECKSUMиLSNпри использовании флага--no-merge;такой подход существенно сокращает время восстановления (RTO) и количество ручных операций при аварийном восстановлении, миграции или автоматическом развёртывании на изолированных удалённых серверах с централизованным хранилищем бэкапов.
Синхронизация реплик при расхождении линий времени в catchup
Команда catchup, предназначенная для клонирования и синхронизации экземпляров без использования каталога резервных копий, получила новый параметр --sync-replica. Он позволяет предварительно проверить возможность синхронизации реплики с ведущим сервером при расхождении историй линий времени — в том числе после повышения реплики. Такая проверка помогает избежать проблем, с которыми пользователи ранее сталкивались при некорректном применении команды.
Доступны два режима работы:
check— пробный запуск с диагностическими проверками и подробным отчётом без изменения данных реплики. Позволяет выявить возможные проблемы до выполнения синхронизации;apply— выполнение синхронизации с внесением изменений: утилита определяет точку расхождения, при необходимости выполняет откат с помощью pg_rewind, затем догоняет ведущий сервер.
Многопоточность в retention и гибкое управление WAL
Расширены возможности управления политиками хранения и архивами журнала предзаписи:
Многопоточный retention. В команду
retentionдобавлена поддержка многопоточности (-j/--threads), а также специализированных параметров--num-write-threadsи--num-validate-threads. Это позволяет значительно ускорить ресурсоёмкие операции объединения устаревших резервных копий (--merge-expired).Точный контроль глубины WAL. Новый параметр
--wal-depthв командеretentionпозволяет при очистке архива WAL гарантированно сохранять сегменты, необходимые для восстановления на момент времени (PITR) от заданного числа последних резервных копий на каждой линии времени.Поддержка keepalive при потоковой передаче WAL. Включена отправка сообщений keepalive с учётом параметра
wal_sender_timeout, что предотвращает разрыв соединения по тайм-ауту во время длительного отсутствия нагрузки на СУБД.
Улучшения производительности и работы с хранилищами (SFTP, S3, FUSE)
В релизе 3.5.0 проведён ряд оптимизаций, ускоряющих сетевой обмен и локальные операции:
Ускорение SFTP. Оптимизирована передача данных для каталогов резервных копий на удалённом хосте (
--remote-host). Теперь данные передаются асинхронно несколькими запросами без ожидания промежуточных ответов в рамках лимитов SFTP-сервера (требуетсяlibssh 0.11или выше).Увеличение буфера обмена. Значение параметра
--buffer-sizeпо умолчанию увеличено со 128 КБ до 1 МБ, что дополнительно повышает пропускную способность при работе с хранилищами.Тайм-ауты S3. Добавлен параметр
--s3-timeoutдля явного задания максимального времени выполнения HTTP-запроса к S3-серверу.Оптимизация проверки и монтирования. Проверка резервных копий в режиме
STREAMтеперь обрабатывает WAL-файлы и файлы данных за один проход вместо двух отдельных. Кроме того, ускорено чтение метаданных при монтировании копий через FUSE и проверка поддержки контрольных сумм на сервере.Работа с внешними каталогами. В команде
backupс параметром--external-dirsдобавлена корректная обработка символических ссылок, а при отсутствии указанного внешнего каталога утилита теперь явно сообщает об ошибке вместо молчаливого пропуска.
Стабильность и эффективность работы с CFS (Compressed File System)
Внесены важные исправления в логику работы со сжатыми файловыми системами и шифрованием (TDE):
Оптимальное инкрементальное восстановление CFS. Устранена проблема, из-за которой неизменённые страницы не распознавались при инкрементальном восстановлении и дописывались в конец файла, приводя к росту размера файлов данных.
Улучшена сохранность разреженных и зашифрованных страниц. Предотвращена вероятность потери разреженных страниц при резервном копировании CFS за счёт расчёта числа страниц по фактическому размеру файла, а не по числу непустых записей в файле отображения. Исправлена ошибка, при которой страницы, зашифрованные с помощью TDE, при восстановлении CFS воспринимались как пустые, а также устранены сбои проверки TDE при ограниченных правах чтения параметра
encryption.Повышена надёжность многопоточной обработки и сжатия. Устранены состояния гонки (race conditions) при параллельной обработке файлов CFS, исправлена обработка пустых страниц со сжатием
pglz, а также обеспечено создание файлов отображения CFS в полном размере при восстановлении. В режимеDIRECTалгоритм сжатия CFS теперь фиксируется непосредственно в блоке данных, что исключает ошибки при последующем восстановлении.
Прочие улучшения безопасность и надёжности восстановления
В релизе устранена уязвимость, позволявшая выполнить произвольную команду оболочки через путь к точке монтирования при размонтировании FUSE. Также исправлено переполнение буфера при передаче длинных значений параметров --remote-host и --remote-user в команду send-backup.
Исправлены и другие ошибки, затрагивавшие сохранность копий и выполнение операций:
команда
del-instanceпри работе с S3 больше не удаляет другие экземпляры, имена которых начинаются с имени удаляемого;при инкрементальном восстановлении после изменения линии времени теперь учитывается файл истории линий времени;
устранены ошибки удаления копий после объединения и объединения полностью устаревших инкрементальных цепочек командой
retention;исправлена обработка частичной отправки файлов и ошибок в рабочих потоках команды
send-backup;исправлено резервное копирование WAL-файлов большого размера;
команда
mergeс параметром--dry-runбольше не выполняет проверку и не удаляет резервные копии.
Обновление до версии 3.5.0
При переходе с версии 3.2.x или более ранней необходимо учитывать изменение состава пакетов: начиная с версии 3.3.0 библиотеки libpgprobackup.so и libpb3_encoder.so входят в единый пакет libpb3-encoder. Если для работы в режиме PRO ранее был установлен пакет libpgprobackup3, перед обновлением его необходимо удалить.
Полное описание возможностей ProBackup 3.5.0, порядок установки и обновления приведены в документации:

Комментарии 0