Перейти к содержанию

Примечания к выпускам

История выпусков pgBackRest с подробным описанием изменений каждой версии.

Введение

Номер выпуска pgBackRest состоит из двух частей: основной и дополнительной. Основной выпуск может нарушать совместимость с предыдущим основным выпуском, однако выпуски v2 полностью совместимы с репозиториями v1 и принимают все параметры v1. Дополнительные выпуски могут включать исправления ошибок и новые возможности, но не меняют формат репозитория; изменения параметров и имён по возможности исключаются. Документация выпуска v1 доступна здесь . Примечания к выпуску также могут содержать раздел «Дополнительные примечания», но описанные в нём изменения касаются только документации или набора тестов и не влияют непосредственно на код pgBackRest.


Документированный стабильный выпуск

Это зеркало содержит документацию v2.59.3. Сведения о более новых версиях доступны в истории выпусков исходного проекта .

Примечания к выпуску v2.59.3

Ошибка генерации подключей шифрования

Выпущено 4 октября 2026

ВАЖНОЕ ПРИМЕЧАНИЕ: В предыдущих версиях при ошибке доступа к системным случайным данным могли генерироваться слабые подключи шифрования и соли. Подробности см. в разделе Слабые подключи шифрования и соли .

Исправления ошибок:

  • Исправлена возможная ошибка контрольной суммы при загрузке зашифрованных информационных файлов и манифестов. (Исправил j0uinim. Проверили: David Steele.)
  • Исправлена возможная генерация слабых подключей шифрования и солей. (Исправил j0uinim. Проверили: David Steele, Stefan Fercot, Douglas J Hunley.)

Стабильные выпуски

Примечания к выпуску v2.59.2

Поддержка PostgreSQL 19beta4

Выпущен 27 сентября 2026

Исправления ошибок:

  • Исправлена обработка пустой карты блоков при усечении файла до нулевого размера во время резервного копирования. (Рецензирование: Douglas J Hunley. Сообщили: JPCOSTA78.)
  • Отключены повторные попытки чтения, если драйверу переданы фильтры. (Рецензирование: Douglas J Hunley. Сообщили: megamaced.)
  • Исправлена постраничная выдача списка версий S3. (Рецензирование: Douglas J Hunley, guruguruguru. Сообщили: guruguruguru.)
  • Добавлена установка заголовка версии Azure при аутентификации SAS. (Рецензирование: Douglas J Hunley. Сообщили: Florian Helmberger.)
  • Исправлено зависание асинхронной команды archive-push на файле истории резервного копирования нулевого размера. (Исправление: Andrew Kroh. Рецензирование: David Steele, Douglas J Hunley.)
  • Исправлена работа команды annotate с удалённым зашифрованным репозиторием. (Исправление: Douglas J Hunley. Рецензирование: David Steele.)

Новые возможности:

  • Поддержка PostgreSQL 19beta4.

Примечания к выпуску v2.59.1

Поддержка PostgreSQL 19beta3

Выпущен 17 августа 2026

Исправления ошибок:

  • Исправлено зависание, возникавшее, когда буфер блока меньше входного буфера. (Рецензирование: Andrew Pogrebnoi, Douglas J Hunley. Сообщили: crajac66.)
  • Новая метка резервной копии теперь сравнивается только с метками в наборе её собственной полной резервной копии. (Рецензирование: Douglas J Hunley. Сообщили: Anton Glushakov.)
  • Исправлено отсутствие необходимых для сборки файлов в архивах исходного кода, создаваемых GitHub. (Сообщили: aardvarkzed.)

Новые возможности:

  • Поддержка PostgreSQL 19beta3. (Авторы: Lardière Sébastien. Рецензирование: David Steele.)

Улучшения документации:

  • Документировано исключение, допускающее точки в именах бакетов S3 при repo-s3-uri-style=path.
  • Из руководства пользователя удалена явная настройка hot_standby.

Примечания к выпуску v2.59.0

Поддержка PostgreSQL 19beta2

Выпущен 20 июля 2026

ПРИМЕЧАНИЕ ДЛЯ СОПРОВОЖДАЮЩИХ ПАКЕТОВ: Доступен новый дистрибутивный tar-архив, упрощающий сборку за счёт предварительно сгенерированных документации HTML, страницы man и кода. Архив прилагается к каждому выпуску как файл pgbackrest-{version}.tar.gz. Подробности см. в README.md внутри архива. Рекомендуется использовать новый дистрибутивный tar-архив, чтобы избежать установки дополнительных средств сборки для генерации кода в будущих выпусках. Подробнее см. Новый дистрибутивный tar-архив . ПРИМЕЧАНИЕ ДЛЯ СОПРОВОЖДАЮЩИХ ПАКЕТОВ: Добавлена новая необязательная зависимость от libsystemd. ВАЖНОЕ ПРИМЕЧАНИЕ: Начиная с этого выпуска по умолчанию от имени root можно запускать только команду restore. Для запуска остальных команд от имени root используется allow-root (хотя это не рекомендуется).

Исправления ошибок:

  • Исправлено удаление командой expire резервной копии, создаваемой на другом сервере. (Рецензирование: Douglas J Hunley. Сообщили: Dmitrii.)
  • Исправлено несоблюдение archive-push-queue-max при ошибке обработки файла WAL. (Рецензирование: Stefan Fercot. Сообщили: vut12.)
  • Исправлен сбой асинхронной команды archive-get при восстановлении с переходом на другую временную шкалу. (Рецензирование: Douglas J Hunley. Сообщили: Jimmy Yih.)
  • Исправлено возможное переполнение буфера в модуле обработки ошибок. (Исправление: Christophe Pettus. Рецензирование: David Steele.)
  • Исправлено обращение к освобождённой памяти клиента параллельного протокола. (Рецензирование: Douglas J Hunley. Сообщили: Georgy Shelkovy.)
  • Исправлено переполнение кучи при задании параметра pg без pg1. (Рецензирование: Douglas J Hunley. Сообщили: Naveen.)

Новые возможности:

  • Поддержка PostgreSQL 19beta2. (Рецензирование: Stefan Fercot.)
  • Добавлен параметр archive-expire-before для очистки архива WAL. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • Добавлено пакетное удаление в хранилище Azure. (Рецензирование: Douglas J Hunley, Crispy.)
  • Добавлена поддержка S3 Outposts. (Авторы: Shiva Kumar Ambigi. Рецензирование: David Steele, Roberto Mello.)
  • Добавлена аутентификация S3 с получением учётных данных через внешний процесс. (Рецензирование: Andrew Charlton. Предложили: Andrew Charlton.)

Улучшения:

  • Добавлено повторное подключение к хранилищу SFTP после разрыва сервером неактивного соединения. (Рецензирование: Stefan Fercot. Предложили: mustafa0x, tisserat.)
  • Добавлено кэширование пользователей и групп для ускорения построения манифеста. (Авторы: Gunnar Lindholm. Рецензирование: David Steele.)
  • В вывод команды info добавлен ход резервного копирования для каждого репозитория. (Авторы: Will Morland. Рецензирование: David Steele, Stefan Fercot.)
  • В команду verify добавлены проверки backup.info. (Авторы: Denis Garsh. Рецензирование: David Steele, Douglas J Hunley.)
  • Добавлена возможность настройки конечной точки S3 STS. (Авторы: Simon Gratton. Рецензирование: David Steele.)
  • Добавлен параметр archive-push-batch-size, ограничивающий объём WAL, отправляемого за один асинхронный запуск. (Рецензирование: Stefan Fercot.)
  • Асинхронная команда archive-push теперь завершается при первой ошибке. (Рецензирование: Stefan Fercot. Предложили: Lardière Sébastien.)
  • Повышена надёжность разбора ответов HTTP с передачей по частям. (Авторы: Shubham. Рецензирование: David Steele.)
  • При запуске от имени root без включённого allow-root теперь выдаётся ошибка. (Рецензирование: Douglas J Hunley.)
  • Сокращено число двоичных поисков при построении манифеста. (Авторы: Gunnar Lindholm. Рецензирование: David Steele.)
  • Ускорено позиционирование в файлах при дельта-восстановлении инкрементных копий на уровне блоков. (Рецензирование: David Christensen, Douglas J Hunley.)
  • Файлы резервной копии теперь пакетируются по порядку, без поиска более подходящего по размеру файла. (Рецензирование: Stefan Fercot.)
  • При невозможности завершить запрос теперь сообщается исходная ошибка. (Рецензирование: Andrew Pogrebnoi. Предложили: Marco Fontana.)
  • При сбое запроса учётных данных S3 теперь сообщается фактическая ошибка. (Рецензирование: Douglas J Hunley. Предложили: Mitchell Grice.)
  • Ошибки каталога очереди команды archive-push теперь записываются в журнал PostgreSQL. (Рецензирование: Douglas J Hunley. Предложили: Don Seiler.)
  • Для неподдерживаемой версии добавлена подсказка о том, что pgBackRest может быть устаревшим.
  • Добавлена интеграция с механизмом уведомлений systemd notify. (Авторы: Andrew Jackson. Рецензирование: David Steele.)
  • Подавлены ошибки unused parameter при проверках компилятора в meson. (Авторы: Jörg Plate. Рецензирование: David Steele.)
  • Минимальным стандартом C теперь является C11. (Рецензирование: Mohammad Ali Nazir Kosar.)

Улучшения документации:

  • Параметр stanza сделан внутренним для команд repo-*. (Рецензирование: Stefan Fercot.)
  • Документировано чтение командой info настроек шифрования из секции global. (Рецензирование: Stefan Fercot. Предложили: Ron Johnson.)
  • Документировано использование конфигурации команды backup параметром expire-auto. (Рецензирование: Stefan Fercot. Предложили: Lardière Sébastien.)
  • Документирована настройка директивы su logrotate для выделенного пользователя. (Рецензирование: Douglas J Hunley. Предложили: lkanbus.)
  • Документировано отсутствие поддержки комментариев в конце строк в файлах конфигурации. (Рецензирование: Douglas J Hunley. Предложили: Alex Richman.)

Улучшения набора тестов:

  • Исправлены конфликты групп Alpine в контейнерах CI. (Авторы: Artur Zakirov. Рецензирование: David Steele.)

Примечания к выпуску v2.58.0

Улучшения объектных хранилищ

Выпущен 19 января 2026

ВАЖНОЕ ПРИМЕЧАНИЕ: Минимальные значения параметра repo-storage-upload-chunk-size увеличены. Теперь они соответствуют минимальным значениям, разрешённым поставщиками.

Исправления ошибок:

  • Исправлена взаимная блокировка из-за записи в журнал в обработчике сигнала. (Исправление: Maxim Michkov. Рецензирование: David Steele.)

Новые возможности:

  • Поддержка HTTP для S3, GCS и Azure. (Авторы: Will Morland. Рецензирование: David Steele.)
  • Добавлена возможность удаления самой старой полной резервной копии независимо от текущего срока хранения. (Авторы: Stefan Fercot. Рецензирование: David Steele. Предложили: Ron Johnson.)
  • Поддержка управляемых удостоверений Azure. (Авторы: Moiz Ibrar, Matthew Mols. Рецензирование: David Steele.)
  • Экспериментальная поддержка идентификации подов S3 EKS. (Авторы: Pierre BOUTELOUP. Рецензирование: David Steele.)
  • Добавлена возможность настройки наборов шифров TLS. (Авторы: Gunnar “Nick” Bluth. Рецензирование: David Steele.)
  • Добавлена возможность задания приоритета процесса. (Рецензирование: Douglas J Hunley.)

Улучшения:

  • Разрешены точки в именах бакетов S3 при использовании URI с адресацией через путь. (Авторы: Joakim Hindersson. Рецензирование: David Steele.)
  • Если проверка не отключена, требуется TLS >= 1.2. (Рецензирование: Douglas J Hunley, Gunnar “Nick” Bluth.)
  • Размер частей S3/GCS/Azure теперь определяется динамически для больших загрузок. (Рецензирование: Douglas J Hunley. Предложили: Timothée Peignier.)
  • Оптимизирован размер частей S3/GCS/Azure для небольших файлов. (Рецензирование: Douglas J Hunley.)
  • Удалена поддержка PostgreSQL 9.5. (Рецензирование: Douglas J Hunley.)
  • Улучшена запись в журнал значений по умолчанию для параметров с неразрешённой зависимостью. (Рецензирование: Stefan Fercot.)

Улучшения документации:

  • Из руководства пользователя удалена явная настройка max_wal_senders/wal_level. (Предложили: Jamie Nguyen.)
  • Уточнено, что пакетирование файлов полезно для файловых систем с большим размером блока. (Предложили: Ron Johnson.)

Примечания к выпуску v2.57.0

Отключение символических ссылок в репозитории

Выпущен 18 октября 2025

Исправления ошибок:

  • Устранена вложенность тайм-аутов HTTP/TLS/сокетов. (Рецензирование: David Christensen.)
  • Исправлено возможное нарушение сегментации в сообщении об ошибке контрольной суммы страницы. (Исправление: Zsolt Parragi. Рецензирование: David Steele.)

Новые возможности:

  • Добавлен параметр repo-symlink для отключения создания символических ссылок в репозитории. (Рецензирование: Douglas J Hunley. Предложили: Ron Johnson.)

Улучшения:

  • Добавлены повторные попытки HTTP при ошибках 408 и 429. (Рецензирование: David Christensen.)

Примечания к выпуску v2.56.0

Улучшения информации о ходе выполнения

Выпущен 21 июля 2025

Исправления ошибок:

  • Исправлена проблема с удалением выбранных копий при отсутствии резервных копий в репозитории. (Рецензирование: Stefan Fercot. Сообщили: Anup Gupta.)

Новые возможности:

  • В вывод команды info добавлен ход восстановления. (Авторы: Denis Garsh, Maxim Michkov. Рецензирование: David Steele.)
  • В вывод команды info добавлен уровень детализации, показывающий только ход выполнения. (Авторы: Denis Garsh. Рецензирование: David Steele, Stefan Fercot.)

Улучшения:

  • Добавлены повторные попытки чтения из объектных хранилищ после сбоя. (Рецензирование: David Christensen.)
  • Исправлены значения по умолчанию в справке командной строки. (Рецензирование: David Christensen, Chris Bandy.)

Улучшения документации:

  • Отдельные допустимые значения параметров теперь описываются списком, где это уместно. (Авторы: Anton Kurochkin. Рецензирование: David Steele.)
  • Исправлено выражение “less than” в справке по параметру archive-mode. (Авторы: Anton Kurochkin. Рецензирование: David Steele.)

Примечания к выпуску v2.55.1

Исправления ошибок

Выпущен 5 мая 2025

Исправления ошибок:

  • Отменено изменение «вычислять content-md5 в S3 только при необходимости». (Рецензирование: David Christensen. Сообщили: Frank Brendel.)
  • Исправлена проверка нижних границ ключей параметров. (Рецензирование: David Christensen, Wolfgang Walther. Сообщили: Wolfgang Walther.)

Примечания к выпуску v2.55.0

Улучшения проверки и поддержка PostgreSQL 18

Выпущен 21 апреля 2025

Исправления ошибок:

  • Исправлена проблема восстановления инкрементных копий на уровне блоков из репозитория, отличного от выбранного по умолчанию. (Рецензирование: David Christensen, Aleksander Łukasz. Сообщили: Aleksander Łukasz.)
  • Для PostgreSQL < 12 больше не задаётся recovery_target_timeline=current. (Рецензирование: Stefan Fercot.)
  • Исправлена запись в журнал диапазона удаляемого архива. (Рецензирование: Stefan Fercot. Сообщили: Aleš Zelený.)
  • Исправлены сообщения об ошибках для запросов без результатов. (Рецензирование: Stefan Fercot. Сообщили: Susantha Bathige.)

Новые возможности:

  • Добавлена проверка целевой временной шкалы восстановления. (Рецензирование: Stefan Fercot.)
  • Добавлена возможность проверки указанной резервной копии. (Авторы: Maxim Michkov. Рецензирование: David Steele.)
  • Добавлена поддержка оплаты запросов инициатором в S3/GCS. (Авторы: Timothée Peignier. Рецензирование: David Steele.)
  • Поддержка PostgreSQL 18. (Рецензирование: Stefan Fercot.)
  • Добавлена возможность соединения с PostgreSQL через абстрактные доменные сокеты. (Рецензирование: Chris Bandy. Предложили: Chris Bandy.)
  • В команду version добавлен числовой вывод. (Авторы: Stefan Fercot. Рецензирование: David Steele.)

Улучшения:

  • Команда резервного копирования теперь может работать с удалёнными репозиториями. (Рецензирование: Stefan Fercot.)
  • Для сжатия данных протокола используется lz4. (Рецензирование: Stefan Fercot.)
  • content-md5 в S3 теперь вычисляется только при необходимости. (Рецензирование: David Christensen.)
  • Добавлено предупреждение при перезаписи значения параметра с несколькими ключами. (Рецензирование: David Christensen, Stefan Fercot.)
  • Добавлена запись пути удалённого архива в журнал на уровне detail. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • Удалена поддержка PostgreSQL 9.4. (Рецензирование: Stefan Fercot.)
  • Удалена сборка с помощью autoconf/make. (Рецензирование: David Christensen.)

Улучшения документации:

  • Исправлена документация по заданию нескольких stanza с помощью tls-server-auth. (Рецензирование: David Christensen, Stefan Fercot. Предложили: Terry MacAndrew.)
  • Уточнено удаление инкрементных резервных копий по сроку хранения. (Рецензирование: Stefan Fercot.)
  • Уточнено требование совпадения локальной и удалённой версий pgBackRest. (Авторы: Greg Clough. Рецензирование: David Steele.)
  • В раздел вопросов и ответов добавлен вопрос об экспорте самодостаточного кластера. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • Добавлено предостережение о создании табличных пространств при использовании --tablespace-map-all. (Рецензирование: Stefan Fercot, Christophe Courtois. Предложили: Christophe Courtois.)
  • Уточнено поведение --repo-retention-full-type. (Рецензирование: Antoine Beaupré. Предложили: Antoine Beaupré.)
  • Для объектных хранилищ рекомендация использовать --process-max заменена рекомендацией использовать --repo-bundle. (Рецензирование: Stefan Fercot.)
  • unix_socket_directory заменён на unix_socket_directories. (Авторы: hyunkyu han. Рецензирование: David Steele.)
  • Добавлена рекомендация не размещать spool-path внутри pg_xlog/pg_wal. (Рецензирование: Martín Marqués, Don Seiler. Предложили: Martín Marqués.)

Примечания к выпуску v2.54.2

Исправление ошибки

Выпущен 20 января 2025

Исправления ошибок:

  • Исправлена проблема после отключения пакетирования файлов при включённом инкрементном копировании на уровне блоков. (Рецензирование: David Christensen.)

Улучшения документации:

  • Уточнено поведение при использовании нескольких файлов конфигурации. (Рецензирование: Paul Bierly. Предложили: Paul Bierly.)

Примечания к выпуску v2.54.1

Исправление ошибки

Выпущен 16 декабря 2024

Исправления ошибок:

  • Устранены попытки команд version/help загрузить pgbackrest.conf. (Рецензирование: Stefan Fercot. Сообщили: Bradford Boyle, Julian.)

Улучшения набора тестов:

  • Стабилизировано асинхронное архивирование в интеграционных тестах. (Авторы: Viktor Kurilko. Рецензирование: David Steele.)

Примечания к выпуску v2.54.0

Целевое время для хранилищ с версионированием

Выпущен 21 октября 2024

ПРИМЕЧАНИЕ ДЛЯ СОПРОВОЖДАЮЩИХ ПАКЕТОВ: Это последний выпуск с новыми возможностями, поддерживающий сборку autoconf/make. Если переход на meson ещё не выполнен, его следует выполнить. Корректирующие выпуски 2.54.X (если они будут) продолжат поддерживать autoconf/make.

Исправления ошибок:

  • Исправлена проблема с производительностью запросов PostgreSQL для больших наборов данных. (Исправление: Thibault Vincent, David Steele. Рецензирование: David Christensen, Antoine Millet. Сообщили: Antoine Millet.)

Новые возможности:

  • Добавлена возможность чтения репозиториев в хранилищах с версионированием на заданный момент времени. (Рецензирование: Stefan Fercot, David Christensen.)
  • Запрошенное резервное копирование с резервного сервера теперь может продолжаться и при отсутствии резервного сервера. (Рецензирование: Stefan Fercot.)

Улучшения:

  • Список ссылок на резервные копии в текстовом выводе команды info теперь представлен в сокращённом виде. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • Токен web-id теперь обновляется при каждой аутентификации S3. (Авторы: Brent Graveland. Рецензирование: David Steele.)
  • Исправлено отображение текущих значений индексируемых параметров в справке. (Рецензирование: David Christensen.)
  • backup.info теперь сохраняется только при изменении содержимого. (Рецензирование: Stefan Fercot.)
  • Снято ограничение на параллельное чтение файлов при восстановлении. (Рецензирование: David Christensen.)
  • Улучшены сообщения об ошибках SFTP. (Авторы: Reid Thompson. Рецензирование: David Steele.)

Дополнения к документации:

  • В руководство пользователя добавлен раздел о настройке производительности. (Рецензирование: Stefan Fercot.)

Улучшения документации:

  • Уточнён источник значения data_directory. (Авторы: Stefan Fercot. Рецензирование: David Steele. Предложили: Matthias.)
  • Улучшена логика определения случаев, когда краткое описание следует приводить к нижнему регистру. (Предложили: Daniel Westermann.)

Примечания к выпуску v2.53.1

Поддержка PostgreSQL 17

Выпущен 19 августа 2024

Исправления ошибок:

  • Исправлены права доступа при запуске restore от имени root. (Рецензирование: Stefan Fercot. Сообщили: Will M.)
  • Исправлено нарушение сегментации при отложенных ошибках соединения. (Рецензирование: David Christensen. Сообщили: Anton Glushakov.)
  • Для SFTP пропускается проверка дублирования локального репозитория. (Исправление: Reid Thompson. Рецензирование: David Steele. Сообщили: Anton Kurochkin.)

Улучшения:

  • Поддержка PostgreSQL 17.

Примечания к выпуску v2.53

Одновременное резервное копирование

Выпущен 22 июля 2024

ВАЖНОЕ ПРИМЕЧАНИЕ: Значение по умолчанию параметра log-level-stderr изменено с warn на off. Это упрощает перехват ошибок при перенаправлении только stdout. Чтобы сохранить прежнее поведение, задайте log-level-stderr=warn. ПРИМЕЧАНИЕ ДЛЯ СОПРОВОЖДАЮЩИХ ПАКЕТОВ: Для сборки с помощью meson теперь требуется библиотека lz4. ПРИМЕЧАНИЕ ДЛЯ СОПРОВОЖДАЮЩИХ ПАКЕТОВ: Для сборки с помощью meson теперь требуется поддержка __builtin_clzl() и __builtin_bswap64() в компиляторе.

Исправления ошибок:

  • Исправлен сбой переименования по SFTP, если файл уже существует. (Исправление: Reid Thompson. Рецензирование: David Steele. Сообщили: ahmed112212.)

Новые возможности:

  • Добавлена возможность одновременного резервного копирования в разные репозитории. (Рецензирование: Reid Thompson, Stefan Fercot.)
  • Добавлена поддержка SAN с IP-адресами при проверке сертификатов TLS. (Авторы: David Christensen. Рецензирование: David Steele.)

Улучшения:

  • Значением по умолчанию параметра log-level-stderr стало off. (Рецензирование: Greg Sabino Mullane, Stefan Fercot.)
  • Добавлена поддержка альтернативных размеров сегмента WAL для PostgreSQL ≤ 10. (Авторы: Viktor Kurilko. Рецензирование: David Steele.)
  • Добавлена подсказка о проверке журнала авторизации SFTP. (Авторы: Vitalii Zurian. Рецензирование: Reid Thompson, David Steele.)

Улучшения документации:

  • Уточнено поведение archive-push при использовании нескольких репозиториев. (Рецензирование: Stefan Fercot.)

Примечания к выпуску v2.52.1

Исправление ошибки

Выпущен 25 июня 2024

Исправления ошибок:

  • Исправлена проблема с файлами, размер которых на реплике больше, чем на первичном сервере. (Рецензирование: Stefan Fercot. Сообщили: Nicolas Lassimonne.)

Примечания к выпуску v2.52

Поддержка PostgreSQL 17beta1

Выпущен 27 мая 2024

ПРИМЕЧАНИЕ ДЛЯ СОПРОВОЖДАЮЩИХ ПАКЕТОВ: Системой сборки pgBackRest теперь является meson. Сборка autoconf/make больше не получит новых возможностей и будет удалена через несколько выпусков.

Новые возможности:

  • Добавлена поддержка пакетного удаления в GCS. (Рецензирование: Reid Thompson.)
  • Поддержка шифрования S3 SSE-C. (Рецензирование: Tim Jones. Предложили: Tim Jones.)
  • Поддержка PostgreSQL 17beta1. (Рецензирование: Stefan Fercot.)

Улучшения:

  • Добавлена возможность явного отключения необязательных зависимостей при сборке meson. (Авторы: Michael Schout. Рецензирование: David Steele.)
  • Добавлен динамический поиск python при сборке meson. (Авторы: Michael Schout. Рецензирование: David Steele.)
  • Цель сборки pgbackrest в meson помечена как устанавливаемая. (Авторы: Bradford Boyle. Рецензирование: David Steele.)

Улучшения документации:

  • Документация start/stop приведена в соответствие с фактическим поведением. (Рецензирование: Stefan Fercot.)

Примечания к выпуску v2.51

Система сборки Meson

Выпущен 25 марта 2024

Исправления ошибок:

  • При дельта-восстановлении инкрементных копий на уровне блоков пропускаются файлы нулевой длины. (Рецензирование: Sebastian Krause, René Højbjerg Larsen. Сообщили: Sebastian Krause.)
  • Исправлена регрессия производительности получения списка объектов хранилища. (Рецензирование: Stephen Frost. Сообщили: Maksym Boguk.)
  • Исправлена запись хода выполнения в журнал при изменении размера файла во время резервного копирования. (Рецензирование: Stephen Frost. Сообщили: samkingno.)

Улучшения:

  • Улучшена поддержка соединений с двойным стеком протоколов. (Рецензирование: Stephen Frost. Предложили: Timothée Peignier.)
  • Основной системой сборки стала meson. (Рецензирование: Stephen Frost.)
  • Добавлено обнаружение неизменившихся файлов при инкрементном резервном копировании без дельта-режима. (Рецензирование: Stephen Frost.)
  • Предотвращено некорректное восстановление при удалении backup_label. (Рецензирование: Stephen Frost.)
  • Улучшена обработка очереди сегментов WAL командой archive-push. (Рецензирование: Stephen Frost.)
  • Возобновление ограничено полными резервными копиями. (Рецензирование: Stephen Frost, Stefan Fercot.)
  • Возобновление адаптировано для инкрементного копирования на уровне блоков. (Рецензирование: Stephen Frost.)
  • Для вывода версии и справки теперь допускаются --version и --help. (Рецензирование: Greg Sabino Mullane. Предложили: Greg Sabino Mullane.)
  • В сборку autoconf/make добавлена подробная трассировка стека. (Рецензирование: Stephen Frost.)

Улучшения документации:

  • Обновлены упоминания recovery.conf. (Рецензирование: Stefan Fercot. Предложили: Stephen Frost.)

Примечания к выпуску v2.50

Улучшения производительности и исправления ошибок

Выпущен 22 января 2024

Исправления ошибок:

  • Исправлено неполное чтение при восстановлении инкрементных копий на уровне блоков. (Рецензирование: Stephen Frost, Brent Graveland. Сообщили: Adol Rodriguez, Brent Graveland.)
  • Исправлено переполнение, из-за которого ход резервного копирования не отображался в выводе info. (Исправление: Robert Donovan. Рецензирование: Joe Wildish.)

Улучшения:

  • При дельта-восстановлении инкрементных копий на уровне блоков сохраняются частичные файлы. (Рецензирование: Stephen Frost.)
  • Добавлена поддержка альтернативных размеров страниц, задаваемых при компиляции. (Авторы: Viktor Kurilko. Рецензирование: David Steele.)
  • При пакетировании пропускаются файлы, усечённые во время резервного копирования. (Авторы: Georgy Shelkovy. Рецензирование: David Steele.)
  • Улучшены сообщения об ошибках хранилища SFTP. (Авторы: Reid Thompson. Рецензирование: David Steele.)

Примечания к выпуску v2.49

Удаление поддержки PostgreSQL 9.3

Выпущен 27 ноября 2023

Исправления ошибок:

  • Исправлена регрессия повторных попыток. (Рецензирование: Stephen Frost. Сообщили: Norman Adkins, Tanel Suurhans, Jordan English, Timothée Peignier.)
  • Исправлено рекурсивное удаление каталогов в драйвере хранилища SFTP. (Исправление: Reid Thompson. Рецензирование: Stephen Frost. Сообщили: Luc.)

Улучшения:

  • Удалена поддержка PostgreSQL 9.3. (Рецензирование: Stephen Frost.)

Дополнения к документации:

  • Документированы параметры для сопровождающих. (Рецензирование: Stefan Fercot.)
  • Обновлена документация по восстановлению на заданный момент времени для PostgreSQL >= 13.

Улучшения набора тестов:

  • Модульный тест config/load теперь можно запускать без установленной libssh2. (Авторы: Reid Thompson. Рецензирование: David Steele. Предложили: Wu Ning.)

Примечания к выпуску v2.48

Метки объектов хранилища репозитория

Выпущен 25 сентября 2023

Исправления ошибок:

  • Исправлена проблема восстановления инкрементных копий на уровне блоков без списка блоков. (Рецензирование: Stephen Frost, Burak Yurdakul. Сообщили: Burak Yurdakul.)

Новые возможности:

  • Добавлен параметр --repo-storage-tag для создания меток объектов. (Рецензирование: Stephen Frost, Stefan Fercot, Timothée Peignier.)
  • В драйвер хранилища SFTP добавлена проверка известных серверов. (Авторы: Reid Thompson. Рецензирование: Stephen Frost, David Steele.)
  • Поддержка соединений с двойным стеком протоколов. (Рецензирование: Stephen Frost.)
  • В вывод JSON команды info добавлены обработанный и полный размеры резервной копии. (Авторы: Stefan Fercot. Рецензирование: David Steele.)

Улучшения:

  • Команда check теперь поддерживает несколько stanza. (Рецензирование: Stephen Frost.)
  • Чтение pg_control повторяется до получения верной контрольной суммы. (Рецензирование: Stefan Fercot, Stephen Frost.)
  • Оптимизирована проверка сегментов WAL после успешного резервного копирования. (Рецензирование: Stephen Frost.)
  • Улучшена производительность операций с передачей данных частями в GCS. (Рецензирование: Reid Thompson.)
  • Команду archive-get теперь можно запускать для остановленной stanza. (Рецензирование: Tom Swartz, David Christensen, Reid Thompson.)
  • В начале путей к открытому и закрытому ключам SFTP теперь допускается тильда. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Учётные данные GCS перечитываются перед обновлением токена аутентификации. (Рецензирование: Stephen Frost. Предложили: Daniel Farina.)

Исправления ошибок в документации:

  • Исправлен пример параметра tls-server-address в справочнике конфигурации. (Исправление: Hartmut Goebel. Рецензирование: David Steele.)
  • Исправлен пример параметра filter в справочнике команд.

Улучшения набора тестов:

  • Модульный тест storage/sftp теперь можно запускать без установленной libssh2. (Авторы: Reid Thompson. Рецензирование: David Steele. Предложили: Wu Ning.)

Примечания к выпуску v2.47

Улучшения производительности и исправления ошибок

Выпущен 24 июля 2023

Исправления ошибок:

  • При дельта-копировании в манифесте сохраняются сведения об инкрементном копировании на уровне блоков. (Рецензирование: Stephen Frost. Сообщили: Francisco Miguel Biete Banon.)
  • Исправлены имена файлов инкрементного копирования на уровне блоков в команде verify. (Рецензирование: Reid Thompson. Сообщили: Francisco Miguel Biete Banon.)
  • Исправлено необоснованное автоматическое включение дельта-копирования при копировании с резервного сервера. (Рецензирование: Stephen Frost. Сообщили: krmozejko, Don Seiler.)
  • При восстановлении с type=none для PostgreSQL >= 12 пропускается recovery.signal. (Рецензирование: Stefan Fercot. Сообщили: T.Anastacio.)
  • Исправлено создание уникальной метки дифференциальной или инкрементной резервной копии. (Исправление: Andrey Sokolov. Рецензирование: David Steele.)
  • Исправлено удаление архива по времени, когда резервные копии не удаляются. (Рецензирование: Stefan Fercot.)

Улучшения:

  • Улучшена производительность драйвера хранилища SFTP. (Авторы: Stephen Frost, Reid Thompson. Рецензирование: David Steele.)
  • В вывод даты и времени команды info добавлено смещение часового пояса. (Рецензирование: Stefan Fercot, Philip Hurst. Предложили: Philip Hurst.)
  • Централизована обработка ошибок неподдерживаемых возможностей. (Рецензирование: Stefan Fercot.)

Улучшения документации:

  • В руководстве пользователя уточнена предпочтительность установки из пакетов. (Рецензирование: Stefan Fercot. Предложили: dr-kd.)

Примечания к выпуску v2.46

Инкрементное копирование на уровне блоков и хранилище SFTP

Выпущен 22 мая 2023

Новые возможности:

  • Инкрементное резервное копирование на уровне блоков. (Рецензирование: John Morris, Stephen Frost, Stefan Fercot.)
  • Поддержка SFTP для хранилища репозитория. (Авторы: Reid Thompson. Рецензирование: Stephen Frost, David Steele.)
  • Поддержка PostgreSQL 16. (Рецензирование: Stefan Fercot.)

Улучшения:

  • Добавлена возможность пропуска проверок заголовков страниц. (Рецензирование: David Christensen. Предложили: David Christensen.)
  • При восстановлении больше не вызывается chown() для файлов восстановления. (Рецензирование: Stefan Fercot, Marcelo Henrique Neppel. Предложили: Marcelo Henrique Neppel.)
  • Добавлена подробная информация о повторных попытках после ошибок HTTP.

Улучшения документации:

  • Добавлено предупреждение об использовании восстановления с type=none. (Рецензирование: Stefan Fercot.)
  • Добавлено примечание о запуске stanza-create для уже созданных репозиториев.

Примечания к выпуску v2.45

Инкрементное резервное копирование на уровне блоков (BETA)

Выпущен 20 марта 2023

Исправления ошибок:

  • При восстановлении резервных копий остановленного кластера запись recovery.signal по умолчанию пропускается. (Рецензирование: Stefan Fercot. Сообщили: Marcel Borger.)

Новые возможности:

  • Инкрементное резервное копирование на уровне блоков (BETA). (Рецензирование: John Morris, Stephen Frost, Stefan Fercot.)

Улучшения:

  • Сохраняется только один индекс группы со всеми значениями по умолчанию. (Рецензирование: Stefan Fercot.)

Улучшения документации:

  • Добавлены явные инструкции по обновлению между версиями 2.x. (Авторы: Christophe Courtois. Рецензирование: David Steele.)
  • Удалены упоминания SSH, утратившие актуальность после появления TLS.

Примечания к выпуску v2.44

Удаление поддержки PostgreSQL 9.0/9.1/9.2

Выпущен 30 января 2023

Улучшения:

  • Удалена поддержка PostgreSQL 9.0/9.1/9.2. (Рецензирование: Stefan Fercot.)
  • Восстановление теперь выдаёт ошибку, если ни одна резервная копия не соответствует текущей версии PostgreSQL. (Авторы: Stefan Fercot. Рецензирование: David Steele. Предложили: Soulou.)
  • Добавлена проверка диапазона compress-level для каждого compress-type. (Рецензирование: Stefan Fercot. Предложили: gkleen, ViperRu.)

Улучшения документации:

  • Добавлено предупреждение о включении «иерархического пространства имён» в хранилище Azure. (Рецензирование: Stefan Fercot. Предложили: Vojtech Galda, Pluggi, asjonos.)
  • В пример мониторинга добавлена замена переводов строк. (Рецензирование: Stefan Fercot. Предложили: rudonx, gmustdie, Ivan Shelestov.)
  • Уточнено поведение target-action в различных версиях PostgreSQL. (Авторы: Chris Bandy. Рецензирование: David Steele, Anton Kurochkin, Stefan Fercot. Предложили: Anton Kurochkin, Chris Bandy.)
  • Обновлена и уточнена главная страница. (Рецензирование: Stefan Fercot.)
  • На сайт добавлена тёмная тема. (Предложили: Stephen Frost.)

Примечания к выпуску v2.43

Исправление ошибки

Выпущен 28 ноября 2022

Исправления ошибок:

  • Исправлено отсутствие ссылки на предыдущую копию в дифференциальной или инкрементной резервной копии. (Рецензирование: Stefan Fercot. Сообщили: Marcel Borger, ulfedf, jaymefSO.)

Улучшения:

  • Добавлена подсказка при задании параметра без индекса. (Рецензирование: Stefan Fercot.)

Примечания к выпуску v2.42

Исправления ошибок

Выпущен 22 ноября 2022

Исправления ошибок:

  • Исправлена утечка памяти при backup/restore с пакетированием файлов. (Рецензирование: John Morris, Oscar. Сообщили: Oscar.)
  • Исправлена ошибка протокола при неполном чтении удалённого файла. (Рецензирование: Stephen Frost.)

Улучшения:

  • При пакетировании больше не сохраняются ссылки для файлов нулевой длины. (Рецензирование: Stefan Fercot.)
  • Для pg_start_backup()/pg_stop_backup() используются более общие описания. (Рецензирование: Greg Sabino Mullane, David Christensen. Предложили: Greg Sabino Mullane.)

Улучшения набора тестов:

  • Параметр --psql-bin в test.pl приведён в соответствие со справкой командной строки. (Авторы: Koshi Shibagaki. Рецензирование: David Steele.)

Примечания к выпуску v2.41

Аннотации резервных копий

Выпущен 19 сентября 2022

Исправления ошибок:

  • Исправлен неверный срок удаления, применявшийся к репозиториям, отличным от выбранного по умолчанию. (Рецензирование: Stefan Fercot. Сообщили: Adam Brusselback.)
  • Исправлена проблема рекурсивного получения списка каталогов с фильтром. (Рецензирование: Stephen Frost. Сообщили: Efremov Egor.)

Новые возможности:

  • Аннотации резервных копий в виде пар «ключ — значение». (Авторы: Stefan Fercot. Рецензирование: David Steele. Предложили: Adam Berlin.)

Улучшения:

  • Добавлена поддержка --set в выводе JSON команды info. (Авторы: Stefan Fercot. Рецензирование: David Steele. Предложили: Anton Kurochkin.)
  • Добавлена возможность настройки размера загружаемых частей для объектных хранилищ. (Рецензирование: Stefan Fercot. Предложили: Anton Glushakov.)
  • Временные метки archive.info обновляются после успешного резервного копирования. (Рецензирование: Stefan Fercot. Предложили: Alex Richman.)
  • Проверка временной шкалы резервного сервера перенесена на этап после контрольной точки. (Рецензирование: Stefan Fercot, Keith Fiske. Предложили: Keith Fiske.)
  • Улучшено предупреждение при возобновлении резервного копирования. (Предложили: Cynthia Shang.)

Улучшения документации:

  • В pgbackrest.service добавлен абсолютный путь к kill. (Предложили: Don Seiler.)

Примечания к выпуску v2.40

Поддержка OpenSSL 3

Выпущен 18 июля 2022

ПРИМЕЧАНИЕ ДЛЯ СОПРОВОЖДАЮЩИХ ПАКЕТОВ: Добавлена экспериментальная сборка с помощью meson, но сопровождающим пакетов в обозримом будущем следует продолжать использовать autoconf/make.

Улучшения:

  • Поддержка OpenSSL 3. (Рецензирование: Stephen Frost.)
  • При получении списка содержимого каталога создаётся снимок. (Рецензирование: John Morris, Stephen Frost.)
  • При восстановлении с type=immediate принудительно задаётся target-timeline=current. (Рецензирование: Stephen Frost.)
  • При дельта-восстановлении restore файлы усекаются, если их размер превышает ожидаемый. (Рецензирование: Stephen Frost.)
  • При resume=n отключено промежуточное сохранение манифеста. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Перед началом копирования процент выполнения резервного копирования устанавливается в ноль. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Для определения продолжения списка S3 используется флаг IsTruncated. (Рецензирование: John Morris, Soulou. Предложили: Christian Montagne.)

Исправления ошибок в документации:

  • В справочнике конфигурации пропускаются внутренние параметры. (Сообщили: Francisco Miguel Biete Banon.)

Улучшения документации:

  • В раздел о сервере репозитория добавлена ссылка на конфигурацию PostgreSQL. (Рецензирование: Stefan Fercot. Предложили: Julien Cigar.)

Улучшения набора тестов:

  • Добавлена экспериментальная сборка Meson. (Рецензирование: Eli Schwartz, Sam Bassaly.)
  • В параметр --test-path теперь можно передать любой путь. (Авторы: Andrey Sokolov. Рецензирование: David Steele.)
  • Исправлена ошибка компиляции, когда DEBUG_EXEC_TIME определён без DEBUG. (Авторы: Andrey Sokolov. Рецензирование: David Steele.)

Примечания к выпуску v2.39

Проверка и пакетирование файлов

Выпущен 16 мая 2022

Исправления ошибок:

  • Исправлен бесконечный цикл при выдаче ошибки из FINALLY(). (Рецензирование: Stephen Frost.)
  • При любых сбоях блокировки, кроме удержания блокировки другим процессом, теперь выдаётся ошибка. (Рецензирование: Reid Thompson, Geir Råness. Сообщили: Geir Råness.)

Новые возможности:

  • Добавлено пакетирование файлов резервной копии для улучшения работы с небольшими файлами. (Рецензирование: Reid Thompson, Stefan Fercot, Chris Bandy.)
  • Добавлена команда verify для проверки содержимого репозитория. (Авторы: Cynthia Shang, Reid Thompson. Рецензирование: David Steele, Stefan Fercot.)
  • Поддержка PostgreSQL 15. (Рецензирование: Stefan Fercot.)
  • В выводе info отображается процент выполнения резервного копирования. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Добавлен автоматический выбор резервной копии для команды restore с --type=lsn. (Авторы: Reid Thompson. Рецензирование: Stefan Fercot, David Steele.)
  • При отключённом archive-mode-check подавляется предупреждение о существующем WAL. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Добавлена поддержка AWS IMDSv2. (Авторы: Nuno Pires. Рецензирование: David Steele.)

Улучшения:

  • Параметр repo-hardlink теперь можно изменять после полного резервного копирования. (Рецензирование: Reid Thompson.)
  • Повышена точность записи процента выполнения в журнал для backup и restore. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Улучшена проверка путей для команд repo-*. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Команда stop улучшена для учёта параметра stanza. (Авторы: Reid Thompson. Рецензирование: David Steele. Предложили: ragaoua.)
  • Улучшено сообщение об ошибке для неверного repo-azure-key. (Авторы: Reid Thompson. Рецензирование: David Steele. Предложили: Seth Daniel.)
  • При асинхронной ошибке archive-get/archive-push добавлена подсказка о проверке журнала. (Рецензирование: Reid Thompson.)
  • Добавлена ошибка ClockError при неожиданном расхождении часов и изменении часового пояса. (Рецензирование: Greg Sabino Mullane, Stefan Fercot. Предложили: Greg Sabino Mullane.)
  • Перед выводом в сообщении об ошибке из имени исторического манифеста удаляются расширения. (Рецензирование: Stefan Fercot.)
  • В ошибку прав доступа к блокировке добавлены пользователь и группа в формате user:group. (Рецензирование: Reid Thompson.)

Исправления ошибок в документации:

  • В руководстве пользователя исправлено неверное упоминание stanza-update. (Исправление: Abubakar Mohammed. Рецензирование: David Steele.)
  • Исправлен пример параметра repo-gcs-key-type в справочнике конфигурации. (Рецензирование: Reid Thompson.)
  • Исправлен пример tls-server-auth и добавлены пояснения. (Рецензирование: Reid Thompson.)

Улучшения документации:

  • Упрощены формулировки о поддерживаемых версиях в документации. (Рецензирование: Stefan Fercot, Reid Thompson, Greg Sabino Mullane.)
  • Добавлены описания типов параметров. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • В раздел вопросов и ответов добавлен вопрос о типах резервных копий и скорости восстановления. (Авторы: David Christensen. Рецензирование: Reid Thompson.)
  • Документирована требуемая базовая ветка для запросов на включение изменений. (Авторы: David Christensen. Рецензирование: Reid Thompson.)

Примечания к выпуску v2.38

Небольшие исправления ошибок и улучшения

Выпущен 6 марта 2022

ВАЖНОЕ ПРИМЕЧАНИЕ: Размер репозитория, сообщаемый командой info, теперь полностью основан на объёме данных, записанных pgBackRest в хранилище. Ранее в некоторых случаях pgBackRest мог определить, применялось ли хранилищем дополнительное сжатие, но теперь это больше не поддерживается.

Исправления ошибок:

  • При ошибках пакетного удаления файлов S3 добавлены повторные попытки. (Рецензирование: Reid Thompson. Сообщили: Alex Richman.)
  • Добавлено сопоставление значений заголовка HTTP connection без учёта регистра. (Рецензирование: Reid Thompson. Сообщили: Rémi Vidier.)

Новые возможности:

  • Добавлена поддержка шифрования на стороне сервера AWS S3 с использованием KMS. (Авторы: Christoph Berg. Рецензирование: David Steele, Tharindu Amila.)
  • Добавлен параметр archive-missing-retry. (Рецензирование: Stefan Fercot.)
  • В команду info добавлен фильтр по типу резервной копии. (Авторы: Stefan Fercot. Рецензирование: David Steele.)

Улучшения:

  • При сбое проверки страницы во время backup добавлена повторная попытка. (Рецензирование: Stephen Frost, David Christensen.)
  • Добавлена обработка серверов TLS, некорректно закрывающих соединения. (Рецензирование: Rémi Vidier, David Christensen, Stephen Frost.)
  • В вывод команды info добавлены LSN резервных копий. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • Завершающие косые черты автоматически удаляются из путей repo-ls. (Авторы: David Christensen. Рецензирование: David Steele.)
  • После фатальных ошибок повторные попытки больше не выполняются. (Рецензирование: Reid Thompson.)
  • Удалена поддержка PostgreSQL 8.3/8.4. (Рецензирование: Reid Thompson, Stefan Fercot.)
  • Удалена логика определения дополнительного сжатия файловой системой. (Рецензирование: Reid Thompson, Stefan Fercot.)

Исправления ошибок в документации:

  • В документации TLS параметры repo перенесены в секцию global. (Сообщили: Anton Kurochkin.)
  • Неиспользуемый параметр backup-standby удалён из команд stanza. (Сообщили: Stefan Fercot.)
  • Исправлены опечатки в справке и примечаниях к выпускам. (Исправление: Daniel Gustafsson. Рецензирование: David Steele.)

Улучшения документации:

  • В конфигурацию службы systemd добавлена проверка активности. (Предложили: Yogesh Sharma.)
  • В раздел вопросов и ответов добавлено объяснение суффикса архива WAL. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • Добавлено примечание о том, что слоты репликации не восстанавливаются. (Авторы: Reid Thompson. Рецензирование: David Steele, Stefan Fercot. Предложили: Christophe Courtois.)

Примечания к выпуску v2.37

Сервер TLS

Выпущен 3 января 2022

ВАЖНОЕ ПРИМЕЧАНИЕ: Если команда restore не может найти резервную копию, соответствующую указанному целевому времени, теперь выдаётся ошибка; ранее в журнал записывалось предупреждение.

Исправления ошибок:

  • Исправлено переназначение ссылок при дельта-восстановлении restore, когда каталог или файл уже существует. (Рецензирование: Reid Thompson. Сообщили: Younes Alhroub.)
  • Исправлена утечка сокетов при повторных попытках соединения. (Рецензирование: Reid Thompson. Сообщили: James Coleman.)

Новые возможности:

  • Добавлен сервер TLS. (Рецензирование: Stephen Frost, Reid Thompson, Andrew L’Ecuyer.)
  • Добавлен параметр --cmd. (Авторы: Reid Thompson. Рецензирование: Stefan Fercot, David Steele. Предложили: Virgile CREVON.)

Улучшения:

  • Архив теперь проверяется сразу после начала резервного копирования. (Рецензирование: Reid Thompson, David Christensen.)
  • В резервное копирование добавлены проверки временной шкалы и контрольной точки. (Рецензирование: Stefan Fercot, Reid Thompson.)
  • Во время резервного копирования проверяются доступность и корректность конфигурации кластеров. (Рецензирование: Stefan Fercot.)
  • Если restore не может найти резервную копию, соответствующую целевому времени, выдаётся ошибка. (Рецензирование: Reid Thompson, Douglas J Hunley. Предложили: Douglas J Hunley.)
  • Добавлен разбор протокола и порта в конечных точках S3/Azure. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Добавлено предупреждение, если checkpoint_timeout превышает db-timeout. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • В вывод ошибок HTTP добавлен метод запроса. (Авторы: Christoph Berg. Рецензирование: David Steele.)
  • Для логических параметров командной строки теперь допускаются аргументы y/n. (Авторы: Reid Thompson. Рецензирование: David Steele.)
  • Размер резервной копии в журнале теперь в точности совпадает с выводом команды info. (Авторы: Reid Thompson. Рецензирование: David Steele. Предложили: Mahomed Hussein.)

Улучшения документации:

  • Значения по умолчанию и допустимые значения параметров размера отображаются с соответствующими единицами. (Рецензирование: Reid Thompson.)
  • Исправлены опечатки и улучшена документация параметра tablespace-map-all. (Рецензирование: Reid Thompson. Предложили: Reid Thompson.)
  • Удалено устаревшее утверждение о будущей поддержке нескольких репозиториев. (Предложили: David Christensen.)

Примечания к выпуску v2.36

Небольшие исправления ошибок и улучшения

Выпущен 1 ноября 2021

Исправления ошибок:

  • В качестве префикса stanza разрешён “global”. (Рецензирование: Stefan Fercot. Сообщили: Younes Alhroub.)
  • Исправлено нарушение сегментации при неверном файле ключа GCS. (Рецензирование: Stephen Frost. Сообщили: Henrik Feldt.)

Улучшения:

  • Параметр link-map теперь позволяет создавать новые ссылки. (Рецензирование: Don Seiler, Stefan Fercot, Chris Bandy. Предложили: Don Seiler.)
  • Максимально допустимый индекс параметров pg/repo увеличен до 256. (Рецензирование: Cynthia Shang.)
  • Добавлена аутентификация WebIdentity для AWS S3. (Рецензирование: James Callahan, Reid Thompson, Benjamin Blattberg, Andrew L’Ecuyer.)
  • Ошибки проверки файлов резервной копии теперь отражаются в backup.info. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • В журнал восстановления резервной копии работающего кластера добавлено время начала восстановления. (Рецензирование: Tom Swartz, Stefan Fercot. Предложили: Tom Swartz.)
  • При сбое локальной задачи сообщаются исходная ошибка и повторные попытки. (Рецензирование: Stefan Fercot.)
  • В текстовом выводе info ошибка контрольной суммы страницы переименована в список ошибок. (Рецензирование: Stefan Fercot.)
  • В сообщение о тайм-ауте воспроизведения на резервном сервере добавлены подсказки. (Рецензирование: Cynthia Shang, Stefan Fercot. Предложили: Leigh Downs.)

Примечания к выпуску v2.35

Двоичный протокол

Выпущен 23 августа 2021

ВАЖНОЕ ПРИМЕЧАНИЕ: Уровень записи в журнал сведений о скопированных файлах в командах backup/restore изменён на detail. Это сокращает объём сообщений на уровне info; если эти сообщения нужны, следует установить для команд backup/restore уровень журнала detail

Исправления ошибок:

  • Добавлено обнаружение ошибок при завершении загрузки частями в S3. (Рецензирование: Cynthia Shang, Marco Montagna. Сообщили: Marco Montagna, Lev Kokotov, Anderson A. Mallmann.)
  • Исправлено обнаружение циклических символических ссылок. (Рецензирование: Stefan Fercot. Сообщили: Rohit Raveendran.)
  • Удалённому процессу передаются только выбранные параметры repo. (Рецензирование: David Christensen, Cynthia Shang. Сообщили: Greg Sabino Mullane, David Christensen.)

Улучшения:

  • Двоичный протокол. (Рецензирование: Cynthia Shang.)
  • При restore автоматически создаётся каталог данных. (Авторы: Stefan Fercot. Рецензирование: David Steele. Предложили: Chris Bandy.)
  • Добавлена поддержка restore с --type=lsn. (Авторы: Stefan Fercot. Рецензирование: Cynthia Shang. Предложили: James Coleman.)
  • Уровень записи сведений о скопированных файлах backup/restore изменён на detail. (Рецензирование: Stefan Fercot. Предложили: Jens Wilke.)
  • Добавлен цикл ожидания, пока LSN контрольной точки не достигнет LSN воспроизведения. (Авторы: Stefan Fercot. Рецензирование: David Steele. Предложили: Fatih Mencutekin.)
  • В журнал записываются общее число файлов для backup, а также общий размер и число файлов для restore. (Рецензирование: Cynthia Shang.)

Исправления ошибок в документации:

  • В руководстве пользователя исправлены неверные имена серверов. (Рецензирование: Stefan Fercot. Сообщили: Greg Sabino Mullane.)

Улучшения документации:

  • Обновлена документация для участников разработки и добавлен шаблон запроса на включение изменений. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Изменён порядок изложения резервного копирования в руководстве пользователя. (Рецензирование: Cynthia Shang.)
  • В справочнике команд уточнено поведение restore с --type. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Исправлены опечатки в документации и комментариях. (Авторы: Eric Radman. Рецензирование: David Steele.)

Улучшения набора тестов:

  • Добавлена проверка расположения тестового каталога внутри каталога репозитория. (Рецензирование: Greg Sabino Mullane. Предложили: Greg Sabino Mullane.)
  • Добавлен статический анализ кода CodeQL. (Рецензирование: Cynthia Shang.)
  • Тесты обновлены для использования стандартных шаблонов. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v2.34

Поддержка PostgreSQL 14

Выпущен 7 июня 2021

Исправления ошибок:

  • Исправлены проблемы с файлами очереди, оставшимися от предыдущего restore. (Рецензирование: Cynthia Shang, Stefan Fercot, Floris van Nee. Сообщили: Floris van Nee.)
  • Исправлена проблема проверки ссылок при большом числе табличных пространств. (Рецензирование: Cynthia Shang, Avinash Vallarapu. Сообщили: Avinash Vallarapu.)
  • Удалённые процессы, которые больше не нужны, освобождаются, чтобы избежать их тайм-аутов во время restore. (Рецензирование: Cynthia Shang. Сообщили: Francisco Miguel Biete Banon.)
  • Исправлена команда help для случая, когда существующий параметр недопустим для указанной команды. (Рецензирование: Stefan Fercot. Сообщили: Cynthia Shang.)

Новые возможности:

  • Добавлена поддержка PostgreSQL 14. (Рецензирование: Cynthia Shang.)
  • Добавлена автоматическая аутентификация GCS для экземпляров GCE. (Рецензирование: Jan Wieck, Daniel Farina.)
  • Добавлен параметр repo-retention-history для удаления истории резервного копирования по сроку хранения. (Авторы: Stefan Fercot. Рецензирование: Cynthia Shang, David Steele.)
  • Добавлен параметр db-exclude. (Авторы: Stefan Fercot. Рецензирование: Cynthia Shang.)

Улучшения:

  • Уровень записи удаления архива в журнал изменён с detail на info. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • При restore удаляется каталог очереди архива stanza. (Рецензирование: Cynthia Shang, Stefan Fercot.)
  • При копировании в ходе backup больше не выполняются атомарная запись файлов и синхронизация каталогов. (Рецензирование: Stephen Frost, Stefan Fercot, Cynthia Shang.)

Улучшения документации:

  • Обновлена документация для участников разработки. (Авторы: Cynthia Shang. Рецензирование: David Steele, Stefan Fercot.)
  • Руководство пользователя RHEL/CentOS объединено в один документ. (Рецензирование: Cynthia Shang.)
  • Уточнено, что repo-s3-role не является ARN. (Авторы: Isaac Yuen. Рецензирование: David Steele.)

Примечания к выпуску v2.33

Поддержка нескольких репозиториев и GCS

Выпущен 5 апреля 2021

Исправления ошибок:

  • Исправлены предупреждения о параметрах, нарушавшие работу асинхронных archive-get/archive-push. (Рецензирование: Cynthia Shang. Сообщили: Lev Kokotov.)
  • Исправлена утечка памяти при копировании архива во время резервного копирования. (Рецензирование: Cynthia Shang. Сообщили: Christian ROUX, Efremov Egor.)
  • Исправлено переполнение стека при генерации парольной фразы шифрования. (Рецензирование: Cynthia Shang. Сообщили: bsiara.)
  • Исправлена работа repo-ls с / в репозиториях S3. (Рецензирование: Cynthia Shang. Сообщили: Lesovsky Alexey.)

Новые возможности:

  • Поддержка нескольких репозиториев. (Авторы: Cynthia Shang, David Steele. Рецензирование: Stefan Fercot, Stephen Frost.)
  • Поддержка GCS для хранилища репозитория. (Рецензирование: Cynthia Shang, Daniel Farina.)
  • Добавлен параметр archive-header-check. (Рецензирование: Stephen Frost, Cynthia Shang. Предложили: Hans-Jürgen Schönig.)

Улучшения:

  • При выборочном восстановлении включаются повторно созданные системные базы данных. (Авторы: Stefan Fercot. Рецензирование: Cynthia Shang.)
  • content-length исключён из подписываемых заголовков S3. (Рецензирование: Cynthia Shang. Предложили: Brian P Bockelman.)
  • Объединены редко используемые параметры хранилища репозитория. (Рецензирование: Cynthia Shang.)
  • Добавлена возможность задать собственное значение по умолчанию config-path через ./configure --with-configdir. (Авторы: Michael Schout. Рецензирование: David Steele.)
  • При backup копирование архива записывается в журнал. (Рецензирование: Cynthia Shang, Stefan Fercot.)

Улучшения документации:

  • В справочник добавлены ссылки на примеры из руководства пользователя. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • В документацию выборочного восстановления добавлены предостережения. (Рецензирование: Cynthia Shang, Stefan Fercot.)
  • В документацию archive-copy добавлено пояснение о compress-type. (Рецензирование: Cynthia Shang, Stefan Fercot.)
  • Добавлены значения по умолчанию compress-level для каждого значения compress-type. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлено примечание о том, что необходимые настройки NFS совпадают с настройками для PostgreSQL. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v2.32

Команды работы с репозиторием

Выпущен 8 февраля 2021

Исправления ошибок:

  • Исправлено возобновление после частичного удаления резервной копии предыдущей попыткой возобновления. (Рецензирование: Cynthia Shang. Сообщили: Tom Swartz.)

Новые возможности:

  • Добавлена команда repo-ls. (Рецензирование: Cynthia Shang, Stefan Fercot.)
  • Добавлена команда repo-get. (Авторы: Stefan Fercot, David Steele. Рецензирование: Cynthia Shang.)
  • Добавлен параметр archive-mode-check. (Авторы: Stefan Fercot. Рецензирование: David Steele, Michael Banck.)

Улучшения:

  • Улучшена производительность archive-get. (Рецензирование: Cynthia Shang.)

Улучшения документации:

  • Улучшена документация команды expire. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v2.31

Небольшие исправления ошибок и улучшения

Выпущен 7 декабря 2020

Исправления ошибок:

  • В начале имён баз данных теперь допускаются [, # и пробел (space). (Рецензирование: Stefan Fercot, Cynthia Shang. Сообщили: Jefferson Alexandre.)
  • standby.signal теперь создаётся только в PostgreSQL 12 при типе restore, равном standby. (Исправление: Stefan Fercot. Рецензирование: David Steele. Сообщили: Keith Fiske.)

Новые возможности:

  • Добавлено удаление файлов истории по сроку хранения. (Авторы: Stefan Fercot. Рецензирование: David Steele.)
  • Ошибки контрольных сумм страниц отражаются в выводе text команды info. (Авторы: Stefan Fercot. Рецензирование: Cynthia Shang.)
  • Добавлен параметр repo-azure-endpoint. (Рецензирование: Cynthia Shang, Brian Peterson. Предложили: Brian Peterson.)
  • Добавлен параметр pg-database. (Рецензирование: Cynthia Shang.)

Улучшения:

  • Улучшен вывод команды info, когда stanza указана, но отсутствует. (Авторы: Stefan Fercot. Рецензирование: Cynthia Shang, David Steele. Предложили: uspen.)
  • Улучшена производительность обработки больших списков файлов в командах backup/restore. (Рецензирование: Cynthia Shang, Oscar.)
  • Добавлены повторные попытки ожидания PostgreSQL при начале резервного копирования. (Рецензирование: Cynthia Shang. Предложили: Vitaliy Kukharik.)

Улучшения документации:

  • Документация RHEL/CentOS 6 заменена документацией RHEL/CentOS 8.

Примечания к выпуску v2.30

Поддержка PostgreSQL 13

Выпущен 5 октября 2020

Исправления ошибок:

  • Если пользователь резервного копирования не может читать pg_settings, выдаётся ошибка с подсказками. (Рецензирование: Stefan Fercot, Cynthia Shang. Сообщили: Mohamed Insaf K.)

Новые возможности:

  • Поддержка PostgreSQL 13. (Рецензирование: Cynthia Shang.)

Улучшения:

  • Улучшено определение версии PostgreSQL. (Рецензирование: Cynthia Shang, Stephen Frost.)
  • Улучшено сообщение об ошибке рабочего каталога. (Рецензирование: Stefan Fercot.)
  • При отсутствии сегмента WAL добавлена подсказка о запуске stanza. (Авторы: David Christensen. Рецензирование: David Steele.)
  • Добавлена подсказка при несовпадении версий протокола. (Рецензирование: Cynthia Shang. Предложили: loop-evgeny.)

Улучшения документации:

  • Добавлено примечание о том, что при удалённой работе версии pgBackRest должны совпадать. (Рецензирование: Cynthia Shang. Предложили: loop-evgeny.)
  • Текст о команде info перенесён в справочник с добавлением ссылки на руководство пользователя. (Рецензирование: Cynthia Shang. Предложили: Christophe Courtois.)
  • Обновлён путь к репозиторию yum в руководстве пользователя CentOS/RHEL. (Авторы: Heath Lord. Рецензирование: David Steele.)

Примечания к выпуску v2.29

Автоматическое получение учётных данных S3 в AWS

Выпущен 31 августа 2020

Исправления ошибок:

  • Подавлены ошибки при закрытии процессов local/remote. Поскольку команда уже завершена, выдача ошибки нецелесообразна, но предупреждение сохраняется, чтобы указать на необычную ситуацию. (Рецензирование: Cynthia Shang. Сообщили: argdenis.)
  • Исправлена проблема с символом = в именах файлов или баз данных. (Рецензирование: Bastian Wegge, Cynthia Shang. Сообщили: Brad Nicholson, Bastian Wegge.)

Новые возможности:

  • Добавлено автоматическое получение временных учётных данных S3 на экземплярах AWS. (Авторы: David Steele, Stephen Frost. Рецензирование: Cynthia Shang, David Youatt, Aleš Zelený, Jeanette Bromage.)
  • Добавлен параметр archive-mode для отключения архивирования при восстановлении. (Рецензирование: Stephen Frost. Предложили: Stephen Frost.)

Улучшения:

  • Поддержка PostgreSQL 13 beta3. Изменения версий control/catalog/WAL в последующих бета-версиях могут нарушить совместимость, но pgBackRest будет обновляться с каждым выпуском для её сохранения.
  • Асинхронные операции list/remove для хранилищ S3/Azure. (Рецензирование: Cynthia Shang, Stephen Frost.)
  • Улучшено использование памяти при обнаружении нежурналируемых отношений во время построения манифеста. (Рецензирование: Cynthia Shang, Stephen Frost, Brad Nicholson, Oscar. Предложили: Oscar, Brad Nicholson.)
  • После создания асинхронного процесса через fork файловые дескрипторы закрываются заблаговременно. (Рецензирование: Stephen Frost, Cynthia Shang.)
  • Закрытие удалённого соединения резервного копирования отложено до завершения проверки архива. (Авторы: Floris van Nee. Рецензирование: David Steele.)
  • Улучшен подробный вывод ошибок. (Рецензирование: Cynthia Shang.)
  • Улучшены сообщения об ошибках TLS. (Рецензирование: Cynthia Shang, Stephen Frost.)

Исправления ошибок в документации:

  • В описание параметра compress-type добавлено значение none и исправлен пример. (Сообщили: Ugo Bellavance, Don Seiler.)
  • В описание параметра repo-type добавлен отсутствовавший тип azure. (Исправление: Don Seiler. Рецензирование: David Steele.)
  • Исправлена опечатка в описании параметра repo-cipher-type. (Исправление: Don Seiler. Рецензирование: David Steele.)

Улучшения документации:

  • Уточнено, что при отключённом expire-auto команду expire необходимо запускать регулярно. (Рецензирование: Douglas J Hunley. Предложили: Douglas J Hunley.)

Примечания к выпуску v2.28

Хранилище репозитория Azure

Выпущен 20 июля 2020

Исправления ошибок:

  • Исправлено поведение restore с --force, соответствовавшее --force --delta. Из-за этого restore заменяла файлы на основе временной метки и размера вместо безусловной перезаписи, поэтому некоторые файлы, требовавшие обновления, оставались неизменными. Обычная restore и restore с --delta этой проблемой не затрагивались. (Рецензирование: Cynthia Shang.)

Новые возможности:

  • Поддержка Azure для хранилища репозитория. (Рецензирование: Cynthia Shang, Don Seiler.)
  • Добавлен параметр expire-auto, позволяющий отключить автоматическое удаление по сроку хранения после успешного резервного копирования. (Авторы: Stefan Fercot. Рецензирование: Cynthia Shang, David Steele.)

Улучшения:

  • Асинхронная загрузка частями в S3. (Рецензирование: Stephen Frost.)
  • Автоматические повторные попытки для backup, restore, archive-get и archive-push. (Рецензирование: Cynthia Shang.)
  • Отключено параллельное выполнение запросов в сеансах PostgreSQL, используемых для управления резервным копированием. (Рецензирование: Stefan Fercot.)
  • Поддержка PostgreSQL 13 beta2. Изменения версий control/catalog/WAL в последующих бета-версиях могут нарушить совместимость, но pgBackRest будет обновляться с каждым выпуском для её сохранения.
  • Улучшена обработка неверного статуса ответа HTTP. (Рецензирование: Cynthia Shang.)
  • Улучшено сообщение об ошибке при отсутствии параметра pg1-path для команды archive-get. (Рецензирование: Cynthia Shang.)
  • Добавлена подсказка при включении дельта-копирования по контрольным суммам после переключения временной шкалы. (Рецензирование: Matt Bunter, Cynthia Shang.)
  • Там, где это уместно, вместо postmaster используется PostgreSQL. (Рецензирование: Cynthia Shang.)

Исправления ошибок в документации:

  • Исправлен неверный пример параметра repo-retention-full-type. (Сообщили: Höseyin Sönmez.)
  • Из справочников команд HTML и man удалены внутренние команды. (Сообщили: Cynthia Shang.)

Улучшения документации:

  • Обновлены версии PostgreSQL, используемые для сборки руководств пользователя. Также добавлены диапазоны версий, указывающие, что руководство применимо к диапазону версий PostgreSQL, даже если оно собрано для одной конкретной версии. (Рецензирование: Stephen Frost.)
  • Обновлён ответ на вопрос об удалении конкретного набора резервной копии. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • В разделе вопросов и ответов уточнено поведение PITR по умолчанию. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v2.27

Улучшения удаления по сроку хранения и драйверы сжатия

Выпущен 26 мая 2020

Исправления ошибок:

  • Исправлена проверка вложенности ссылок на файлы в ссылки на каталоги. (Рецензирование: Cynthia Shang. Сообщили: Christophe Cavallié.)
  • Для синхронной команды archive-push параметр pg-path1 стал необязательным. (Рецензирование: Cynthia Shang. Сообщили: Jerome Peng.)
  • Команда expire теперь проверяет наличие файла остановки. (Исправление: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлена обработка отсутствующего пояснения статуса в ответе HTTP. (Рецензирование: Cynthia Shang. Сообщили: Tenuun.)
  • Увеличен размер буфера для сброса данных сжатия lz4. (Рецензирование: Cynthia Shang. Сообщили: Eric Radman.)
  • Для команды remote игнорируются параметры pg-host* и repo-host*. (Рецензирование: Cynthia Shang. Сообщили: Pavel Suderevsky.)
  • Исправлено возможное отсутствие параметров pg1-* для команды remote. (Рецензирование: Cynthia Shang. Сообщили: Andrew L’Ecuyer.)

Новые возможности:

  • Хранение полных резервных копий по времени. Параметр --repo-retention-full-type позволяет хранить полные резервные копии в течение периода, заданного в днях. (Авторы: Cynthia Shang, Pierre Ducroquet. Рецензирование: David Steele.)
  • Удаление выбранной резервной копии. Пользователь может удалить указанную резервную копию независимо от настроек срока хранения. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Поддержка сжатия Zstandard. Значение compress-type=zst делает новые резервные копии и архив несовместимыми с предыдущими версиями pgBackRest: восстановление с их помощью будет невозможно. (Рецензирование: Cynthia Shang.)
  • Поддержка сжатия bzip2. Значение compress-type=bz2 делает новые резервные копии и архив несовместимыми с предыдущими версиями pgBackRest: восстановление с их помощью будет невозможно. (Авторы: Stephen Frost. Рецензирование: David Steele, Cynthia Shang.)
  • В команду info добавлено состояние выполнения backup/expire. (Авторы: Stefan Fercot. Рецензирование: David Steele.)

Улучшения:

  • Архив WAL удаляется только при достижении порога repo-retention-archive. Ранее WAL, предшествующий первой полной резервной копии, удалялся после её создания. Теперь он сохраняется в соответствии с настройками срока хранения. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлена локальная реализация MD5, чтобы S3 работал при включённом FIPS. (Рецензирование: Cynthia Shang, Stephen Frost. Предложили: Brian Almeida, John Kelly.)
  • Поддержка PostgreSQL 13 beta1. Изменения версий control/catalog/WAL в последующих бета-версиях могут нарушить совместимость, но pgBackRest будет обновляться с каждым выпуском для её сохранения. (Рецензирование: Cynthia Shang.)
  • Значение по умолчанию buffer-size уменьшено до 1MiB. (Рецензирование: Stephen Frost.)
  • Если expire запущена не на сервере репозитория, выдаётся понятное пользователю сообщение об ошибке. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v2.26

Неблокирующий TLS

Выпущен 20 апреля 2020

Исправления ошибок:

  • Из регулярного выражения манифеста удалено пустое подвыражение. Оно вызывало проблемы в MacOS, хотя на других платформах всё, по-видимому, работало нормально. (Исправление: David Raftis. Рецензирование: David Steele.)

Улучшения:

  • Неблокирующая реализация TLS. (Рецензирование: Slava Moudry, Cynthia Shang, Stephen Frost.)
  • Размер копируемых данных резервной копии ограничивается только для файлов, журналируемых в WAL. Предыдущее поведение могло привести к усечению postgresql.conf или postgresql.auto.conf в резервной копии. (Рецензирование: Cynthia Shang.)
  • Параметры TCP keep-alive теперь настраиваются. (Предложили: Marc Cousin.)
  • Добавлен параметр io-timeout. (Рецензирование: Cynthia Shang.)

Примечания к выпуску v2.25

Поддержка сжатия LZ4

Выпущен 26 марта 2020

Новые возможности:

  • Добавлена поддержка сжатия lz4. Значение compress-type=lz4 делает новые резервные копии и архив несовместимыми с предыдущими версиями pgBackRest: восстановление с их помощью будет невозможно. (Рецензирование: Cynthia Shang.)
  • В команду expire добавлен параметр --dry-run. Пробный запуск позволяет увидеть, какие резервные копии и архивы удалила бы команда expire, ничего фактически не удаляя. (Авторы: Cynthia Shang, Luca Ferrari. Рецензирование: David Steele. Предложили: Marc Cousin.)

Улучшения:

  • Улучшена производительность удалённого построения манифеста. (Предложили: Jens Wilke.)
  • Исправлено обнаружение параметров keepalive в Linux. (Авторы: Marc Cousin. Рецензирование: David Steele.)
  • В configure добавлено определение платформы для корректного задания флагов стандартов. (Авторы: Marc Cousin. Рецензирование: David Steele.)
  • Параметры compress/compress-level удалены из команд, где они не используются. Эти команды (например, restore, archive-get) никогда не использовали параметры сжатия, но допускали их передачу в командной строке. Теперь при передаче этих параметров в командной строке выдаётся ошибка. Если возникают такие ошибки, следует удалить неиспользуемые параметры. (Рецензирование: Cynthia Shang.)
  • Размер копируемой части файла ограничен размером, определённым при начале резервного копирования. Если файл увеличивается во время копирования, он будет воссоздан при воспроизведении WAL во время восстановления, поэтому копировать дополнительные данные не требуется. (Рецензирование: Cynthia Shang.)

Примечания к выпуску v2.24

Автоматический выбор набора резервной копии для целевого времени

Выпущен 25 февраля 2020

Исправления ошибок:

  • Предотвращено появление зомби-процессов в асинхронных командах архивирования. (Рецензирование: Stephen Frost. Сообщили: Adam Brusselback, ejberdecia.)
  • При запуске archive-get/archive-push/restore не на сервере PostgreSQL выдаётся ошибка. (Рецензирование: Stephen Frost. Сообщили: Jesper St John.)
  • Если размер или кодирование не указаны, содержимое HTTP читается до конца файла. (Рецензирование: Cynthia Shang. Сообщили: Christian ROUX.)
  • Исправлено возобновление резервной копии, созданной Perl-реализацией. Такую копию следует игнорировать, но код на C не мог загрузить частичный манифест, записанный Perl, из-за небольшого различия форматов. Добавлены проверки для выявления этого случая и корректного продолжения работы. (Сообщили: Kacey Holston.)

Новые возможности:

  • При восстановлении с указанным целевым временем набор резервной копии выбирается автоматически. Автоматический выбор выполняется только при отсутствии --set. Если набор резервной копии для заданного времени не найден, используется последний набор, выбираемый по умолчанию. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения:

  • При резервном копировании пропускается временный файл pg_internal.init. (Рецензирование: Cynthia Shang. Предложили: Michael Paquier.)
  • В backup добавлены дополнительные проверки манифеста. (Рецензирование: Cynthia Shang.)

Улучшения документации:

  • Боту lock-bot запрещено добавлять комментарии к заблокированным обращениям. (Предложили: Christoph Berg.)

Примечания к выпуску v2.23

Исправление ошибки

Выпущен 27 января 2020

Исправления ошибок:

  • Исправлено повреждение манифеста из-за отсутствующих файлов. Если PostgreSQL удалял файл во время резервного копирования (или файл отсутствовал на резервном сервере), следующий файл мог не копироваться, а его запись в манифесте — не обновляться. В таком случае восстановление резервной копии завершалось ошибкой. (Рецензирование: Cynthia Shang. Сообщили: Vitaliy Kukharik.)

Улучшения:

  • Для параметров сборки libxml2 вместо xml2-config используется pkg-config. (Авторы: David Steele, Adrian Vondendriesch.)
  • В backup/restore проверяется наличие контрольных сумм в манифесте. (Рецензирование: Cynthia Shang.)

Примечания к выпуску v2.22

Исправление ошибки

Выпущен 21 января 2020

Исправления ошибок:

  • Исправлена ошибка преобразования временной шкалы. Она нужна для проверки сегментов WAL в архиве после резервного копирования. Преобразование выполнялось по основанию 10 вместо 16, что приводило к ошибкам при временной шкале ≥ 0xA. (Сообщили: Lukas Ertl, Eric Veldhuyzen.)

Примечания к выпуску v2.21

Перенос на C завершён

Выпущен 15 января 2020

Исправления ошибок:

  • Исправлено игнорирование параметров асинхронными командами. Асинхронные процессы archive-get/archive-push не загружали параметры, заданные в секциях конфигурации команд, например [global:archive-get]. (Рецензирование: Cynthia Shang. Сообщили: Urs Kramer.)
  • Исправлена обработка \ в именах файлов. Символ \ неверно экранировался при вычислении контрольной суммы манифеста, из-за чего манифест не загружался. Поскольку \ в именах файлов кластера должен встречаться крайне редко или не встречаться вовсе, серьёзные проблемы на практике маловероятны.

Новые возможности:

  • Теперь pgBackRest полностью написан на C.
  • Добавлен параметр pg-user. Он задаёт имя пользователя базы данных при подключении к PostgreSQL. Если он не указан, pgBackRest подключается от имени локального пользователя ОС или PGUSER, как и раньше. (Авторы: Mike Palmiotto. Рецензирование: David Steele.)
  • В драйвере S3 разрешены URI с адресацией через путь.

Улучшения:

  • Команда backup полностью реализована на C. (Рецензирование: Cynthia Shang.)

Примечания к выпуску v2.20

Исправления ошибок

Выпущен 12 декабря 2019

Исправления ошибок:

  • Исправлены archive-push/archive-get при символической ссылке PGDATA. Эти команды пытались использовать cwd() в качестве PGDATA, но при символической ссылке PGDATA полученный путь не совпадал с путём в конфигурации pgBackRest. Если cwd() не совпадает с путём pgBackRest, выполняется chdir() в этот каталог и проверяется совпадение следующего cwd() с результатом первого вызова. (Сообщили: Stephen Frost, Milosz Suchy.)
  • Исправлен список ссылок при воссоздании backup.info командой expire. Поскольку команда backup всё ещё использует Perl-реализацию воссоздания, проблема проявляется только если 1) резервная копия отсутствует в backup.info и 2) команда expire запускается напрямую, а не после backup, как обычно. Такое сочетание маловероятно, поэтому на практике проблема, скорее всего, не возникает.
  • Исправлено нарушение сегментации при неожиданном EOF во время распаковки gzip. (Сообщили: Stephen Frost.)

Примечания к выпуску v2.19

Перенос на C и исправления ошибок

Выпущен 12 ноября 2019

Исправления ошибок:

  • Исправлен тайм-аут удалённого процесса при дельта-восстановлении. При дельта-восстановлении в основном неизменившегося кластера удалённый процесс мог завершиться по тайм-ауту, если за время protocol-timeout из репозитория не запрашивались файлы. Для предотвращения тайм-аута добавлены сообщения keep-alive. (Сообщили: James Sewell, Jens Wilke.)
  • Исправлена обработка повторяющихся заголовков HTTP. Повторяющиеся заголовки следует считать эквивалентом одного заголовка со значениями через запятую, а не вызывать ошибку, как это происходило раньше. (Сообщили: donicrosby.)

Улучшения:

  • Вывод JSON команды info больше не форматируется для чтения человеком. Системам мониторинга проще обрабатывать JSON без переводов строк. При необходимости для форматирования можно использовать внешние инструменты, например jq. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Команда check полностью реализована на C. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения документации:

  • Документирован порядок участия в разработке pgBackRest. (Авторы: Cynthia Shang, David Steele.)
  • Документирована максимальная версия для параметра auto-stop. (Авторы: Brad Nicholson. Рецензирование: David Steele.)

Улучшения набора тестов:

  • Исправлено использование тестового пути контейнера при --vm=none. (Предложили: Stephen Frost.)
  • Исправлено несовпадение часового пояса в тесте expect. (Предложили: Stephen Frost.)
  • По умолчанию больше не генерируется встроенный код libc. (Предложили: Stephen Frost.)

Примечания к выпуску v2.18

Поддержка PostgreSQL 12

Выпущен 1 октября 2019

Новые возможности:

  • Поддержка PostgreSQL 12.
  • В команду info добавлен параметр set для подробного текстового вывода. Дополнительные сведения включают базы данных, доступные для выборочного восстановления, и список табличных пространств и символических ссылок с их целевыми путями по умолчанию. (Авторы: Cynthia Shang. Рецензирование: David Steele. Предложили: Stephen Frost, ejberdecia.)
  • Добавлен тип восстановления standby. Для PostgreSQL < 12 он автоматически добавляет standby_mode=on в recovery.conf, а для PostgreSQL ≥ 12 создаёт standby.signal, обеспечивая единый интерфейс для разных версий PostgreSQL. (Рецензирование: Cynthia Shang.)

Улучшения:

  • Команда restore полностью реализована на C. (Рецензирование: Cynthia Shang.)

Улучшения документации:

  • Документирована связь между db-timeout и protocol-timeout. (Авторы: Cynthia Shang. Рецензирование: David Steele. Предложили: James Chanco Jr.)
  • В документацию добавлены пояснения о репозиториях резервных серверов. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • В раздел вопросов и ответов добавлен вопрос о восстановлении на заданный момент времени. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v2.17

Перенос на C и исправления ошибок

Выпущен 3 сентября 2019

Исправления ошибок:

  • Ускорено построение манифеста при очень большом числе таблиц и сегментов. (Сообщили: Jens Wilke.)
  • Исправлены исключения для специальных файлов. (Сообщили: CluelessTechnologist, Janis Puris, Rachid Broum.)

Улучшения:

  • Команды stanza-create/update/delete полностью реализованы на C. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Команды start/stop полностью реализованы на C. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Каталоги и файлы журналов создаются с правами 0750/0640. (Предложили: Damiano Albani.)

Исправления ошибок в документации:

  • Исправлена установка пакета yum.p.o, когда указан собственный пакет. (Сообщили: Joe Ayers, John Harvey.)

Улучшения документации:

  • Сборка pgBackRest выполняется от имени непривилегированного пользователя. (Предложили: Laurenz Albe.)

Примечания к выпуску v2.16

Перенос на C и исправления ошибок

Выпущен 5 августа 2019

Исправления ошибок:

  • При ошибках S3 RequestTimeTooSkewed выполняются повторные попытки вместо немедленного завершения. (Сообщили: sean0101n, Tim Garton, Jesper St John, Aleš Zelený.)
  • Исправлена неверная обработка transfer-encoding в ответе на запрос HEAD. (Сообщили: Pavel Suderevsky.)
  • Исправлены нарушения областей видимости, выявленные оптимизациями gcc 9. (Сообщили: Christian Lange, Ned T. Crigler.)

Новые возможности:

  • Добавлен параметр repo-s3-port для задания нестандартного порта службы S3.

Улучшения:

  • Команда local для backup полностью реализована на C. (Авторы: David Steele, Cynthia Shang.)
  • Команда check частично реализована на C. (Рецензирование: Cynthia Shang.)

Примечания к выпуску v2.15

Реализация expire на C

Выпущен 25 июня 2019

Исправления ошибок:

  • Исправлено чрезмерно агрессивное удаление архива по сроку хранения. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Mohamad El-Rifai.)

Улучшения:

  • Команда expire полностью реализована на C. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Команда local для восстановления полностью реализована на C.
  • Удалено жёстко заданное имя пользователя PostgreSQL, чтобы работал $PGUSER. (Предложили: Julian Zhang, Janis Puris.)
  • Теперь учитывается параметр --prefix команды configure. (Предложили: Daniel Westermann.)
  • Параметр repo-s3-verify-ssl переименован в repo-s3-verify-tls. Новое имя предпочтительнее, поскольку pgBackRest не поддерживает ни одну версию протокола SSL: все они считаются небезопасными. Старое имя продолжит приниматься.

Улучшения документации:

  • В документацию добавлен раздел вопросов и ответов. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • В документации для PostgreSQL ≥ 9.6 используется wal_level=replica. (Предложили: Patrick McLaughlin.)

Примечания к выпуску v2.14

Исправление ошибки и улучшения

Выпущен 20 мая 2019

Исправления ошибок:

  • Исправлено нарушение сегментации при process-max > 8 для archive-push/archive-get. (Сообщили: Jens Wilke.)

Улучшения:

  • При запуске stanza-delete с force проверки базы данных пропускаются. (Авторы: Cynthia Shang. Рецензирование: David Steele. Предложили: hatifnatt.)
  • Добавлен скрипт configure для улучшения поддержки нескольких платформ.

Дополнения к документации:

  • Добавлены руководства пользователя для CentOS/RHEL 6/7.

Примечания к выпуску v2.13

Исправления ошибок

Выпущен 18 апреля 2019

Исправления ошибок:

  • Исправлены операции чтения нулевой длины, вызывавшие проблемы у не ожидавших их фильтров ввода-вывода. (Сообщили: brunre01, Jens Wilke, Tomasz Kontusz, guruguruguru.)
  • Исправлена ненадёжная передача сообщений об ошибках из процессов local/remote.
  • Исправлены сообщения об ошибках Posix/CIFS, содержавшие неверное имя файла при записи, синхронизации или закрытии.

Примечания к выпуску v2.12

Реализация archive-push на C

Выпущен 11 апреля 2019

ВАЖНОЕ ПРИМЕЧАНИЕ: Новая реализация TLS/SSL запрещает точки в именах бакетов S3 согласно RFC-2818. Это исправление безопасности необходимо для проверки имён серверов в соответствии со стандартом.

Исправления ошибок:

  • Исправлены проблемы с параметром пути, оканчивающимся на /. (Сообщили: Marc Cousin.)
  • Исправлены проблемы при log-level-file=off для команды archive-get. (Сообщили: Brad Nicholson.)
  • Код на C исправлен для распознавания формата параметров host:port, как в Perl. (Сообщили: Kyle Nevins.)
  • Исправлены проблемы с параметрами журналирования команд remote/local.

Улучшения:

  • Команда archive-push полностью реализована на C.
  • Предельное значение process-max увеличено до 999. (Предложили: Rakshitha-BR.)
  • Улучшено сообщение об ошибке, когда имя бакета S3 содержит точки.

Улучшения документации:

  • Уточнена поддержка S3-совместимых объектных хранилищ. (Предложили: Magnus Hagander.)

Примечания к выпуску v2.11

Реализация archive-get на C

Выпущен 11 марта 2019

Исправления ошибок:

  • Исправлено возможное усечение сегментов WAL при ошибке в процессе записи. (Сообщили: blogh.)
  • Исправлено отсутствие минимального и максимального WAL в команде info при указанной stanza. (Исправление: Stefan Fercot. Рецензирование: David Steele.)
  • Исправлен некорректный JSON для параметров, передаваемых из C в Perl. (Сообщили: Leo Khomenko.)

Улучшения:

  • Команда archive-get полностью реализована на C.
  • В старых версиях Perl включён keep-alive сокетов. (Авторы: Marc Cousin. Рецензирование: David Steele.)
  • При передаче параметров команде, которая их не принимает, выдаётся ошибка. (Предложили: Jason O’Donnell.)
  • Добавлены подсказки при невозможности найти сегмент WAL в архиве. (Предложили: Hans-Jürgen Schönig.)
  • Улучшено сообщение об ошибке, когда имя сервера не найдено в сертификате. (Предложили: James Badger.)
  • В backup.manifest добавлены дополнительные параметры для отладки. (Авторы: blogh. Рецензирование: David Steele.)

Улучшения документации:

  • Версией PostgreSQL по умолчанию в документации стала PostgreSQL 10.

Примечания к выпуску v2.10

Исправления ошибок

Выпущен 9 февраля 2019

Исправления ошибок:

  • Добавлен нереализованный ранее метод драйвера S3, необходимый для archive-get. (Сообщили: mibiio.)
  • Исправлена проверка неверной настройки pg-path. (Сообщили: James Chanco Jr.)

Примечания к выпуску v2.09

Небольшие улучшения и исправления ошибок

Выпущен 30 января 2019

Исправления ошибок:

  • Исправлена проблема с несколькими файлами асинхронного состояния, вызывавшая критическую ошибку. (Сообщили: Vidhya Gurumoorthi, Joe Ayers, Douglas J Hunley.)

Улучшения:

  • Команда info полностью реализована на C. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Упрощено текстовое сообщение команды info при отсутствии stanza. Путь репозитория заменён строкой “the repository”.
  • В Makefile добавлен флаг _DARWIN_C_SOURCE для сборок MacOS. (Авторы: Douglas J Hunley. Рецензирование: David Steele.)
  • Поиск адресов в клиенте TLS на C обновлён для использования современных методов. (Предложили: Bruno Friedmann.)
  • Подключён совместимый с Posix заголовок для strcasecmp() и fd_set. (Предложили: ucando.)

Исправления ошибок в документации:

  • Исправлен жёстко заданный путь репозитория. (Сообщили: Heath Lord.)

Улучшения документации:

  • Уточнено, что шифрование всегда выполняется на стороне клиента. (Предложили: Bruce Burdick.)
  • Добавлены примеры настройки сервера документации.
  • В переменных, списках и элементах списков манифеста разрешён if.

Примечания к выпуску v2.08

Небольшие улучшения и исправления ошибок

Выпущен 2 января 2019

Исправления ошибок:

  • Удалён запрос информации об объекте S3 сразу после его размещения. (Сообщили: Matt Kunkel.)
  • Тип archive-get-queue-max исправлен на size. (Сообщили: Ronan Dunklau.)
  • Добавлено сообщение об ошибке, когда uid/gid текущего пользователя не сопоставляются с именем. (Сообщили: Camilo Aguilar.)
  • При задании --target-action=shutdown для PostgreSQL < 9.5 выдаётся ошибка.

Улучшения:

  • Для соединений S3 включены TCP keepalive. (Предложили: Ronan Dunklau.)
  • Текстовый вывод команды info переупорядочен, чтобы последняя резервная копия выводилась в конце. (Авторы: Cynthia Shang. Рецензирование: David Steele. Предложили: Ryan Lambert.)
  • Владелец файла изменяется только при необходимости.
  • При выдаче ошибок S3 содержимое заголовка authentication скрывается. (Предложили: Brad Nicholson.)

Улучшения документации:

  • Уточнено, когда действует target-action, и описана поддержка версий PostgreSQL. (Предложили: Keith Fiske.)
  • Уточнено, что для бакета необходимо корректно настроить регион и конечную точку. (Предложили: Pritam Barhate.)
  • Добавлена документация по сборке документации.

Примечания к выпуску v2.07

Автоматическое дельта-копирование по контрольным суммам

Выпущен 16 ноября 2018

Исправления ошибок:

  • Исправлено игнорирование archive-push-queue-max при ошибке соединения. (Сообщили: Lardière Sébastien.)
  • Исправлено использование постоянного размера сегмента WAL при определении превышения archive-push-queue-max.
  • Исправлена ошибка после неудачного открытия файла журнала, когда обработка должна продолжаться. (Сообщили: vthriller.)

Новые возможности:

  • Дельта-копирование по контрольным суммам автоматически включается при обнаружении аномалий, например переключения временной шкалы. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения:

  • Повторные попытки выполняются для всех ошибок S3 5xx, а не только для внутренних ошибок 500. (Предложили: Craig A. James.)

Примечания к выпуску v2.06

Дельта-копирование по контрольным суммам и поддержка PostgreSQL 11

Выпущен 15 октября 2018

Исправления ошибок:

  • Исправлено отсутствие кодирования URI в драйвере S3. (Сообщили: Dan Farrell.)
  • Исправлено неверное сообщение об ошибке дублирующихся параметров в файлах конфигурации. (Сообщили: Jesper St John.)
  • Исправлено ошибочное сообщение о возврате ошибки на уровне журнала info. Код возврата 1 команды archive-get записывался как сообщение об ошибке на уровне info, хотя в остальном работа была корректной.

Новые возможности:

  • Добавлено дельта-копирование по контрольным суммам для инкрементных резервных копий. Оно использует контрольные суммы вместо временных меток для определения изменений файлов. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Поддержка PostgreSQL 11, включая настраиваемый размер сегмента WAL.

Улучшения:

  • В каталоге табличного пространства, на который указывает ссылка, игнорируются все файлы, кроме подкаталога текущей версии PostgreSQL. Ранее наличие других файлов, не принадлежащих пользователю PostgreSQL, приводило к ошибке.
  • Команда info улучшена для отображения типа шифрования stanza. (Авторы: Cynthia Shang. Рецензирование: David Steele. Предложили: Douglas J Hunley.)
  • Улучшена поддержка специальных символов в именах файлов.
  • Параметр delta теперь можно задавать в файле конфигурации pgBackRest. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения документации:

  • Для повышения безопасности SSH используется command в authorized_hosts. (Предложили: Stephen Frost, Magnus Hagander.)
  • В справочнике конфигурации перечислены допустимые значения параметра buffer-size. (Авторы: Cynthia Shang. Рецензирование: David Steele. Предложили: Stéphane Schildknecht.)

Примечания к выпуску v2.05

Параметры в переменных окружения и исключение временных и нежурналируемых отношений

Выпущен 31 августа 2018

Исправления ошибок:

  • Исправлена проблема, при которой относительные ссылки в $PGDATA могли сохраняться в резервной копии с неверным путём. Абсолютные ссылки не затрагивались, а относительные ссылки табличных пространств выявлялись другими проверками. (Сообщили: Cynthia Shang.)
  • Из команды check удалён не полностью реализованный параметр online. Автономная работа противоречит назначению этой команды — проверять корректность архивирования и резервного копирования. (Сообщили: Jason O’Donnell.)
  • Исправлена проблема, при которой ошибки, возникавшие в C при вызове из Perl, не записывались в журнал. pgBackRest корректно завершался с верным кодом ошибки, но сообщение, необходимое для отладки, отсутствовало. (Сообщили: Douglas J Hunley.)
  • Исправлена проблема при повторном задании логического параметра, например delta. (Сообщили: Yogesh Sharma.)

Новые возможности:

  • Любой параметр теперь можно задать через переменную окружения. Это относится и к параметрам, ранее доступным только в командной строке, например stanza, и к секретным параметрам, которые нельзя было задавать в командной строке, например repo1-s3-key-secret.
  • Из резервного копирования исключены файлы временных и нежурналируемых отношений (таблиц и индексов). Использована та же логика, что и в изменениях PostgreSQL, добавляющих эту возможность: 8694cc96 и 920a5e50 . Исключение временных отношений включено для PostgreSQL ≥ 9.0. Исключение нежурналируемых отношений включено для PostgreSQL ≥ 9.1, где эта возможность появилась. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлена возможность исключать из резервной копии произвольные каталоги и/или файлы. Неправильное использование этой возможности может привести к несогласованным резервным копиям, поэтому перед использованием следует внимательно прочитать документацию --exclude. (Рецензирование: Cynthia Shang.)
  • Добавлен параметр log-subprocess, разрешающий запись журналов подпроцессов local и remote в файлы.
  • Поддержка PostgreSQL 11 Beta 3.

Улучшения:

  • Файлы нулевого размера в манифесте резервной копии теперь могут ссылаться на предыдущий манифест независимо от разницы временных меток. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Улучшена производительность асинхронных archive-get/archive-push за счёт прямой проверки файлов состояния. (Авторы: Stephen Frost. Рецензирование: David Steele.)
  • Улучшено сообщение об ошибке при отсутствии у команды параметра stanza. (Предложили: Sarah Conway.)

Исправления ошибок в документации:

  • Исправлен неверный уровень журнала в описании параметра log-path. (Сообщили: Camilo Aguilar.)

Улучшения документации:

  • Прекращены попытки упорядочивать участников в release.xml по фамилии и имени. В примечаниях к выпускам имена участников всегда приводились точно в указанном ими виде, но внутренние идентификаторы пытались назначать по фамилии и имени, которые бывает трудно определить, и в итоге это не имело смысла. Изменение вдохновлено докладом Christophe на PostgresOpen 2017 «У людей нет первичного ключа». (Предложили: Christophe Pettus.)

Улучшения набора тестов:

  • При сборке LibC вне тестовой среды выдаётся ошибка. LibC больше не требуется для производственных сборок.

Примечания к выпуску v2.04

Исправление критической ошибки возобновления резервного копирования

Выпущен 5 июля 2018

ВАЖНОЕ ПРИМЕЧАНИЕ: В этом выпуске исправлена критическая ошибка возобновления резервного копирования. Все возобновлённые резервные копии, созданные до этого выпуска, следует считать несогласованными. После сбоя предыдущего резервного копирования оно возобновляется, если не задано resume=n. Возобновлённую копию можно определить по сообщению в журнале резервного копирования: “aborted backup of same type exists, will be cleaned to remove invalid files and resumed”. Если такое сообщение есть, нельзя использовать эту копию или любую копию из того же набора для восстановления; следует проверить журналы восстановления и выяснить, восстанавливалась ли возобновлённая копия. Если да, в кластере могут быть несогласованные данные.

Исправления ошибок:

  • Исправлена критическая ошибка возобновления, приводившая к несогласованным резервным копиям. Регрессия в v0.82 убрала сравнение временных меток при выборе файлов прерванной копии, которые следует сохранить при возобновлении. Подробности см. в примечании выше. (Сообщили: David Youatt, Yogesh Sharma, Stephen Frost.)
  • Исправлена ошибка выборочного восстановления, когда в кластере существует только одна пользовательская база данных. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Nj Baliyan.)
  • Исправлен не соответствовавший ISO-8601 формат временной метки в заголовках авторизации S3. AWS и некоторые шлюзы допускали дополнение часов пробелами вместо нулей, а другие — нет. (Исправление: Andrew Schwartz. Рецензирование: David Steele.)

Новые возможности:

  • Поддержка PostgreSQL 11 Beta 2.

Улучшения:

  • Клиент HTTP улучшен: если сервер не задаёт content-length, устанавливается значение 0. S3 и шлюзы всегда задают content-length или transfer-encoding, но HTTP 1.1 этого не требует, и прокси, например HAProxy, могут не включать ни один из этих заголовков. (Предложили: Adam K. Sumner.)
  • Для соединений PostgreSQL задаётся search_path = 'pg_catalog'. (Предложили: Stephen Frost.)

Улучшения документации:

  • Создан новый раздел о сборке pgBackRest; сборка выполняется на отдельном сервере.
  • Добавлен пример политики S3 для ограничения прав доступа к бакету. (Предложили: Douglas J Hunley, Jason O’Donnell.)

Примечания к выпуску v2.03

Единственный исполняемый файл для развёртывания

Выпущен 22 мая 2018

Исправления ошибок:

  • Исправлено возможное переполнение буфера при обработке сообщений об ошибках. (Сообщили: Lætitia.)
  • Исправлено получение блокировки записи архива синхронной командой archive-get. (Сообщили: uspen.)

Улучшения:

  • Экспортируемые функции C и модули Perl встроены непосредственно в исполняемый файл pgBackRest.
  • Для лучшей переносимости вместо __time_t используется time_t. (Предложили: Nick Floersch.)
  • В конце команды выводится общее время выполнения в миллисекундах.

Примечания к выпуску v2.02

Параллельное асинхронное получение из архива и подключаемые файлы конфигурации

Выпущен 6 мая 2018

Исправления ошибок:

  • Исправлена рекурсивная синхронизация каталогов там, где должен синхронизироваться только указанный каталог. (Сообщили: Craig A. James.)
  • Исправлена ошибка “path not found” команды archive-copy для инкрементных и дифференциальных копий. (Сообщили: yummyliu, Vitaliy Kukharik.)
  • Исправлен сбой построения манифеста, когда два или более файла в PGDATA являются ссылками на один каталог. (Сообщили: Vitaliy Kukharik.)
  • Исправлен сбой дельта-восстановления при отсутствии файла, на который указывает ссылка.
  • Исправлено отображение параметров типа «ключ — значение» и списков в справке. (Сообщили: Clinton Adams.)

Новые возможности:

  • Добавлена асинхронная параллельная команда archive-get. Она поддерживает очередь сегментов WAL, снижая задержку, когда PostgreSQL запрашивает сегмент WAL через restore_command.
  • Добавлена поддержка дополнительных файлов конфигурации pgBackRest. Каталог задаётся параметром --config-include-path. Добавлен параметр --config-path для переопределения базового пути по умолчанию параметров --config и --config-include-path. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлен параметр repo-s3-token для настройки токенов временных учётных данных. В настоящее время pgBackRest не может запрашивать новые учётные данные, поэтому вся команда, например backup или restore, должна завершиться до истечения срока их действия. (Авторы: Yogesh Sharma. Рецензирование: David Steele.)

Улучшения:

  • Параметры archive-push-queue-max, manifest-save-threshold и buffer-size обновлены для приёма значений в KB, MB, GB, TB или PB, где множителем служит степень 1024. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Повышена эффективность синхронизации каталогов при резервном копировании и восстановлении. При большом числе небольших таблиц обход всего каталога может быть очень затратным. Манифест резервной копии содержит список путей, который теперь используется для синхронизации вместо обхода каталога резервного копирования или восстановления.
  • В начальном сообщении журнала info отображаются аргументы команды наряду с её параметрами.
  • Параметр archive-queue-max переименован в archive-push-queue-max для согласованности с новым параметром archive-get-queue-max. Старое имя параметра продолжит приниматься.

Исправления ошибок в документации:

  • В документацию добавлены сведения о поддержке 32-битных систем и предостережения. Поддержка 32-битных систем появилась в v1.26. (Сообщили: Viorel Tabara.)

Улучшения документации:

  • Добавлены примеры мониторинга с использованием PostgreSQL и jq. (Предложили: Stephen Frost, Brian Faherty.)
  • В конфигурацию архивирования добавлен пример использования секции команды. (Предложили: Christophe Courtois.)
  • Из документации удалено описание info --output=json как экспериментальной возможности.
  • Обновлено устаревшее описание параметра spool-path.

Новые возможности набора тестов:

  • Для отчётов о покрытии модульными тестами C используется lcov вместо Devel::Cover, который не показывал покрытие ветвей в отчётах, преобразованных из gcov. Неполное покрытие ветвей модуля теперь вызывает ошибку. Покрытие самих модульных тестов не отображается в отчёте, кроме случаев неполного покрытия операторов или ветвей.

Примечания к выпуску v2.01

Небольшие исправления ошибок и улучшения

Выпущен 19 марта 2018

Исправления ошибок:

  • Исправлено ошибочное признание параметров --target-action и --recovery-option недопустимыми при восстановлении с --type=immediate. (Сообщили: Brad Nicholson.)
  • При передаче секретного параметра, например repo1-s3-key, в командной строке теперь немедленно выдаётся ошибка. Поскольку pgBackRest не передавал секретные параметры подпроцессам, раньше возникала малопонятная ошибка. Новая ошибка намного яснее и содержит подсказки по устранению проблемы. Документация команд обновлена: из неё исключены секретные параметры, которые нельзя задавать в командной строке. (Сообщили: Brad Nicholson.)
  • Исправлена передача --no-config встроенному Perl. (Сообщили: Ibrahim Edib Kokdemir.)
  • Исправлена проблема, при которой log-level-stderr > warn приводил к ошибке при выходе процесса local/remote из-за неожиданного вывода в stderr. Максимальное значение для процессов local/remote теперь равно error, поскольку этим процессам незачем выдавать предупреждения. (Сообщили: Clinton Adams.)
  • Исправлен тест манифеста в команде check при наличии табличных пространств. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Thomas Flatley.)

Улучшения:

  • Если в файле конфигурации для параметра, не принимающего несколько аргументов, задано несколько аргументов, выдаётся ошибка. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Из src/Makefile удалены лишние команды sudo. (Авторы: Adrian Vondendriesch. Рецензирование: David Steele.)

Улучшения документации:

  • В примерах индексируемых параметров, то есть repo-* и pg-*, показывается индекс. (Предложили: Stephen Frost.)
  • Оглавление страницы команд упрощено: перечисляются только команды. (Предложили: Stephen Frost.)
  • Удалены упоминания необязательности библиотеки C.

Новые возможности набора тестов:

  • Добавлены сборки пакетов CentOS/RHEL.
  • Для статического анализа кода используется clang. Первоначально ничего не обнаружено, кроме нескольких функций, которые следовало пометить как __noreturn__.

Примечания к выпуску v2.00

Улучшение производительности archive-push

Выпущен 23 февраля 2018

Новые возможности:

  • Команда archive-push теперь частично написана на C, что значительно ускоряет PostgreSQL archive_command при обработке сообщений состояния от асинхронного процесса архивирования. (Рецензирование: Cynthia Shang.)

Улучшения:

  • Команда check улучшена для проверки возможности построения манифеста резервной копии. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Улучшена производительность клиента HTTPS. При буферизации теперь учитываются байты pending в сокете, если они есть, вместо полной зависимости от select(). В некоторых случаях последние байты не сбрасывались до закрытия соединения.
  • Улучшена производительность удаления S3. Константа S3_BATCH_MAX была заменена жёстко заданным значением 2, вероятно во время тестирования.
  • Любой параметр, заданный вне командной строки, теперь можно сбросить к значению по умолчанию через командную строку. Это позволяет сбрасывать параметры из pgbackrest.conf, уменьшая необходимость создания новых файлов конфигурации для отдельных задач.
  • Библиотека C теперь обязательна. Это устраняет условную загрузку и упрощает разработку новых возможностей библиотеки.
  • Исполняемый файл pgbackrest теперь является скомпилированной программой на C вместо программы на Perl. Это ускоряет некоторые чувствительные ко времени команды, например асинхронную archive-push.
  • Параметры db-* переименованы в pg-*, а backup-* — в repo-* для большей согласованности. Параметры repo-* теперь индексируются, хотя пока допускается только один индекс.

Дополнения к документации:

  • Все кластеры в документации инициализируются с контрольными суммами.

Улучшения документации:

  • В документации и справке командной строки перечисляются устаревшие имена параметров.
  • Уточнено, что бакеты S3 должен создавать пользователь. (Предложили: David Youatt.)

Примечания к выпуску v1.29

Исправление критической ошибки возобновления резервного копирования

Выпущен 5 июля 2018

ВАЖНОЕ ПРИМЕЧАНИЕ: В этом выпуске исправлена критическая ошибка возобновления резервного копирования. Все возобновлённые резервные копии, созданные до этого выпуска, следует считать несогласованными. После сбоя предыдущего резервного копирования оно возобновляется, если не задано resume=n. Возобновлённую копию можно определить по сообщению в журнале резервного копирования: “aborted backup of same type exists, will be cleaned to remove invalid files and resumed”. Если такое сообщение есть, нельзя использовать эту копию или любую копию из того же набора для восстановления; следует проверить журналы восстановления и выяснить, восстанавливалась ли возобновлённая копия. Если да, в кластере могут быть несогласованные данные.

Исправления ошибок:

  • Исправлена критическая ошибка возобновления, приводившая к несогласованным резервным копиям. Регрессия в v0.82 убрала сравнение временных меток при выборе файлов прерванной копии, которые следует сохранить при возобновлении. Подробности см. в примечании выше. (Сообщили: David Youatt, Yogesh Sharma, Stephen Frost.)
  • Исправлен не соответствовавший ISO-8601 формат временной метки в заголовках авторизации S3. AWS и некоторые шлюзы допускали дополнение часов пробелами вместо нулей, а другие — нет. (Исправление: Andrew Schwartz. Рецензирование: David Steele.)
  • Исправлена рекурсивная синхронизация каталогов там, где должен синхронизироваться только указанный каталог. (Сообщили: Craig A. James.)
  • Исправлено ошибочное признание параметров --target-action и --recovery-option недопустимыми при восстановлении с --type=immediate. (Сообщили: Brad Nicholson.)
  • Исправлена ошибка “path not found” команды archive-copy для инкрементных и дифференциальных копий. (Сообщили: yummyliu, Vitaliy Kukharik.)
  • Исправлен сбой построения манифеста, когда два или более файла в PGDATA являются ссылками на один каталог. (Сообщили: Vitaliy Kukharik.)
  • Исправлен сбой дельта-восстановления при отсутствии файла, на который указывает ссылка.
  • Исправлена ошибка выборочного восстановления, когда в кластере существует только одна пользовательская база данных. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Nj Baliyan.)

Улучшения:

  • Клиент HTTP улучшен: если сервер не задаёт content-length, устанавливается значение 0. S3 и шлюзы всегда задают content-length или transfer-encoding, но HTTP 1.1 этого не требует, и прокси, например HAProxy, могут не включать ни один из этих заголовков. (Предложили: Adam K. Sumner.)
  • Улучшена производительность клиента HTTPS. При буферизации теперь учитываются байты pending в сокете, если они есть, вместо полной зависимости от select(). В некоторых случаях последние байты не сбрасывались до закрытия соединения.
  • Улучшена производительность удаления S3. Константа S3_BATCH_MAX была заменена жёстко заданным значением 2, вероятно во время тестирования.
  • Повышена эффективность синхронизации каталогов при резервном копировании и восстановлении. При большом числе небольших таблиц обход всего каталога может быть очень затратным. Манифест резервной копии содержит список путей, который теперь используется для синхронизации вместо обхода каталога резервного копирования или восстановления. Неиспользуемая функция рекурсивной синхронизации каталогов удалена.

Исправления ошибок в документации:

  • В документацию добавлены сведения о поддержке 32-битных систем и предостережения. Поддержка 32-битных систем появилась в v1.26. (Сообщили: Viorel Tabara.)

Улучшения документации:

  • Уточнено, что бакеты S3 должен создавать пользователь. (Предложили: David Youatt.)
  • Обновлено устаревшее описание параметра spool-path.

Примечания к выпуску v1.28

Удаление stanza

Выпущен 1 февраля 2018

Исправления ошибок:

  • Исправлена невозможность восстановления одной базы данных в табличном пространстве с помощью –db-include. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Chiranjeevi Ravilla.)
  • При сопоставлении archive.info с backup.info теперь выбирается последний db-id. Это обеспечивает корректное сопоставление при дублировании system-id и db-version, например после отмены pg_upgrade. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Adam K. Sumner.)
  • Исправлено чрезмерно многословное сообщение об ошибке недопустимой команды. (Сообщили: Jason O’Donnell.)

Новые возможности:

  • Добавлена команда stanza-delete для удаления неиспользуемых stanza. (Авторы: Cynthia Shang. Рецензирование: David Steele. Предложили: Magnus Hagander.)

Улучшения:

  • Команда stanza-create улучшена: она больше не выдаёт ошибку, если stanza уже существует. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения документации:

  • В документации stanza-create --force усилено предостережение об осторожности при использовании. (Предложили: Jason O’Donnell.)

Примечания к выпуску v1.27

Исправления ошибок и документация

Выпущен 19 декабря 2017

Исправления ошибок:

  • Исправлено подавление ошибок места выполнения backup и restore. Если задан сервер резервного копирования, резервное копирование следует разрешать только на нём, а восстановление — только на сервере базы данных, если не создана альтернативная конфигурация, игнорирующая удалённый сервер. (Сообщили: Lardière Sébastien.)
  • Исправлено отсутствие удаления WAL по сроку хранения в PostgreSQL 10. Причиной было неверное регулярное выражение, ожидавшее формат X.X для всех основных версий PostgreSQL. (Сообщили: Adam Brusselback.)
  • Исправлена передача параметра --no-config дочерним процессам. Без него дочерние процессы всё равно читали локальный файл конфигурации, что могло вызывать неожиданное поведение.
  • Команда info исправлена: вывод "db (prior)" исключён, если для предыдущей версии кластера нет резервных копий или архивов. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Stephen Frost.)

Дополнения к документации:

  • Документирована связь между параметрами archive-copy и archive-check. (Предложили: Markus Nullmeier.)
  • Улучшена справочная документация archive-copy.

Примечания к выпуску v1.26

Шифрование репозитория

Выпущен 21 ноября 2017

Исправления ошибок:

  • Исправлена проблема, из-за которой копирование больших манифестов при восстановлении могло завершаться сбоем. (Сообщили: Craig A. James.)
  • Исправлено неверное смещение WAL для 32-битных архитектур. (Исправление: Javier Wilson. Рецензирование: David Steele.)
  • Исправлено получение WAL для старых версий базы данных. После stanza-upgrade должна сохраняться возможность восстановления резервных копий предыдущей версии и восстановления с помощью archive-get. Однако archive-get проверяла только последние версию и идентификатор базы данных и завершалась сбоем. Также исправлены проблемы многократного появления одной и той же пары версии и идентификатора базы данных в истории. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Clinton Adams.)
  • Исправлена проблема корректного назначения при восстановлении групп резервной копии, не сопоставленных с именем. Если при копировании невозможно сопоставить группу с именем, она сохраняется в манифесте как false; затем при восстановлении используется группа владельца $PGDATA, а если это невозможно — группа текущего пользователя. Эта логика работала неверно: выбранная группа перезаписывала пользователя, оставляя группу неопределённой, а пользователя — ошибочно равным группе. (Сообщили: Jeff McCormick.)
  • Исправлена передача параметров удалённым процессам. Если задавалось несколько баз данных, передавались путь, порт и путь сокета db1 независимо от того, к какой базе шло обращение. (Сообщили: uspen.)

Новые возможности:

  • Поддержка шифрования репозитория. (Авторы: Cynthia Shang, David Steele.)

Улучшения:

  • При --compress-level-network=0 фильтр gzip отключается. Ранее фильтр использовался с уровнем сжатия 0, создавая накладные расходы без какой-либо пользы.
  • Улучшена производительность распаковки фильтра gzip.

Дополнения к документации:

  • Добавлен шаблон для улучшения начального сбора информации при подаче обращений. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения документации:

  • Уточнено использование параметра archive-timeout и описано его отличие от настройки PostgreSQL archive_timeout. (Авторы: Cynthia Shang. Рецензирование: David Steele. Предложили: Keith Fiske.)

Новые возможности набора тестов:

  • Автоматизированные тесты для 32-битной архитектуры i386/i686.

Примечания к выпуску v1.25

Улучшения производительности S3

Выпущен 24 октября 2017

Исправления ошибок:

  • Исправлено игнорирование пользовательских значений параметра compress-level. (Сообщили: Jens Wilke.)
  • Удалена ошибка при обнаружении пересекающихся временных шкал. Такие шкалы допустимы во многих сценариях восстановления на заданный момент времени (PITR). (Сообщили: blogh.)
  • Исправлены случаи, когда database-id выводился не как целое число в выводе JSON команды info. (Исправление: Cynthia Shang. Рецензирование: David Steele. Сообщили: Jason O’Donnell.)

Новые возможности:

  • Улучшена производительность запросов списка в S3. Начальная буквальная часть выражения фильтра используется для создания поискового префикса, что часто позволяет сохранить достаточно малый объём запроса и избежать ограничения частоты запросов. (Предложили: Mihail Shvein.)

Новые возможности набора тестов:

  • Добавлены тесты производительности ввода-вывода.

Примечания к выпуску v1.24

Новые исключения из резервного копирования

Выпущен 28 сентября 2017

Исправления ошибок:

  • Исправлена выдача предупреждений вместо сообщений журнала меньшего приоритета при инициализации резервного копирования с резервного сервера. (Сообщили: uspen.)
  • Исправлена передача некоторых параметров db-*, например db-port, удалённым процессам. (Сообщили: uspen.)

Новые возможности:

  • Из резервного копирования исключено содержимое pg_snapshots, pg_serial, pg_notify и pg_dynshmem, поскольку оно воссоздаётся при запуске.
  • Из резервного копирования исключены файлы pg_internal.init, поскольку они воссоздаются при запуске.

Улучшения:

  • Файл журнала открывается после полного отделения асинхронного процесса от основного, чтобы основной процесс тоже не писал в этот файл. (Предложили: Jens Wilke.)

Дополнения к документации:

  • Добавлена настройка SSH без пароля.

Улучшения документации:

  • В документации master переименован в primary в соответствии с терминологией PostgreSQL.

Примечания к выпуску v1.23

Несколько резервных серверов и поддержка PostgreSQL 10

Выпущен 3 сентября 2017

Исправления ошибок:

  • Исправлена проблема, из-за которой сжатие растущих файлов могло прерываться. (Сообщили: Jesper St John, Aleksandr Rogozin.)
  • Исправлена отправка сообщений keep-alive из локального процесса удалённому. (Сообщили: William Cox.)

Новые возможности:

  • Для резервного копирования с резервного сервера можно настроить до семи резервных серверов. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Поддержка PostgreSQL 10.
  • При чтении данных XML разрешён content-length наряду с передачей по частям для улучшения совместимости со сторонними шлюзами S3. (Предложили: Victor Gdalevich.)

Улучшения:

  • Увеличен тайм-аут HTTP для S3.
  • Добавлены повторные попытки HTTP для устойчивости к временным сетевым ошибкам S3.

Исправления ошибок в документации:

  • Исправлена генерация документации: на странице конфигурации теперь включаются краткие описания разделов. (Исправление: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v1.22

Исправление повторных попыток S3

Выпущен 9 августа 2017

Исправления ошибок:

  • Исправлена проблема аутентификации при повторной попытке S3.

Примечания к выпуску v1.21

Улучшенный вывод info и параметр порта SSH

Выпущен 8 августа 2017

Исправления ошибок:

  • Каталог archive_status теперь воссоздаётся при восстановлении для поддержки PostgreSQL 8.3, который не делает этого автоматически, в отличие от более новых версий. (Сообщили: Stephen Frost.)
  • Исправлена проблема, из-за которой после stanza-upgrade мог оставаться пустой каталог архива старой версии PostgreSQL. (Исправление: Cynthia Shang. Рецензирование: David Steele.)

Новые возможности:

  • Команда info изменена: в текстовом выводе и JSON отображаются идентификатор архива и минимальный/максимальный WAL, находящиеся в архиве для текущей и предыдущей, если она есть, версии кластера базы данных. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлены параметры --backup-ssh-port и --db-ssh-port для поддержки нестандартных портов SSH. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения:

  • При внутренней ошибке S3 (500) выполняется повторная попытка.

Исправления ошибок в документации:

  • Описание --online исправлено с учётом контекста команды.

Дополнения к документации:

  • В инструкции по ручной установке добавлено создание /etc/pgbackrest.conf.

Улучшения документации:

  • Параметры репозитория перенесены в отдельный раздел справки по командам и командной строке. (Предложили: Stephen Frost.)

Примечания к выпуску v1.20

Исправление критической ошибки 8.3/8.4

Выпущен 27 июня 2017

ВАЖНОЕ ПРИМЕЧАНИЕ: Для установок PostgreSQL 8.3 и 8.4, использующих табличные пространства, следует немедленно обновиться с любого выпуска v1 и выполнить полное резервное копирование. Ошибка препятствовала резервному копированию табличных пространств только в этих версиях. PostgreSQL ≥ 9.0 не затронуты этой ошибкой.

Исправления ошибок:

  • Исправлена проблема, препятствовавшая резервному копированию табличных пространств в PostgreSQL ≤ 8.4.
  • Исправлено отсутствие флага при сборке библиотеки C, приводившее к несовместимому двоичному файлу на 32-битных системах. (Сообщили: Adrian Vondendriesch.)

Новые возможности:

  • Добавлены параметры s3-repo-ca-path и s3-repo-ca-file для систем, где IO::Socket::SSL не находит центры сертификации автоматически, например RHEL7, или для загрузки собственных центров сертификации. (Предложили: Scott Frazer.)

Новые возможности набора тестов:

  • В CI добавлена сборка документации.

Примечания к выпуску v1.19

Поддержка S3

Выпущен 12 июня 2017

Исправления ошибок:

  • Команда info исправлена: минимальный и максимальный WAL архива отображаются для текущей версии базы данных. (Исправление: Cynthia Shang. Рецензирование: David Steele.)
  • Команда backup исправлена: если резервный сервер не настроен и/или недоступен, параметр backup-standby сбрасывается, а копирование продолжается с первичного сервера. (Исправление: Cynthia Shang. Рецензирование: David Steele.)
  • Исправлены предупреждения конфигурации удалённого процесса, вызывавшие ошибки в основном процессе. (Исправление: Cynthia Shang. Рецензирование: David Steele.)

Новые возможности:

  • Поддержка репозитория Amazon S3. (Рецензирование: Cynthia Shang.)

Исправления ошибок в документации:

  • Неверный параметр max-archive-mb в справочнике конфигурации заменён на archive-queue-max.
  • Добавлен отсутствовавший sudo в разделе установки. (Исправление: Lætitia. Рецензирование: David Steele.)

Примечания к выпуску v1.18

Обновление stanza, рефакторинг и улучшения блокировок

Выпущен 12 апреля 2017

Исправления ошибок:

  • Исправлена проблема, при которой операции только для чтения с локальными рабочими процессами, например restore, создавали блокировки записи, способные мешать параллельной archive-push. (Сообщили: Jens Wilke.)

Новые возможности:

  • Добавлена команда stanza-upgrade для обновления stanza после перехода на новую основную версию PostgreSQL. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлена проверка pgbackrest.conf, выдающая предупреждения о недопустимых параметрах или их размещении в неверной секции. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения:

  • Упрощена схема блокировок. Теперь блокировки записи для команд archive-push и backup удерживает только основной процесс, а не все локальные и удалённые рабочие процессы, как раньше.
  • Временные метки файлов в каталогах резервных копий больше не приводятся к значениям в каталоге кластера. Первоначально это требовалось для возобновления резервного копирования, но теперь возобновление реализовано с помощью контрольных сумм.
  • Улучшено сообщение об ошибке, когда команда restore обнаруживает postmaster.pid. (Предложили: Yogesh Sharma.)
  • Коды возврата перенумерованы в диапазоне от 25 до 125, чтобы PostgreSQL не интерпретировал некоторые из них как исключения фатальных сигналов. (Предложили: Yogesh Sharma.)

Примечания к выпуску v1.17

Исправление ошибки контрольных сумм страниц

Выпущен 13 марта 2017

Исправления ошибок:

  • Исправлена проблема, при которой недавно инициализированные, но не использованные страницы вызывали предупреждения о контрольных суммах страниц. (Сообщили: Stephen Frost.)

Примечания к выпуску v1.16

Улучшения контрольных сумм страниц, CI и тестирование пакетов

Выпущен 2 марта 2017

Исправления ошибок:

  • Исправлены предупреждения о контрольных суммах страниц после первого сегмента для таблиц размером более 1GB. (Сообщили: Stephen Frost.)
  • Исправлены ложные предупреждения о невыровненных по страницам файлах pg_filenode.map и pg_internal.init для баз данных, созданных с табличным пространством, отличным от выбранного по умолчанию. (Сообщили: blogh.)

Новые возможности набора тестов:

  • Непрерывная интеграция с помощью travis-ci.
  • Автоматизированная сборка пакетов Debian для всех поддерживаемых дистрибутивов.

Примечания к выпуску v1.15

Рефакторинг и исправления ошибок

Выпущен 13 февраля 2017

Исправления ошибок:

  • Исправлена регрессия, появившаяся в v1.13, которая могла вызывать сбой резервного копирования при удалении файлов, например таблиц, во время построения манифеста. (Сообщили: Navid Golpayegani.)

Примечания к выпуску v1.14

Рефакторинг и исправления ошибок

Выпущен 13 февраля 2017

Исправления ошибок:

  • Исправлена проблема, при которой после ошибки archive-push повторная попытка не выполнялась, а PostgreSQL бесконечно получал ошибки, пока файл .error не удаляли вручную. (Сообщили: Jens Wilke.)
  • Исправлено состояние гонки при параллельном архивировании, когда одновременные попытки нескольких процессов создать новые каталоги вызывали ошибку. (Сообщили: Jens Wilke.)

Улучшения:

  • Улучшена производительность получения wal archive min/max командой info. (Предложили: Jens Wilke.)

Дополнения к документации:

  • Документация асинхронного архивирования обновлена для более точного описания работы нового метода и его отличий от старого. (Предложили: Jens Wilke.)

Примечания к выпуску v1.13

Параллельное архивирование, создание stanza, улучшенные info и check

Выпущен 5 февраля 2017

ВАЖНОЕ ПРИМЕЧАНИЕ: Новая реализация асинхронного архивирования больше не копирует WAL в отдельную очередь. WAL, оставшийся в старой очереди после обновления до 1.13, останется необработанным и не будет отправлен в репозиторий. Чтобы этого избежать, остановите архивирование, задав archive_command = false. Затем опустошите асинхронную очередь, выполнив pgbackrest --stanza=[stanza-name] archive-push, и дождитесь завершения процесса. Проверьте, что очередь в [spool-path]/archive/[stanza-name]/out пуста. Наконец, установите 1.13 и восстановите исходное значение archive_command. ВАЖНОЕ ПРИМЕЧАНИЕ: Команда stanza-create больше не является необязательной: её необходимо выполнить, прежде чем резервное копирование или архивирование станет возможным для новой stanza. Для уже существующих stanza выполнять stanza-create не требуется.

Исправления ошибок:

  • Исправлено присваивание const, вызывавшее предупреждение компилятора в библиотеке C. (Исправление: Adrian Vondendriesch. Рецензирование: David Steele.)
  • Исправлены несколько пропущенных синхронизаций каталогов для параметра --repo-sync.
  • Исправлена проблема, при которой отсутствие пользователя или группы при восстановлении могло вызывать ошибку “uninitialized value” в File->owner(). (Сообщили: Leonardo GG Avellar.)
  • Исправлено отсутствие ожидаемого значения в ошибках несовпадения протокола.
  • Исправлено необоснованное сообщение журнала archive-get, указывавшее, что код выхода 1 означает аварийное завершение.

Новые возможности:

  • Улучшена многопроцессная реализация асинхронного архивирования.
  • Команда stanza-create улучшена: теперь она восстанавливает повреждённые репозитории в большинстве случаев и достаточно надёжна, чтобы стать обязательной. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Команда check улучшена для запуска на резервном сервере, хотя выполняются только основные проверки, поскольку pg_switch_xlog() нельзя вызвать на реплике. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • В команду info добавлены диапазоны WAL архива и резервных копий.
  • Добавлено предупреждение о необходимости обновить pg_tablespace.spclocation при переназначении табличных пространств в PostgreSQL < 9.2. (Авторы: blogh. Рецензирование: David Steele.)
  • Для команд archive-get, restore, info и check отменена необходимость удалённой блокировки, поскольку эти операции выполняют только чтение. (Предложили: Michael Vitale.)

Улучшения:

  • Заголовок файла журнала не выводится до записи первого сообщения. (Предложили: Jens Wilke.)
  • Снижена вероятность ложных ошибок контрольных сумм из-за частично записанных страниц путём фильтрации по LSN начала резервного копирования.
  • Из флагов сборки библиотеки C удалена оптимизация, специфичная для Intel. (Авторы: Adrian Vondendriesch. Рецензирование: David Steele.)
  • Удалён параметр --lock. Он появился до того, как каталог блокировок стало можно размещать вне репозитория, и теперь устарел.
  • Добавлен параметр --log-timestamp, позволяющий отключить временные метки в журнале. Прежде всего он используется, чтобы обходиться без фильтров при автоматическом создании документации.
  • При невозможности преобразовать относительный путь в абсолютный возвращается корректный код ошибки. (Предложили: Yogesh Sharma.)

Дополнения к документации:

  • В руководство пользователя добавлена документация параметра process-max. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v1.12

Контрольные суммы страниц, конфигурация и исправления ошибок

Выпущен 12 декабря 2016

ВАЖНОЕ ПРИМЕЧАНИЕ: В предыдущих выпусках можно было без ошибки задать в командной строке параметры, недопустимые для текущей команды. Теперь недопустимые параметры вызывают ошибку, поэтому во избежание нарушений работы необходимо внимательно проверить параметры командной строки в используемой среде.

Исправления ошибок:

  • Исправлена проблема, при которой недопустимые для указанной команды параметры можно было передать в командной строке без ошибки. Они игнорировались и не меняли поведение, но это вызывало путаницу. Теперь недопустимые параметры вызывают ошибку. (Сообщили: Nikhilchandra Kulkarni.)
  • Исправлено отсутствие внутренних символических ссылок для табличных пространств в репозитории. Проблема проявлялась только при попытке вручную запустить кластеры на месте с помощью снимков файловой системы и не затрагивала обычное резервное копирование и восстановление.
  • Исправлена невозможность вывода ошибок в консоль до инициализации системы журналирования, например при разборе параметров. Коды ошибок возвращались корректно, поэтому неуспешный процесс не мог выглядеть успешно завершённым. (Сообщили: Adrian Vondendriesch.)
  • Исправлена некорректная передача удалённому процессу параметра db-port, заданного на сервере резервного копирования, если он относился не к первой настроенной базе данных. (Сообщили: Michael Vitale.)

Новые возможности:

  • Добавлен параметр --checksum-page, позволяющий pgBackRest проверять контрольные суммы страниц в файлах данных, если контрольные суммы включены в PostgreSQL >= 9.3. Эта возможность требует библиотеки C, которая поначалу может отсутствовать в пакетах ОС. Параметр включается автоматически, когда библиотека присутствует и в кластере включены контрольные суммы. (Предложили: Stephen Frost.)
  • Добавлен параметр --repo-link, позволяющий отключить внутренние символические ссылки, если репозиторий находится в файловой системе без их поддержки. Это не влияет на возможности pgBackRest, однако вспомогательная ссылка latest и внутренние ссылки табличных пространств не создаются, что влияет на возможность ручного запуска кластеров на месте с помощью снимков файловой системы.
  • Добавлен параметр --repo-sync для отключения синхронизации каталогов репозитория в файловых системах, которые её не поддерживают, например NTFS.
  • Добавлена предсказуемая запись журнала, указывающая на успешное завершение команды. Например, успешное резервное копирование завершается сообщением: INFO: backup command end: completed successfully. (Предложили: Jens Wilke.)

Улучшения:

  • Для простоты файл pg_control теперь копируется вместе с остальными файлами, а не отдельно в конце процесса. Команде backup это поведение не требуется, а restore копирует его во временный файл, который переименовывается в конце восстановления.

Исправления ошибок в документации:

  • Исправлено подавление исключений при сборке PDF.
  • Исправлена регрессия ссылок на разделы, появившаяся в v1.10.

Дополнения к документации:

  • В раздел быстрого начала работы добавлены сведения о сроках хранения.

Примечания к выпуску v1.11

Исправление эффективности асинхронного архивирования

Выпущен 17 ноября 2016

Исправления ошибок:

  • Исправлена проблема, при которой асинхронное архивирование передавало по одному файлу за запуск вместо пакетной передачи. Эта регрессия появилась в v1.09 и влияла только на эффективность: все сегменты WAL корректно архивировались в асинхронном режиме. (Сообщили: Stephen Frost.)

Примечания к выпуску v1.10

Создание stanza и небольшие исправления ошибок

Выпущен 8 ноября 2016

Исправления ошибок:

  • Исправлена проблема, при которой резервное копирование могло завершаться ошибкой, если между копированиями база данных не изменялась и менялся только pg_control.
  • Исправлена ошибка недопустимой ссылки при одинаковом префиксе путей табличных пространств. (Сообщили: Nikhilchandra Kulkarni.)

Новые возможности:

  • Добавлена команда stanza-create, формализующая создание stanza в репозитории. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения:

  • Из модулей Perl удалены лишние директивы use lib. (Предложили: Devrim Gündüz.)

Примечания к выпуску v1.09

Поддержка 9.6, настраиваемость и исправления ошибок

Выпущен 10 октября 2016

Исправления ошибок:

  • Команда check исправлена: сообщение об ошибке не записывается в журнал, если каталог резервных копий не существует. (Исправление: Cynthia Shang. Рецензирование: David Steele.)
  • Сообщение об ошибке исправлено для корректного отображения команды архивирования при обнаружении недопустимой команды. (Сообщили: Jason O’Donnell.)
  • Исправлена проблема, при которой асинхронный архиватор не запускался, если команде archive-push не хватало места для постановки нового сегмента WAL в очередь. В результате очередь никогда не очищалась без ручного вмешательства, например прямого вызова archive-push. Теперь при нехватке места для новых сегментов WAL PostgreSQL получает ошибки, но асинхронный процесс всё равно запускается, чтобы место в конечном счёте освободилось. (Сообщили: Jens Wilke.)
  • Исправлен тайм-аут удалённого процесса, возникавший, когда локальный процесс вычислял контрольные суммы при возобновлении или восстановлении, но не копировал файлы, оставляя удалённый процесс без работы. (Сообщили: Jens Wilke.)

Новые возможности:

  • В PostgreSQL 9.6 автоматически используется неэксклюзивное резервное копирование.
  • Добавлен параметр cmd-ssh для указания клиента ssh. (Предложили: Jens Wilke.)
  • Добавлен параметр log-level-stderr, определяющий, отправляются ли консольные сообщения журнала в stderr или stdout. По умолчанию он равен warn; это меняет поведение по сравнению с предыдущими версиями, хотя и может быть более интуитивным. Значение log-level-stderr=off сохраняет прежнее поведение. (Предложили: Sascha Biberhofer.)
  • Для соединений с базой данных application_name задаётся равным "pgBackRest [command]". (Предложили: Jens Wilke.)
  • При включённом параметре archive-check проверяется, что archive_mode включён.

Улучшения:

  • Уточнено сообщение о невозможности получить рекомендательную блокировку pgBackRest, чтобы было ясно, что это не блокировка резервного копирования PostgreSQL. (Предложили: Jens Wilke.)
  • В сообщение журнала INFO о начале команды включён номер версии pgBackRest.
  • В сообщения журнала INFO о запуске и остановке локального процесса добавлен идентификатор процесса.

Дополнения к документации:

  • В руководство пользователя добавлена документация параметра archive-timeout. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v1.08

Исправления ошибок и улучшения журналирования

Выпущен 14 сентября 2016

Исправления ошибок:

  • Исправлена проблема, при которой локальные процессы не отключались после завершения и позднее могли завершиться по тайм-ауту. (Сообщили: Todd Vernick.)
  • Исправлен возможный тайм-аут уровня протокола при ожидании появления сегментов WAL в архиве. (Сообщили: Todd Vernick.)

Улучшения:

  • Вывод в файл журнала кэшируется до его создания, чтобы журнал был полнее.

Примечания к выпуску v1.07

Переход от потоков к процессам и исправления ошибок

Выпущен 7 сентября 2016

Исправления ошибок:

  • Исправлено копирование табличных пространств с первичного сервера при резервном копировании с резервного сервера.
  • Команда check исправлена: сведения о резервных копиях проверяются удалённо, а не только локально. (Исправление: Cynthia Shang. Рецензирование: David Steele.)
  • Исправлена проблема, при которой retention-archive не задавался автоматически при retention-archive-type=diff, из-за чего архив удалялся менее агрессивно, чем предполагалось. (Исправление: Cynthia Shang. Рецензирование: David Steele.)

Новые возможности:

  • Потоки Perl заменены процессами для улучшения совместимости и производительности.
  • Исключено содержимое каталога $PGDATA/pg_replslot, чтобы слоты репликации первичного сервера не попадали в резервную копию.
  • Значения archive-start и archive-stop теперь заполняются в backup.manifest даже при archive-check=n. (Предложили: Jens Wilke.)
  • Добавлены предупреждения, если настройки хранения архива могут не дать предполагаемого результата или допускают бессрочное хранение. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Экспериментальная поддержка неэксклюзивного резервного копирования в PostgreSQL 9.6 rc1. Изменения версий control/catalog/WAL в последующих кандидатах на выпуск могут нарушить совместимость, но pgBackRest будет обновляться с каждым выпуском для её сохранения.

Исправления ошибок в документации:

  • Исправлены небольшие проблемы воспроизводимости документации, связанные с путями к исполняемым файлам.

Дополнения к документации:

  • Документация по срокам хранения архива. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v1.06

Резервное копирование с резервного сервера и исправления ошибок

Выпущен 25 августа 2016

Исправления ошибок:

  • Исправлена проблема, при которой ссылка табличного пространства, указывающая на другую ссылку, не вызывала ошибку, а приводила к полному пропуску табличного пространства. (Сообщили: Michael Vitale.)
  • Исправлена проблема, при которой параметры, не допускающие нескольких значений, можно было без ошибки задавать в pgbackrest.conf несколько раз. (Сообщили: Michael Vitale.)
  • Исправлено отсутствие автоматического увеличения protocol-timeout при увеличении db-timeout. (Сообщили: Todd Vernick.)

Новые возможности:

  • Резервное копирование с резервного кластера. Соединение с первичным кластером по-прежнему требуется для начала и завершения резервного копирования и копирования нереплицируемых файлов, однако подавляющее большинство файлов копируется с резервного сервера для снижения нагрузки на первичный.
  • Более гибкая конфигурация баз данных. На сервере резервного копирования можно настроить и первичный, и резервный серверы; pgBackRest автоматически определит, какой из них первичный. Поэтому при использовании отдельного сервера резервного копирования после переключения при отказе с первичного сервера на резервный изменять конфигурацию копирования не требуется.
  • При резервном копировании исключаются каталоги, которые PostgreSQL очищает, воссоздаёт или обнуляет при запуске, в том числе pgsql_tmp и pg_stat_tmp. Помимо уже исключавшихся файлов backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done, теперь исключается и postgresql.auto.conf.tmp.
  • Экспериментальная поддержка неэксклюзивного резервного копирования в PostgreSQL 9.6 beta4. Изменения версий control/catalog/WAL в последующих бета-версиях могут нарушить совместимость, но pgBackRest будет обновляться с каждым выпуском для её сохранения.

Улучшения:

  • Улучшено сообщение об ошибке для ссылок на другие ссылки при построении манифеста.
  • В сообщение об ошибке обнаружения относительных путей в archive-push или archive-get добавлены подсказки.
  • Сообщения журнала резервного копирования улучшены: они указывают сервер, с которого копируются файлы.

Примечания к выпуску v1.05

Исправление проверки ссылок табличных пространств

Выпущен 9 августа 2016

Исправления ошибок:

  • Исправлена проблема, при которой пути табличных пространств, содержащие $PGDATA как подстроку, ошибочно считались подкаталогами $PGDATA. Также несколько усилена проверка относительных путей. (Сообщили: Chris Fort.)

Дополнения к документации:

  • Добавлена документация по планированию резервного копирования с помощью cron. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Улучшения документации:

  • Список запланированных задач перенесён с сайта pgBackRest в вики репозитория GitHub. (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v1.04

Различные исправления ошибок

Выпущен 30 июля 2016

Исправления ошибок:

  • Исправлено создание лишнего удалённого процесса, из-за которого многопоточное резервное копирование или восстановление могло завершаться по тайм-ауту и/или вызывать конфликт блокировок. (Сообщили: Michael Vitale.)
  • Исправлена необязательность db-path для команды check, из-за которой при его отсутствии срабатывало утверждение assert вместо понятного сообщения об ошибке. (Сообщили: Michael Vitale.)
  • Команда check исправлена для выдачи ошибки при несовпадении версии или идентификатора базы данных с архивом. (Исправление: Cynthia Shang. Рецензирование: David Steele.)
  • Исправлена проблема, при которой удалённый процесс мог пытаться запустить собственный удалённый процесс, если на сервере базы данных в pgbackrest.conf отсутствовал параметр backup-host. (Сообщили: Lardière Sébastien.)
  • Исправлено включение содержимого pg_xlog в резервную копию, если каталог был символической ссылкой. Это не вызывало проблем при восстановлении, но расходовало место.
  • Исправлен неверный вызов log() в функциях блокировок.

Новые возможности:

  • Экспериментальная поддержка неэксклюзивного резервного копирования в PostgreSQL 9.6 beta3. Изменения версий control/catalog/WAL в последующих бета-версиях могут нарушить совместимость, но pgBackRest будет обновляться с каждым выпуском для её сохранения.

Улучшения:

  • Подавлен вывод приветствий в соединениях протокола SSH.
  • Сообщения об удалённых ошибках улучшены и указывают сервер, на котором возникла ошибка.
  • Все типы удалённых процессов теперь получают блокировки. Исключения остались со времён, когда тестовая среда и pgBackRest работали в одной виртуальной машине, и больше не применимы.

Дополнения к документации:

  • Добавлено пояснение, почему значение по умолчанию параметра backrest-user — backrest. (Предложили: Michael Vitale.)
  • Обновлены сведения о доступности пакетов на поддерживаемых платформах. (Предложили: Michael Vitale.)

Примечания к выпуску v1.03

Команда check и исправления ошибок

Выпущен 2 июля 2016

Исправления ошибок:

  • Исправлена проблема, при которой обработка множества небольших файлов при многопоточном backup могла вытеснять отправку keep-alives. Они также полностью отсутствовали при возобновлении одно- и многопоточного backup и вычислении контрольных сумм в restore. (Сообщили: Janice Parkinson, Chris Barber.)
  • Исправлен отказ команды expire запускаться при явном вызове из командной строки, если задан параметр db-host. При автоматическом запуске expire после backup проблемы не было (Сообщили: Chris Barber.)
  • Исправлено выполнение проверки archive_command даже при отключённом параметре archive-check.

Новые возможности:

  • Добавлена команда check для проверки корректной настройки pgBackRest для архивирования и резервного копирования. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлен параметр protocol-timeout. Ранее protocol-timeout задавался как db-timeout + 30 секунд.
  • Невозможность завершить удалённые процессы в конце резервного копирования больше не вызывает исключение. Вместо этого выдаётся предупреждение с рекомендацией увеличить protocol-timeout.
  • Экспериментальная поддержка неэксклюзивного резервного копирования в PostgreSQL 9.6 beta2. Изменения версий control/catalog/WAL в последующих бета-версиях могут нарушить совместимость, но pgBackRest будет обновляться с каждым выпуском для её сохранения.

Улучшения:

  • Улучшена обработка пользователей и групп, записанных при резервном копировании, но отсутствующих на сервере восстановления. Также явно обработан случай, когда пользователь или группа не сопоставлены с именем.
  • Обработка параметров стала значительно строже. Ранее команда могла использовать параметр, не назначенный ей явно. Особенно это относилось к backup-host и db-host, определяющим место выполнения.

Улучшения документации:

  • Добавлена возможность использовать фиксированную дату в документации для воспроизводимых сборок. (Предложили: Adrian Vondendriesch.)
  • В руководство пользователя добавлена документация асинхронного архивирования. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Рекомендуемый каталог установки модулей pgBackRest теперь — /usr/share/perl5, поскольку в новых версиях Perl /usr/lib/perl5 удалён из пути поиска.
  • Добавлены инструкции по удалению предыдущих версий pgBackRest.

Примечания к выпуску v1.02

Исправление ошибки для Perl 5.22

Выпущен 2 июня 2016

Исправления ошибок:

  • Исправлено использование sprintf() в связи с новыми ограничениями Perl 5.22. Параметры, не указанные в строке формата, больше не допускаются. (Исправление: Adrian Vondendriesch. Рецензирование: David Steele.)

Исправления ошибок в документации:

  • Исправлен синтаксис, несовместимый с Perl 5.2X. (Исправление: Christoph Berg, Adrian Vondendriesch. Рецензирование: David Steele.)
  • Исправлены абсолютные пути, использовавшиеся для логотипа PDF. (Сообщили: Adrian Vondendriesch.)

Дополнения к документации:

  • Примечания к выпускам теперь разбиты на разделы, чётко отделяющие ошибки, новые возможности и рефакторинг. Добавлен раздел «Дополнительные примечания» для изменений документации и набора тестов, не затрагивающих основной код.
  • Добавлена генерация страниц man. (Авторы: Adrian Vondendriesch, David Steele.)
  • Журнал изменений оставался последней частью документации, представленной только в Markdown. Написан преобразователь, позволяющий выводить документ стандартными средствами рендеринга. Теперь журнал изменений размещается на сайте и переименован в «Выпуски». (Авторы: Cynthia Shang. Рецензирование: David Steele.)

Примечания к выпуску v1.01

Расширенный вывод info, выборочное восстановление и поддержка 9.6

Выпущен 17 мая 2016

Новые возможности:

  • Текстовый вывод команды info расширен: добавлены временные метки, размеры и список зависимостей для всех резервных копий. (Авторы: Cynthia Shang. Рецензирование: David Steele.)
  • Добавлено выборочное восстановление баз данных из резервной копии кластера. Оно может значительно экономить место и время, если восстанавливаются только отдельные базы данных. Невосстановленные базы данных недоступны, но их необходимо удалить вручную, чтобы они были исключены из общего системного каталога. (Рецензирование: Cynthia Shang, Greg Smith, Stephen Frost. Предложили: Stephen Frost.)
  • Экспериментальная поддержка неэксклюзивного резервного копирования в PostgreSQL 9.6 beta1. Изменения версий control/catalog/WAL в последующих бета-версиях могут нарушить совместимость, но pgBackRest будет обновляться с каждым выпуском для её сохранения. (Рецензирование: Cynthia Shang.)

Примечания к выпуску v1.00

Новый формат репозитория и схема конфигурации, поддержка ссылок

Выпущен 14 апреля 2016

ВАЖНОЕ ПРИМЕЧАНИЕ: Этот выпуск с обязательным одновременным переходом нарушает совместимость со старыми версиями pgBackRest. Изменены формат манифеста, структура на диске, схема конфигурации, имена исполняемых файлов и пути. Необходимо создать новый репозиторий для резервных копий этой версии pgBackRest и некоторое время сохранять старый репозиторий на случай восстановления. Для восстановления из прежнего репозитория потребуется прежняя версия pgBackRest, но благодаря изменению имён можно одновременно установить 1.00 и предыдущую версию pgBackRest. Подробности изменений приведены ниже.

Новые возможности:

  • Реализована новая схема конфигурации, которая должна быть значительно проще в использовании. Подробности приведены в руководстве пользователя и справочнике конфигурации; в простой конфигурации все параметры теперь можно разместить в секции stanza. Общие для нескольких stanza параметры можно разместить в секции [global]. В более сложных конфигурациях по-прежнему можно использовать секции команд, хотя необходимость в этом должна возникать редко. (Предложили: Michael Renner.)
  • Параметр repo-path теперь всегда указывает на репозиторий с резервными копиями и архивом, локальный или удалённый, поэтому параметр repo-remote-path удалён. Новый параметр spool-path задаёт расположение очереди сегментов WAL при асинхронном архивировании. Локальный репозиторий больше не требуется.
  • Имя файла конфигурации по умолчанию изменено с pg_backrest.conf на pgbackrest.conf. Это обеспечивает согласованность с другими переименованиями и предотвращает случайную загрузку старой конфигурации при переходе на 1.00. (Предложили: Michael Renner, Stephen Frost.)
  • Каталог репозитория по умолчанию изменён с /var/lib/backup на /var/lib/pgbackrest. (Предложили: Michael Renner, Stephen Frost.)
  • Файлы блокировок теперь по умолчанию хранятся в /tmp/pgbackrest. В настоящее время предпочтителен /run/pgbackrest, но для него потребовались бы скрипты инициализации, не входящие в этот выпуск. Каталог блокировок можно настроить параметром lock-path.
  • Файлы журналов теперь по умолчанию хранятся в /var/log/pgbackrest, а дата больше не добавляется к имени, что позволяет управлять ими через logrotate. Каталог журналов можно настроить параметром log-path. (Предложили: Stephen Frost.)
  • Имя исполняемого файла изменено с pg_backrest на pgbackrest. (Предложили: Michael Renner, Stephen Frost.)
  • Все файлы и каталоги, на которые ведут ссылки из PGDATA, теперь включаются в резервную копию. По умолчанию ссылки восстанавливаются непосредственно в PGDATA как файлы или каталоги. Параметр --link-all позволяет восстановить все ссылки в исходные расположения. Параметр --link-map позволяет переназначить ссылку на новый путь.
  • Параметр --tablespace удалён и заменён на --tablespace-map-all, имя которого должно яснее отражать его назначение.
  • Добавлен уровень журнала detail, выводящий больше информации, чем info, но менее подробный, чем debug.

Выпуски до стабильной версии

Примечания к выпуску v0.92

Исправление пути репозитория в командной строке

Выпущен 6 апреля 2016

Исправления ошибок:

  • Исправлена проблема, при которой основной процесс передавал удалённому --repo-remote-path вместо --repo-path, из-за чего файлы блокировок создавались в каталоге репозитория по умолчанию (/var/lib/backup), обычно с последующим сбоем. Проблема возникала только при задании --repo-remote-path в командной строке, а не в pg_backrest.conf. (Сообщили: Jan Wieck.)

Примечания к выпуску v0.91

Исправление ошибки табличных пространств и небольшие улучшения

Выпущен 22 марта 2016

ВАЖНОЕ ИСПРАВЛЕНИЕ ДЛЯ ТАБЛИЧНЫХ ПРОСТРАНСТВ: В версии 0.90 случайно изменился формат репозитория, из-за чего резервная копия на диске перестала быть корректным кластером PostgreSQL, если содержала табличные пространства. Это затрагивало только тех, кто восстанавливал кластеры PostgreSQL прямым копированием резервных копий вместо команды restore. Однако исправление нарушает совместимость со старыми копиями, содержащими табличные пространства, независимо от способа восстановления: pgBackRest выдаст ошибки и откажется восстанавливать их. Сразу после установки версии 0.91 следует создать новые полные резервные копии всех кластеров с табличными пространствами. Для восстановления старых копий следует использовать версию pgBackRest, соответствующую версии копии.

Исправления ошибок:

  • Исправлена несовместимость репозитория, появившаяся в pgBackRest 0.90. (Сообщили: Evan Benoit.)

Новые возможности:

  • При резервном копировании global/pg_control копируется последним.
  • Файлы .info и .manifest сначала записываются во временное расположение, затем перемещаются в конечное и синхронизируются с помощью fsync.
  • Параметр --no-start-stop переименован в --no-online.

Новые возможности набора тестов:

  • Статический анализ исходного кода с помощью Perl-Critic; в настоящее время проверка проходит на уровне gentle.

Примечания к выпуску v0.90

Поддержка 9.5, различные улучшения и небольшие исправления ошибок

Выпущен 7 февраля 2016

Исправления ошибок:

  • Исправлена ошибка конфигурации при задании --no-archive-check. (Сообщили: Jason O’Donnell.)
  • Исправлен возможный сбой следующего archive-push из-за временного файла WAL, оставшегося после сбоя системы в определённый момент.
  • Параметр retention-archive теперь можно безопасно задать меньшим, чем срок хранения резервных копий (retention-full или retention-diff), без дополнительного archive-copy=n. WAL, необходимый для согласованности резервных копий вне срока хранения архива, будет сохранён в архиве. Однако для таких резервных копий PITR в этом случае невозможно.

Новые возможности:

  • При резервном копировании и восстановлении табличных пространств pgBackRest работает только с подкаталогом используемой версии PostgreSQL. Поскольку в табличном пространстве могут сосуществовать несколько версий, особенно при двоичном обновлении, это предотвращает копирование лишних файлов и возможное удаление других версий при восстановлении. Это относится только к PostgreSQL >= 9.0: более ранние версии PostgreSQL не могли совместно использовать каталог табличного пространства.
  • Если archive-check=y, но archive_command не выполняет pg_backrest, выдаётся ошибка. (Авторы: Jason O’Donnell. Рецензирование: David Steele.)
  • Улучшено сообщение об ошибке, когда repo-path или repo-remote-path не существует.
  • Добавлены проверки параметров восстановления --delta и --force, подтверждающие, что целевой каталог является корректным $PGDATA. pgBackRest проверяет наличие PG_VERSION или backup.manifest, оставшегося от прерванного восстановления. Если ни один файл не найден, --delta и --force отключаются, но восстановление продолжается, если каталог $PGDATA и каталоги табличных пространств пусты; при наличии в них файлов операция прерывается.
  • При восстановлении с --set=latest (значение по умолчанию) в журнал выводится фактически восстанавливаемая резервная копия.
  • Поддержка частичных сегментов WAL PostgreSQL 9.5 и параметра recovery_target_action. Значение archive_mode = 'always' пока не поддерживается.
  • Поддержка настройки восстановления recovery_target = 'immediate', появившейся в PostgreSQL 9.4.
  • Добавлены проверки табличных пространств: каталоги или файлы в pg_tblspc, относительные ссылки в pg_tblspc и табличные пространства в $PGDATA. Все три случая вызывают ошибки.

Примечания к выпуску v0.89

Исправление тайм-аута и восстановление из репозиториев только для чтения

Выпущен 24 декабря 2015

Исправления ошибок:

  • Исправлены тайм-ауты длительного удалённого многопоточного резервного копирования и восстановления. Теперь используются сообщения keepalive, чтобы удалённый процесс основного процесса не завершался по тайм-ауту, пока удалённые процессы потоков выполняют работу. Сообщение о тайм-ауте также улучшено для упрощения отладки. (Сообщили: Stephen Frost.)

Новые возможности:

  • Добавлено восстановление из репозитория только для чтения с помощью --no-lock и --log-level-file=off. Параметр --no-lock можно использовать только для восстановления.

Примечания к выпуску v0.88

Документация и небольшие исправления ошибок

Выпущен 22 ноября 2015

Исправления ошибок:

  • Исправлена обязательность параметра --config для команд start/stop. (Сообщили: Dmitry Didovicher.)
  • Исправлена перезапись файлов журналов вместо дополнения. (Сообщили: Stephen Frost, Dmitry Didovicher.)
  • Исправлена обязательность backup-user.

Новые возможности:

  • В каталогах резервных копий репозитория больше не создаются символические ссылки. Они могли указывать практически куда угодно и представлять опасность. При восстановлении символические ссылки по-прежнему воссоздаются. (Предложили: Stephen Frost.)
  • Улучшены сообщения об удалении резервных копий по сроку хранения. Удаление полных и дифференциальных копий записывается одной строкой вместе со списком всех удалённых зависимых копий.
  • Если срок хранения архива не задан явно, он автоматически устанавливается равным сроку хранения полных резервных копий.

Дополнения к документации:

  • В руководство пользователя добавлена документация по дельта-восстановлению, удалению по сроку хранения, выделенным серверам резервного копирования, запуску и остановке pgBackRest и репликации.

Примечания к выпуску v0.87

Сайт и руководство пользователя

Выпущен 28 октября 2015

Новые возможности:

  • Файлы backup_label.old и recovery.done теперь исключаются из резервных копий.

Дополнения к документации:

  • Добавлено новое руководство пользователя, охватывающее основы pgBackRest и некоторые сложные темы, включая PITR. Предстоит добавить ещё многое, но начало положено. (Авторы: David Steele, Stephen Frost. Рецензирование: Michael Renner, Cynthia Shang, Eric Radman, Dmitry Didovicher.)

Примечания к выпуску v0.85

Команды start/stop и небольшие исправления ошибок

Выпущен 8 октября 2015

Исправления ошибок:

  • Исправлен возможный возврат ошибки после успешного завершения резервного копирования или восстановления.
  • Исправлен сбой возобновления, если после неудачного копирования в корневом каталоге резервной копии оставались временные файлы. Такой сценарий был вероятен при прерывании процесса копирования на этапе переноса файлов.

Новые возможности:

  • Добавлены команды stop и start, предотвращающие запуск процессов pgBackRest в системе, где PostgreSQL остановлен или требуется приостановить работу по иной причине.
  • Экспериментальная поддержка PostgreSQL 9.5 beta1. Совместимость может нарушиться при изменении версии control или сигнатуры WAL в будущих версиях, но будет поддерживаться обновлениями каждого выпуска pgBackRest. Все регрессионные тесты проходят, кроме тестов --target-resume, поскольку эта возможность изменилась в 9.5; сегменты WAL .partial пока не тестируются.

Примечания к выпуску v0.82

Рефакторинг, справка командной строки и небольшие исправления ошибок

Выпущен 14 сентября 2015

Исправления ошибок:

  • Исправлена проблема, при которой возобновлённые сжатые резервные копии не сохраняли существующие файлы.
  • Исправлено отсутствие проверки совпадения настроек сжатия и жёстких ссылок с предыдущей копией при возобновлении и инкрементном или дифференциальном копировании.
  • Исправлена возможность начать холодное резервное копирование с --no-start-stop на работающем кластере PostgreSQL без --force.
  • Исправлена возможность запуска потока, даже когда ни одного потока не запрашивалось.
  • Исправлено отсутствие обновления номера версии pgBackRest в backup.info и archive.info после повышения или понижения версии.
  • Исправлено исключение команды info, когда репозиторий не содержал stanza. (Сообщили: Stephen Frost.)
  • Исправлен вывод уведомлений NOTICE PostgreSQL pg_stop_backup() в stderr. (Сообщили: Stephen Frost.)

Новые возможности:

  • Экспериментальная поддержка PostgreSQL 9.5 alpha2. Совместимость может нарушиться при изменении версии control или сигнатуры WAL в будущих версиях, но будет поддерживаться обновлениями каждого выпуска pgBackRest. Все регрессионные тесты проходят, кроме тестов --target-resume, поскольку эта возможность изменилась в 9.5; сегменты WAL .partial пока не тестируются.

Улучшения:

  • Параметр и секция recovery-setting переименованы в recovery-option для большей согласованности с правилами именования pgBackRest.
  • Добавлена динамическая загрузка модулей для ускорения команд, особенно асинхронного архивирования.

Дополнения к документации:

  • Справка командной строки теперь извлекается из того же исходного XML, что и остальная документация, и содержит гораздо больше подробностей.

Примечания к выпуску v0.80

Поддержка DBI, стабильность и удобство работы

Выпущен 9 августа 2015

Исправления ошибок:

  • Исправлена проблема, при которой команда info выводила текущее время вместо отформатированных временных меток самой старой и самой новой резервных копий. Затрагивался только вывод text; в json значения времени от начала эпохи были корректны. (Сообщили: Michael Renner.)
  • Исправлена проблема протокола, препятствовавшая записи ошибок ssh в журнал, особенно при подключении.

Новые возможности:

  • Репозиторий теперь создаётся и обновляется с единообразными правами доступа к каталогам и файлам. По умолчанию umask задаётся равным 0000, но это можно отключить настройкой neutral-umask. (Предложили: Cynthia Shang.)
  • Добавлен параметр stop-auto, позволяющий автоматически останавливать неудавшееся резервное копирование при начале нового.
  • Добавлен параметр db-timeout, ограничивающий время ожидания pgBackRest возврата из pg_start_backup() и pg_stop_backup().
  • Файл pg_control удаляется в начале восстановления и копируется обратно в самом конце. Это предотвращает запуск PostgreSQL на частично восстановленном кластере.
  • Добавлены проверки согласованности db-path с db-port: значение data_directory, сообщаемое кластером, сравнивается с db-path, а версия, сообщаемая кластером, — со значением из pg_control. Для db-socket-path проверяется, что путь абсолютный.
  • Экспериментальная поддержка PostgreSQL 9.5 alpha1. Совместимость может нарушиться при изменении версии control или сигнатуры WAL в будущих версиях, но будет поддерживаться обновлениями каждого выпуска pgBackRest. Все регрессионные тесты проходят, кроме тестов --target-resume, поскольку эта возможность изменилась в 9.5; сегменты WAL .partial пока не тестируются.

Улучшения:

  • Для соединений с PostgreSQL теперь используются Perl DBI и DBD::Pg вместо psql. Настройки cmd-psql и cmd-psql-option удалены и заменены на db-port и db-socket-path. Для установки DBD::Pg в используемой операционной системе следует выполнить инструкции руководства по установке.

Новые возможности набора тестов:

  • Добавлены тестовые конфигурации vagrant для Ubuntu 14.04 и CentOS 7.

Примечания к выпуску v0.78

Удаление зависимостей CPAN и улучшения стабильности

Выпущен 13 июля 2015

Улучшения:

  • Удалена зависимость от пакетов CPAN для многопоточной работы. Хотя обновить пакеты threads и Thread::Queue может быть полезно, это больше не обязательно.
  • Увеличение интервала ожидания переведено с геометрической прогрессии на последовательность Фибоначчи. Это замедляет рост времени ожидания, сохраняя разумные значения.

Новые возможности набора тестов:

  • Добавлены тестовые конфигурации vagrant для Ubuntu 12.04 и CentOS 6.

Примечания к выпуску v0.77

Поддержка CentOS/RHEL 6 и улучшения протокола

Выпущен 30 июня 2015

Новые возможности:

  • В объект File добавлена синхронизация файлов и каталогов для дополнительной надёжности резервного копирования, восстановления и архивирования. (Предложили: Andres Freund.)
  • Добавлена поддержка Perl 5.10.1 и OpenSSH 5.3, используемых по умолчанию в CentOS/RHEL 6. (Предложили: Eric Radman.)
  • Улучшено сообщение об ошибке при запуске резервного копирования без заданного archive_command и без --no-archive-check. (Предложили: Eric Radman.)

Примечания к выпуску v0.75

Новый формат репозитория, команда info и экспериментальная поддержка 9.5

Выпущен 14 июня 2015

ВАЖНОЕ ПРИМЕЧАНИЕ: Этот выпуск с обязательным одновременным переходом нарушает совместимость со старыми версиями pgBackRest. Изменены формат манифеста, структура на диске и имена исполняемых файлов. Необходимо создать новый репозиторий для резервных копий этой версии pgBackRest и некоторое время сохранять старый репозиторий на случай восстановления. Файл pg_backrest.conf не изменился, но все упоминания pg_backrest.pl в cron или других местах необходимо заменить на pg_backrest без расширения .pl.

Новые возможности:

  • Добавлена команда info.
  • Журналирование теперь использует небуферизованный вывод. Это должно уменьшить беспорядок в файлах журналов, в которые пишут несколько потоков. (Предложили: Michael Renner.)
  • Экспериментальная поддержка PostgreSQL 9.5. Она может нарушиться при изменении версии control или сигнатуры WAL, но будет обновляться с каждым выпуском.

Улучшения:

  • Более эффективный порядок файлов для backup. Они копируются по убыванию размера, чтобы в конце не оставался один поток с большим файлом. Для restore это уже было реализовано.

Примечания к выпуску v0.70

Повышение стабильности архивирования, улучшения журналирования и справки

Выпущен 1 июня 2015

Исправления ошибок:

  • Исправлен сбой archive-copy для инкрементной или дифференциальной резервной копии при hardlink=n. В этом случае каталог pg_xlog ещё не существует и должен быть создан. (Сообщили: Michael Renner.)
  • Исправлена проблема асинхронного архивирования, при которой archive-push некорректно возвращала не 0 при достижении archive-max-mb; асинхронная проверка перенесена после передачи, чтобы не удалять файл остановки дважды. Также добавлены модульные тесты для этого случая и улучшены сообщения об ошибках, поясняющие пользователю причину сбоя. (Сообщили: Michael Renner.)
  • Исправлена проблема блокировок, допускавшая несколько операций одного типа для одной stanza. По-видимому, целостность данных не страдала, но при архивировании возникали ложные ошибки, а при резервном копировании и восстановлении также могли возникнуть ошибки. (Сообщили: Michael Renner.)

Новые возможности:

  • Разрешено архивирование дублирующихся сегментов WAL при совпадении контрольной суммы. Это необходимо для некоторых сценариев восстановления.
  • В pg_backrest.conf разрешены комментарии и отключение строк с помощью символа #. Учитывается только # в первой позиции строки. (Предложили: Michael Renner.)
  • Улучшено журналирование перед pg_start_backup(), чтобы было ясно, когда резервное копирование ожидает контрольную точку. (Предложили: Michael Renner.)
  • Различные исправления поведения команд и журналирования. (Рецензирование: Michael Renner. Предложили: Michael Renner.)

Улучшения:

  • Модуль JSON заменён на JSON::PP, входящий в стандартную поставку Perl.

Исправления ошибок в документации:

  • Различные исправления справки. (Рецензирование: Michael Renner. Сообщили: Michael Renner.)

Примечания к выпуску v0.65

Улучшения возобновления и журналирования восстановления, компактное восстановление

Выпущен 11 мая 2015

Исправления ошибок:

  • Исправлена проблема, при которой абсолютный путь не записывался в recovery.conf при запуске восстановления с относительным путём.

Новые возможности:

  • Улучшена поддержка возобновления. Возобновляемые файлы проверяются на отсутствие изменений, а манифест сохраняется чаще, чтобы сохранять контрольные суммы по мере копирования. Добавлены модульные тесты для каждого случая возобновления.
  • Возобновление теперь необязательно. Для отключения используется настройка resume или --no-resume в командной строке.
  • При восстановлении выводится больше сообщений info. Ранее большинство сообщений имело уровень debug, поэтому в журнал попадало мало информации.
  • Добавлена настройка tablespace, позволяющая восстанавливать табличные пространства в каталог pg_tblspc. Получается компактное восстановление, удобное для разработки, предварительного тестирования и других задач. Сейчас нельзя создавать резервные копии таких восстановленных кластеров, поскольку pgBackRest ожидает в pg_tblspc только ссылки.

Примечания к выпуску v0.61

Исправление ошибки удалённого хранилища без сжатия

Выпущен 21 апреля 2015

Исправления ошибок:

  • Исправлена ошибка буферизации, которая могла возникать на больших, хорошо сжимаемых файлах при копировании в удалённое хранилище без сжатия. Ошибка обнаруживалась в коде распаковки и приводила к сбою резервного копирования, а не к повреждению, поэтому успешные копии предыдущих версий не должны быть затронуты.

Примечания к выпуску v0.60

Улучшение поддержки версий и работы с WAL

Выпущен 19 апреля 2015

Исправления ошибок:

  • Отправка дублирующегося WAL теперь вызывает ошибку. Ранее это работало только при отключённых контрольных суммах.

Новые возможности:

  • Системные идентификаторы баз данных используются для проверки того, что весь WAL в архиве относится к одной системе. Это должно предотвращать ошибки конфигурации, отправляющие WAL нескольких кластеров в один архив.

Новые возможности набора тестов:

  • Регрессионные тесты работают вплоть до PostgreSQL 8.3.

Примечания к выпуску v0.50

Восстановление и многое другое

Выпущен 25 марта 2015

Исправления ошибок:

  • Исправлены контрольные суммы: теперь они работают для обычных и возобновлённых резервных копий. Стало ясно, что контрольные суммы и дельта-копирование по ним следует функционально разделить, и это многое упростило. Для дельта-копирования по контрольным суммам создано обращение #28.
  • Исправлена возможность возобновления из прерванной резервной копии, у которой не совпадали тип или предшествующая резервная копия.

Новые возможности:

  • Добавлена возможность восстановления.
  • Все параметры теперь можно задавать в командной строке, поэтому pg_backrest.conf стал необязательным.
  • Сжатие и распаковка теперь выполняются без потоков, а контрольная сумма и размер вычисляются в потоке данных. Поэтому контрольные суммы файлов больше не являются необязательными.
  • Добавлен параметр --no-start-stop, позволяющий выполнять резервное копирование при остановленном Postgres. Если присутствует postmaster.pid, для запуска копирования требуется --force, хотя при работающем Postgres, вероятно, получится несогласованная копия. Параметр добавлен прежде всего для модульного тестирования, но может иметь и практические применения.
  • Добавлена контрольная сумма backup.manifest для обнаружения повреждения или изменения манифеста.
  • Ссылка latest всегда указывает на последнюю резервную копию. Она добавлена для удобства и упрощения восстановления.

Новые возможности набора тестов:

  • Более полные модульные тесты во всех областях.

Примечания к выпуску v0.30

Перестройка ядра и модульные тесты

Выпущен 5 октября 2014

Дополнения к документации:

  • Добавлена необходимая документация

Новые возможности набора тестов:

  • Достаточно полные модульные тесты всех основных операций. Работы здесь, конечно, ещё много, но с модульными тестами так бывает всегда.

Примечания к выпуску v0.19

Улучшенная обработка ошибок и сообщения о них

Выпущен 13 мая 2014

Исправления ошибок:

  • Найдена и устранена неприятная ошибка: file_copy() по умолчанию игнорировала ошибки. Также проблема в file_exists() приводила к отрицательному результату проверки, когда файл на самом деле существовал. Вместе они могли дать повреждённую резервную копию без сообщений об ошибках, хотя это крайне маловероятно.

Примечания к выпуску v0.18

Возврат некритической ошибки при отсутствии архива

Выпущен 13 апреля 2014

Исправления ошибок:

  • Команда archive-get теперь возвращает 1 при отсутствии файла архива, чтобы отличать это от критических ошибок: сбоя соединения ssh, ошибки копирования файла и т. п. Это сообщает PostgreSQL, что поток архива завершился нормально. Однако возможные пропуски в потоке архива при этом не учитываются. (Сообщили: Stephen Frost.)

Примечания к выпуску v0.17

Предупреждение при невозможности удалить каталоги архива

Выпущен 3 апреля 2014

Исправления ошибок:

  • Если каталог архива, который должен быть пустым, не удавалось удалить, backrest выдавал ошибку. Полноценное исправление ещё готовится, а пока ошибка заменена предупреждением, чтобы обработка могла продолжаться. Это влияло на резервное копирование: иногда последний файл архива не отправлялся, если первый файл находился в другом каталоге и обстоятельства складывались неудачно.

Примечания к выпуску v0.16

RequestTTY=yes для сеансов SSH

Выпущен 1 апреля 2014

Исправления ошибок:

  • В сеансы ssh добавлено RequestTTY=yes. Ожидается, что это предотвратит случайные зависания.

Примечания к выпуску v0.15

Добавлена archive-get

Выпущен 29 марта 2014

Новые возможности:

  • Добавлена возможность archive-get для помощи при восстановлении.
  • Добавлен параметр принудительной контрольной точки при начале резервного копирования: start-fast=y.

Примечания к выпуску v0.11

Небольшие исправления

Выпущен 26 марта 2014

Исправления ошибок:

  • Из соединений SSH с базой данных удалён параметр master_stderr_discard. Наблюдались редкие зависания, которые могли быть связаны с проблемами, ранее замеченными в коде работы с файлами. (Сообщили: Stephen Frost.)
  • Конфликты файлов блокировок команд backup и expire переведены на уровень ERROR. Из-за копирования кода блокировок архива они имели уровень DEBUG.

Примечания к выпуску v0.10

Резервное копирование и архивирование работают

Выпущен 5 марта 2014

Новые возможности:

  • Восстановление пока не реализовано, но каталоги резервных копий являются согласованными каталогами данных PostgreSQL. Необходимо либо распаковать файлы, либо отключить сжатие при копировании. Несжатые копии в ZFS или аналогичной файловой системе — хороший вариант, поскольку их можно локально восстановить через снимок для создания логических копий или выборочного восстановления данных.
  • Архивирование однопоточное. Для наших многотерабайтных баз данных с интенсивной записью это не создавало проблем. Рекомендуется большой том для WAL либо асинхронный режим с большим томом рядом.
  • Резервное копирование многопоточное, но библиотека Net::OpenSSH, по-видимому, не на 100% потокобезопасна, поэтому изредка один из потоков зависает. Общий тайм-аут процесса решает проблему его принудительным завершением. Да, решение весьма неудачное.
  • При любом возобновлении резервного копирования контрольные суммы теряются. При нескольких возобновлениях их запишет только последняя резервная копия. Контрольные суммы предыдущих копий записываются корректно, а полное резервное копирование всё сбрасывает.
  • backup.manifest записывается в формате Storable, поскольку Config::IniFile, по-видимому, плохо работает с большими файлами. Хотелось бы сохранять манифесты как читаемый человеком текст.

Дополнения к документации:

  • Документации вне кода нет совсем. Если не считать этих примечаний к выпускам.