Релиз ProBackup 3.5.0: единый инструмент удалённого восстановления, синхронизация реплик и многопоточный retention

Компания 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, порядок установки и обновления приведены в документации:

https://postgrespro.ru/docs/pg_probackup3/3.5/index

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев