Это многостраничная версия текущего раздела для печати. .
Документация pgBackRest 2.59.3
- 1: Новости
- 2: Руководство пользователя (Debian/Ubuntu)
- 3: Руководство пользователя (RHEL)
-
4: Справочник команд
- 4.1: Команда аннотирования (annotate)
- 4.2: Команда получения из архива (archive-get)
- 4.3: Команда отправки в архив (archive-push)
- 4.4: Команда резервного копирования (backup)
- 4.5: Команда проверки конфигурации (check)
- 4.6: Команда удаления устаревших копий (expire)
- 4.7: Команда справки (help)
- 4.8: Команда вывода сведений (info)
- 4.9: Команда чтения из репозитория (repo-get)
- 4.10: Команда просмотра репозитория (repo-ls)
- 4.11: Команда восстановления (restore)
- 4.12: Команда сервера (server)
- 4.13: Команда проверки доступности сервера (server-ping)
- 4.14: Команда создания stanza (stanza-create)
- 4.15: Команда удаления stanza (stanza-delete)
- 4.16: Команда обновления stanza (stanza-upgrade)
- 4.17: Команда разрешения запуска (start)
- 4.18: Команда остановки (stop)
- 4.19: Команда проверки данных (verify)
- 4.20: Команда версии (version)
- 5: Справочник по конфигурации
- 6: Примечания к выпускам
- 7: Часто задаваемые вопросы
- 8: Метрики проекта
Введение
pgBackRest — надёжное решение для резервного копирования и восстановления PostgreSQL, которое легко масштабируется даже для крупнейших баз данных и самых высоких нагрузок.
Это зеркало документации описывает pgBackRest v2.59.3 . Примечания к выпускам доступны на странице Выпуски .
В версии 2.59.3 исправлена возможная генерация слабых подключей шифрования и солей. Обновление не заменяет существующие слабые подключи stanza; способы проверки и устранения проблемы см. в разделе Слабые подключи шифрования и соли .
Поставьте нам звезду на GitHub , если вам нравится pgBackRest!
Новости
4 октября 2026 - Слабые подключи шифрования и соли
4 октября 2026 — Выпущен pgBackRest 2.59.3
27 сентября 2026 года — Выпущен pgBackRest 2.59.2
Спонсоры
pgBackRest не существовал бы без спонсорства. Написание новых функций, исправление ошибок, проверка предлагаемых сообществом изменений, ответы на вопросы от пользователей и сопровождение проекта требуют значительных временных затрат. Если pgBackRest используется в вашей организации, рассмотрите возможность спонсорской поддержки .
Наши спонсоры: AWS , Supabase , pgEdge , Tiger Data , Percona , Eon , Xata , Dalibo и Data Egret .
Мы благодарны нашим спонсорам за инвестиции в инфраструктуру с открытым исходным кодом, которая приносит пользу всему сообществу PostgreSQL.
Бывшие спонсоры: Crunchy Data , Resonate .
Функции
Параллельное резервное копирование и восстановление
Сжатие обычно является узким местом при выполнении операций резервного копирования, поэтому pgBackRest решает эту проблему за счёт параллельной обработки и более эффективных алгоритмов сжатия, таких как lz4 и zstd.
Локальная или удалённая работа
Собственный протокол позволяет pgBackRest создавать резервные копии, восстанавливать данные и архивировать локально или удалённо через TLS/SSH с минимальной конфигурацией. Протокол также предоставляет интерфейс для запросов к PostgreSQL, поэтому прямое удалённое подключение к PostgreSQL не требуется, что повышает безопасность.
Несколько репозиториев
Несколько репозиториев позволяют, например, использовать локальный репозиторий с минимальным сроком хранения для быстрого восстановления и удалённый репозиторий с более длительным сроком хранения для обеспечения избыточности и доступа на уровне предприятия.
Полные, дифференциальные и инкрементные резервные копии (на уровне файлов или блоков)
Поддерживаются полные, дифференциальные и инкрементные резервные копии. pgBackRest не подвержен проблемам, связанным с точностью временных меток в rsync, что делает дифференциальные и инкрементные резервные копии безопасными без необходимости проверки контрольной суммы каждого файла. Резервные копии на уровне блоков экономят место, копируя только те части файлов, которые изменились.
Ротация резервных копий и удаление устаревших архивов
Политики хранения можно настроить для полных и дифференциальных резервных копий, чтобы обеспечить покрытие для любого временного интервала. Архив WAL может храниться для всех резервных копий или строго для последних резервных копий. В последнем случае в архиве будут храниться WAL, необходимые для обеспечения согласованности более старых резервных копий.
Целостность резервной копии
Контрольные суммы вычисляются для каждого файла резервной копии и повторно проверяются при восстановлении или проверке копии. После завершения копирования файлов процесс резервного копирования ожидает поступления в репозиторий всех сегментов WAL, необходимых для обеспечения согласованности копии.
Резервные копии в репозитории могут храниться в том же формате, что и стандартный кластер PostgreSQL (включая табличные пространства). Если отключено сжатие и включены жёсткие ссылки, возможно сделать снимок резервной копии в репозитории и запустить кластер PostgreSQL непосредственно на этом снимке. Это удобно для баз данных терабайтного масштаба, восстановление которых традиционным способом занимает много времени.
Все операции используют fsync для файлов и каталогов, чтобы гарантировать сохранность данных.
Проверка контрольных сумм страниц
Если включены контрольные суммы страниц, pgBackRest будет проверять контрольные суммы каждого файла, копируемого при резервном копировании. При полном резервном копировании проверяются контрольные суммы всех страниц, а при дифференциальном и инкрементном — страниц в изменившихся файлах.
Сбои проверки не останавливают процесс резервного копирования, но предупреждения с подробностями о том, какие именно страницы не прошли проверку, выводятся в консоль и файл журнала.
Эта функция позволяет обнаруживать повреждения на уровне страниц на ранней стадии, до истечения срока хранения резервных копий с неповреждёнными данными.
Возобновление резервного копирования
Прерванное резервное копирование можно возобновить с того места, где оно было остановлено. Контрольные суммы уже скопированных файлов сравниваются со значениями в манифесте для обеспечения целостности. Поскольку эта операция может выполняться полностью на сервере репозитория, это снижает нагрузку на сервер PostgreSQL и экономит время, поскольку вычисление контрольных сумм быстрее, чем сжатие и повторная передача данных.
Потоковое сжатие и контрольные суммы
Сжатие и вычисление контрольных сумм выполняются потоково во время копирования файлов в репозиторий, независимо от того, расположен ли репозиторий локально или удалённо.
Если репозиторий находится на сервере репозитория, сжатие выполняется на сервере PostgreSQL, а файлы передаются в сжатом виде и просто сохраняются на сервере репозитория. При отключении сжатия используется более низкий уровень сжатия для эффективного использования доступной пропускной способности при минимальных затратах на CPU.
Дельта-восстановление
Манифест содержит контрольные суммы для каждого файла в резервной копии, что позволяет при восстановлении использовать эти контрольные суммы для значительного ускорения обработки. При дельта-восстановлении сначала удаляются все файлы, отсутствующие в резервной копии, а затем генерируются контрольные суммы для оставшихся файлов. Файлы, совпадающие с резервной копией, остаются на месте, а остальные файлы восстанавливаются обычным образом. Параллельная обработка может привести к значительному сокращению времени восстановления.
Параллельная асинхронная передача и получение WAL
Для отправки WAL в архив и получения WAL из архива предусмотрены специализированные команды. Обе команды поддерживают параллелизм для ускорения обработки и асинхронное выполнение для обеспечения максимально быстрого времени отклика для PostgreSQL.
При отправке WAL автоматически обнаруживаются повторно передаваемые сегменты: если сегменты идентичны, дубликаты устраняются; в противном случае выдаётся ошибка. Асинхронная отправка WAL позволяет передать эту работу отдельному процессу, который параллельно сжимает сегменты WAL для достижения максимальной пропускной способности. Это может быть критически важной функцией для баз данных с чрезвычайно высоким объёмом записей.
Асинхронное получение WAL поддерживает локальную очередь сегментов WAL, которые уже распакованы и готовы к воспроизведению. Это сокращает время, необходимое для предоставления WAL PostgreSQL, что максимизирует скорость воспроизведения. Наибольшую выгоду от этого получают соединения и хранилища с высокой задержкой (например, S3).
Команды отправки и получения проверяют соответствие базы данных и репозитория, сравнивая версии PostgreSQL и системные идентификаторы. Это практически исключает возможность неправильной настройки расположения архива WAL.
Поддержка табличных пространств и ссылок
Табличные пространства полностью поддерживаются; при восстановлении их можно переназначить в любое расположение. Также можно одной командой переназначить все табличные пространства в одно расположение, что полезно при восстановлении в среде разработки.
Ссылки поддерживаются для любых файлов и каталогов в кластере PostgreSQL. При восстановлении возможно восстановить все ссылки в их исходные расположения, перенаправить некоторые или все ссылки, либо восстановить некоторые или все ссылки как обычные файлы или каталоги внутри каталога кластера.
Поддержка объектных хранилищ S3, Azure и GCS
Репозитории pgBackRest могут находиться в объектных хранилищах, совместимых с S3, Azure и GCS для обеспечения практически неограниченной ёмкости и срока хранения.
Шифрование
pgBackRest может шифровать репозиторий для обеспечения безопасности резервных копий независимо от места их хранения.
Защита от программ-вымогателей и вредоносного ПО
Когда репозиторий хранится в хранилище объектов с версионированием, pgBackRest может читать репозиторий в состоянии на определённый момент времени. Если резервные копии удалены или повреждены случайно, вредоносным ПО или программами-вымогателями, можно использовать целевое время для восстановления данных, существовавших до повреждения.
Версионирование поддерживается хранилищами, совместимыми с S3, Azure и GCS. Блокировка объектов в S3 и обратимое удаление в GCS или Azure могут обеспечить дополнительную защиту от несанкционированных изменений.
Совместимость с десятью версиями PostgreSQL
pgBackRest предоставляет поддержку десяти версий PostgreSQL: пяти поддерживаемых версий и последних пяти версий, поддержка которых завершена. Это обеспечивает достаточное время для обновления до поддерживаемой версии.
Начало работы
pgBackRest стремится быть простым в настройке и эксплуатации:
- Руководства по использованию для различных операционных систем и версий PostgreSQL.
- Справочные страницы команд для работы в командной строке: резервное копирование , восстановление , проверка и информация .
- Справочник по конфигурации для создания конфигураций pgBackRest.
Участие в разработке
Участие в разработке pgBackRest всегда приветствуется! Порядок добавления функций, внесения улучшений и сообщения о проблемах описан в руководстве для участников .
Поддержка
pgBackRest полностью бесплатен и является программным обеспечением с открытым исходным кодом под лицензией MIT . Его можно использовать в личных или коммерческих целях без каких-либо ограничений. К сообщениям об ошибках относятся очень серьёзно; ошибки исправляются как можно быстрее. Пожалуйста, сообщайте об ошибках здесь .
Разработка надёжной политики аварийного восстановления с подходящими стратегиями репликации и резервного копирования может оказаться чрезвычайно сложной задачей. На этапе проектирования архитектуры может потребоваться помощь, а для бесперебойной работы корпоративной системы — постоянная поддержка.
Наши спонсоры предлагают продукты и услуги с поддержкой pgBackRest и могут помочь обеспечить аварийное восстановление.
1 - Новости
Слабые подключи шифрования и соли
4 октября 2026
Версии pgBackRest до 2.59.3 не проверяли наличие ошибки при генерации случайных данных для шифрования. Если OpenSSL не удавалось получить случайные данные от операционной системы, подключи шифрования и соли генерировались из данных, уже находившихся в памяти, а ошибка не сообщалась. Репозитории без шифрования не затронуты.
Такая ошибка должна возникать редко. Возможные причины — песочница или политика seccomp, блокирующая системный вызов getrandom(), а также некорректная конфигурация OpenSSL.
Основную опасность представляют подключи в archive.info и backup.info. Они создаются однократно командой stanza-create и используются на протяжении всего срока существования stanza, поэтому обновление не заменяет слабый подключ. Слабые подключи резервных копий и соли удаляются по мере истечения срока хранения резервных копий и WAL.
Последствия
Подключ WAL хранится в archive.info, а подключ манифестов — в backup.info. Слабый подключ легче угадать, чем случайный; угаданный подключ позволяет расшифровать зашифрованные им файлы без repo-cipher-pass. Насколько это легче, зависит от содержимого памяти, которое различается в зависимости от платформы и сборки. Слабый подключ в archive.info ставит под угрозу все WAL в репозитории. Слабый подключ в backup.info ставит под угрозу все резервные копии, поскольку манифесты зашифрованы этим подключом, а каждый манифест хранит подключ для файлов соответствующей резервной копии. Это относится и к WAL и резервным копиям, добавленным после обновления.
Подключ для файлов резервной копии генерируется для каждой полной резервной копии и также используется дифференциальными и инкрементальными копиями на её основе. Слабый подключ резервной копии ставит под угрозу файлы во всех этих копиях.
Слабая соль не раскрывает подключ. Файлы, зашифрованные с одинаковыми подключом и солью, используют одинаковые ключ и IV, поэтому одинаковые данные в этих файлах дают одинаковые зашифрованные данные. Соль хранится в незашифрованном виде в начале каждого файла; слабая соль может содержать до 8 байт данных, ранее находившихся в памяти.
Проверка подключей
Выполните следующие команды на узле с доступом к репозиторию, указав имя stanza в STANZA. Чтобы проверить репозиторий, отличный от первого, добавьте --repo к командам pgbackrest.
Первый столбец — число нулевых байтов в подключе. Случайный подключ содержит 6 или более нулевых байтов реже чем в одном случае из 25 000 000, тогда как слабые подключи, обнаруженные при тестировании, содержали 13 или более. Подключ с 6 или более нулевыми байтами следует считать слабым.
OpenSSL 1.0
Версии pgBackRest до 2.53 можно было собирать с OpenSSL 1.0. Если ему не удаётся получить случайные данные от операционной системы, он генерирует случайные данные из состояния, которое не было инициализировано случайными данными. Созданные таким образом слабые подключи нельзя обнаружить описанной выше проверкой.
Устранение проблемы
- Обновитесь до pgBackRest 2.59.3 или более новой версии: они сообщают об ошибке, если не удаётся сгенерировать случайные данные.
- Если подключ в
archive.infoилиbackup.infoслабый, создайте stanza в новом репозитории и сохраняйте старый репозиторий лишь до тех пор, пока нужны его резервные копии. - Рассмотрите возможность создания новой полной резервной копии после обновления, поскольку дифференциальные и инкрементальные копии используют подключ своей полной резервной копии.
- Слабые подключи резервных копий и соли удаляются по мере истечения срока хранения резервных копий и WAL, созданных до обновления. Копии с длительным сроком хранения сохраняют их до истечения этого срока.
Выпущен pgBackRest 2.59.3
4 октября 2026
Сообщество pgBackRest радо объявить о выпуске pgBackRest 2.59.3 — новой версии надёжного и простого в использовании решения для резервного копирования и восстановления, которое легко масштабируется для работы с крупнейшими базами данных и самыми высокими нагрузками.
pgBackRest предоставляет широкий набор надёжных средств управления инфраструктурой резервного копирования и восстановления: параллельное резервное копирование и восстановление, полные, дифференциальные и инкрементные резервные копии, инкрементное копирование на уровне блоков, несколько репозиториев, дельта-восстановление, параллельное асинхронное архивирование, защиту от вредоносных программ и программ-вымогателей, контрольные суммы отдельных файлов, проверку контрольных сумм страниц при резервном копировании (если они включены), несколько типов сжатия, шифрование, возобновление частично выполненного или прерванного резервного копирования, копирование с резервного сервера, поддержку табличных пространств и ссылок, поддержку S3/Azure/GCS/SFTP, удаление резервных копий по сроку хранения, локальную и удалённую работу через SSH или TLS, гибкую конфигурацию и многое другое.
pgBackRest можно установить из репозитория PostgreSQL Yum или репозитория PostgreSQL APT ; пакеты также доступны для многих других дистрибутивов. Исходный код можно загрузить со страницы выпусков .
Исправления ошибок
- Исправлена возможная генерация слабых подключей шифрования и солей (j0uinim)
- Исправлена возможная ошибка контрольной суммы при загрузке зашифрованных информационных файлов и манифестов (j0uinim)
Дополнительные исправления и улучшения описаны в примечаниях к выпуску 2.59.3 .
Важные примечания
- В предыдущих версиях при ошибке доступа к системным случайным данным могли генерироваться слабые подключи шифрования и соли. Подробности см. в разделе Слабые подключи шифрования и соли .
Ссылки
Спонсорская поддержка
Этот выпуск стал возможен благодаря щедрой спонсорской поддержке AWS , Supabase , pgEdge , Tiger Data , Percona , Eon , Xata , Dalibo и Data Egret .
Выпущен pgBackRest 2.59.2
27 сентября 2026
Сообщество pgBackRest радо объявить о выпуске pgBackRest 2.59.2 — новой версии надёжного и простого в использовании решения для резервного копирования и восстановления, которое легко масштабируется для работы с крупнейшими базами данных и самыми высокими нагрузками.
pgBackRest предоставляет широкий набор надёжных средств управления инфраструктурой резервного копирования и восстановления: параллельное резервное копирование и восстановление, полные, дифференциальные и инкрементные резервные копии, инкрементное копирование на уровне блоков, несколько репозиториев, дельта-восстановление, параллельное асинхронное архивирование, защиту от вредоносных программ и программ-вымогателей, контрольные суммы отдельных файлов, проверку контрольных сумм страниц при резервном копировании (если они включены), несколько типов сжатия, шифрование, возобновление частично выполненного или прерванного резервного копирования, копирование с резервного сервера, поддержку табличных пространств и ссылок, поддержку S3/Azure/GCS/SFTP, удаление резервных копий по сроку хранения, локальную и удалённую работу через SSH или TLS, гибкую конфигурацию и многое другое.
pgBackRest можно установить из репозитория PostgreSQL Yum или репозитория PostgreSQL APT ; пакеты также доступны для многих других дистрибутивов. Исходный код можно загрузить со страницы выпусков .
Новые возможности и исправления ошибок
- Поддержка PostgreSQL 19beta4 (David Steele)
- Исправлена обработка пустой карты блоков при усечении файла до нулевого размера во время резервного копирования (David Steele)
- Отключены повторные попытки чтения, если драйверу переданы фильтры (David Steele)
- Исправлена постраничная выдача списка версий S3 (David Steele)
- Добавлена установка заголовка версии Azure при аутентификации SAS (David Steele)
- Исправлено зависание асинхронной команды
archive-pushна файле истории резервного копирования нулевого размера (Andrew Kroh) - Исправлена работа команды
annotateс удалённым зашифрованным репозиторием (Douglas J Hunley)
Дополнительные исправления и улучшения описаны в примечаниях к выпуску 2.59.2 .
Важные примечания
- В PostgreSQL 19beta4 изменены форматы
pg_controlи WAL, поэтому кластеры и WAL более ранних бета-версий 19 больше не поддерживаются. Кластеры, работающие на более ранней бета-версии, следует создать заново с использованием 19beta4.
Ссылки
Спонсорская поддержка
Этот выпуск стал возможен благодаря щедрой спонсорской поддержке AWS , Supabase , pgEdge , Tiger Data , Percona , Eon , Xata , Dalibo и Data Egret .
Выпущен pgBackRest 2.59.1
17 августа 2026
Сообщество pgBackRest радо объявить о выпуске pgBackRest 2.59.1 — новой версии надёжного и простого в использовании решения для резервного копирования и восстановления, которое легко масштабируется для работы с крупнейшими базами данных и самыми высокими нагрузками.
pgBackRest предоставляет широкий набор надёжных средств управления инфраструктурой резервного копирования и восстановления: параллельное резервное копирование и восстановление, полные, дифференциальные и инкрементные резервные копии, инкрементное копирование на уровне блоков, несколько репозиториев, дельта-восстановление, параллельное асинхронное архивирование, защиту от вредоносных программ и программ-вымогателей, контрольные суммы отдельных файлов, проверку контрольных сумм страниц при резервном копировании (если они включены), несколько типов сжатия, шифрование, возобновление частично выполненного или прерванного резервного копирования, копирование с резервного сервера, поддержку табличных пространств и ссылок, поддержку S3/Azure/GCS/SFTP, удаление резервных копий по сроку хранения, локальную и удалённую работу через SSH или TLS, гибкую конфигурацию и многое другое.
pgBackRest можно установить из репозитория PostgreSQL Yum или репозитория PostgreSQL APT ; пакеты также доступны для многих других дистрибутивов. Исходный код можно загрузить со страницы выпусков .
Новые возможности и исправления ошибок
- Поддержка PostgreSQL 19beta3 (Lardière Sébastien)
- Исправлено зависание, возникавшее, когда буфер блока меньше входного буфера (David Steele)
- Новая метка резервной копии теперь сравнивается только с метками в наборе её собственной полной резервной копии (David Steele)
- Исправлено отсутствие необходимых для сборки файлов в архивах исходного кода, создаваемых GitHub (David Steele)
Дополнительные исправления и улучшения описаны в примечаниях к выпуску 2.59.1 .
Важные примечания
- В PostgreSQL 19beta3 изменён формат WAL, поэтому WAL, заархивированный в более ранних бета-версиях PostgreSQL 19, больше не читается. Кластеры, работающие на более ранней бета-версии, следует создать заново с использованием 19beta3.
Ссылки
Спонсорская поддержка
Этот выпуск стал возможен благодаря щедрой спонсорской поддержке AWS , Supabase , pgEdge , Tiger Data , Percona , Eon , Xata , Dalibo и Data Egret .
Новый дистрибутивный tar-архив
20 июля 2026
Начиная с pgBackRest 2.59.0 каждый выпуск включает дистрибутивный tar-архив, упрощающий сборку из исходного кода. Он содержит уже сгенерированный исходный код и готовую документацию, поэтому pgBackRest можно собрать и установить без средств генерации кода и документации, необходимых при сборке рабочей копии репозитория git.
Архив содержит исходный код pgBackRest, включая предварительно сгенерированный код, справочную страницу man с описанием команд, документацию HTML и базовый тест работоспособности для проверки сборки. Сборка выполняется с помощью meson и ninja и требует только обычных библиотек pgBackRest.
Архив прилагается к каждому выпуску как файл pgbackrest-{version}.tar.gz вместе с соответствующей контрольной суммой .sha256sum. Его можно загрузить со страницы выпусков
на GitHub; инструкции по сборке и тестированию находятся в файле README.md внутри архива.
Сопровождающим пакетов рекомендуется использовать дистрибутивный tar-архив, чтобы не устанавливать дополнительные средства сборки, которые понадобятся для генерации кода и документации в будущих выпусках.
Выпущен pgBackRest 2.59.0
20 июля 2026
Сообщество pgBackRest радо объявить о выпуске pgBackRest 2.59.0 — новой версии надёжного и простого в использовании решения для резервного копирования и восстановления, которое легко масштабируется для работы с крупнейшими базами данных и самыми высокими нагрузками.
pgBackRest предоставляет широкий набор надёжных средств управления инфраструктурой резервного копирования и восстановления: параллельное резервное копирование и восстановление, полные, дифференциальные и инкрементные резервные копии, инкрементное копирование на уровне блоков, несколько репозиториев, дельта-восстановление, параллельное асинхронное архивирование, защиту от вредоносных программ и программ-вымогателей, контрольные суммы отдельных файлов, проверку контрольных сумм страниц при резервном копировании (если они включены), несколько типов сжатия, шифрование, возобновление частично выполненного или прерванного резервного копирования, копирование с резервного сервера, поддержку табличных пространств и ссылок, поддержку S3/Azure/GCS/SFTP, удаление резервных копий по сроку хранения, локальную и удалённую работу через SSH или TLS, гибкую конфигурацию и многое другое.
pgBackRest можно установить из репозитория PostgreSQL Yum или репозитория PostgreSQL APT ; пакеты также доступны для многих других дистрибутивов. Исходный код можно загрузить со страницы выпусков .
Основные новые возможности и улучшения
- Поддержка PostgreSQL 19 (David Steele)
- Добавлен параметр
archive-expire-beforeдля очистки архива WAL (Stefan Fercot) - Добавлена поддержка S3 Outposts (Shiva Kumar Ambigi)
- Добавлена аутентификация S3 с получением учётных данных через внешний процесс (David Steele)
- Добавлено кэширование пользователей и групп для ускорения построения манифеста (Gunnar Lindholm)
- Добавлено повторное подключение к хранилищу SFTP после разрыва сервером неактивного соединения (David Steele)
- В вывод команды
infoдобавлен ход резервного копирования для каждого репозитория (Will Morland) - Добавлено пакетное удаление в хранилище Azure (David Steele)
- В команду
verifyдобавлены проверкиbackup.info(Denis Garsh) - Добавлена возможность настройки конечной точки S3 STS (Simon Gratton)
- Добавлена интеграция с механизмом уведомлений systemd notify (Andrew Jackson)
- При запуске от имени root без включённого
allow-rootтеперь выдаётся ошибка (David Steele) - Асинхронная команда
archive-pushтеперь завершается при первой ошибке (David Steele)
Дополнительные возможности и улучшения описаны в примечаниях к выпуску 2.59.0 .
Важные примечания
- По умолчанию от имени root можно запускать только команду
restore. Для запуска остальных команд от имени root используетсяallow-root(хотя это не рекомендуется). - Для упрощения подготовки пакетов к каждому выпуску прилагается новый дистрибутивный tar-архив с предварительно сгенерированными документацией, страницей man и кодом. Подробнее см. Новый дистрибутивный tar-архив .
- Добавлена новая необязательная зависимость от
libsystemd.
Ссылки
Спонсорская поддержка
Этот выпуск стал возможен благодаря щедрой спонсорской поддержке AWS , Supabase , pgEdge , Tiger Data , Percona , Eon , Xata , Dalibo и Data Egret .
Разработка pgBackRest продолжится!
18 мая 2026
Рад сообщить, что разработка pgBackRest продолжится! За последние несколько недель группа спонсоров объединилась для финансирования дальнейшей разработки. Благодаря их поддержке проект больше не зависит от одного спонсора, что обеспечивает pgBackRest необходимую долгосрочную стабильность.
Хочу поблагодарить каждого из наших спонсоров:
Amazon Web Services предоставляет облачные вычислительные ресурсы по запросу частным лицам, компаниям и государственным организациям. Доступны вычислительные мощности, хранилища, базы данных, машинное обучение и более 200 сервисов с оплатой только за использованные ресурсы. Компания помогает клиентам расти и инвестирует в сообщества, частью которых мы являемся.
Supabase — полноценная платформа для серверной части приложений на базе PostgreSQL, которая позволяет разработчикам быстро создавать и масштабировать приложения, не занимаясь управлением инфраструктурой. Она включает базу данных Postgres, аутентификацию пользователей, подписки в реальном времени, файловое хранилище, периферийные и бессерверные функции; всё это поддерживает активное сообщество разработчиков открытого ПО.
pgEdge — корпоративная платформа Postgres с открытым исходным кодом для ИИ, высокой доступности и других задач. Она включает встроенные средства агентного ИИ и рабочую среду администратора баз данных, мониторинг и реагирование на инциденты, гибкое развёртывание и обслуживание без простоя. Платформа масштабируется от одного узла до конфигурации с несколькими ведущими узлами в режиме active-active в облаке, на собственной инфраструктуре или в изолированных от сети средах.
Tiger Data , создатели TimescaleDB, разрабатывает базу данных временных рядов с открытым исходным кодом на основе PostgreSQL и предоставляет Tiger Cloud — управляемую платформу для временных рядов, аналитики и задач ИИ. Варианты с самостоятельным управлением и облачные решения позволяют организациям собирать, хранить и анализировать большие объёмы временных рядов как на периферийных узлах, так и в централизованных облачных развёртываниях.
Percona разрабатывает открытое программное обеспечение для баз данных, оказывает поддержку и предоставляет услуги, помогая организациям сохранять полный контроль над своей инфраструктурой данных. Компания помогает предприятиям безопасно и эффективно использовать MySQL, PostgreSQL, MongoDB, Valkey и Redis благодаря свободно доступному ПО с открытым исходным кодом, экспертной поддержке 24/7 и практическому опыту работы с базами данных.
Eon.io — интеллектуальная облачная инфраструктура для резервного копирования, восстановления и управления данными. Она помогает командам эффективнее хранить резервные копии и обращаться к ним, предоставляя доступ к данным для аналитики и процессов ИИ. Решение обеспечивает быстрое восстановление отдельных объектов и значительно снижает затраты на хранение для Postgres и задач с интенсивной обработкой данных во всех облаках, в том числе при восстановлении после случайной потери данных и регрессий, вызванных агентами ИИ.
Эти организации используют pgBackRest для надёжного аварийного восстановления своих продуктов и систем клиентов. Их инвестиции отражают важнейшую роль pgBackRest в экосистеме PostgreSQL, а совместная поддержка обеспечивает устойчивость проекта в долгосрочной перспективе.
С нетерпением жду возвращения к работе. В планах есть новые возможности и оптимизации, которыми я с удовольствием поделюсь в следующих выпусках. Спасибо нашим спонсорам за то, что сделали это возможным, и сообществу за терпение и поддержку в этот переходный период.
Новости о сопровождении
4 мая 2026
После объявления о прекращении сопровождения pgBackRest на меня обрушился поток писем. На их разбор ушло немало времени: во многих были добрые пожелания и слова благодарности за многолетнюю работу.
Но вскоре стала понятна общая картина. Многие пользователи pgBackRest, особенно те, кто сами поддерживают пользователей pgBackRest, хотели бы продолжения проекта со мной в роли основного сопровождающего. Я и сам очень этого хочу, но после месяцев поиска финансирования уже решил, что это невозможно.
Теперь ситуация изменилась, и, по всей видимости, мне почти наверняка удастся получить достаточно средств для продолжения проекта. На этот раз pgBackRest будет финансировать группа спонсоров, чтобы покупка одной компании больше не влияла на мою возможность работать над проектом. Ожидается, что мы также сможем привлечь ещё одного сопровождающего, чтобы распределить нагрузку и обеспечить преемственность в будущем.
Понимаю, что это стало потрясением и что неопределённости ещё много. Прошу набраться терпения: текущая версия pgBackRest работает, неустранённых критических ошибок или проблем безопасности нет, поэтому срочно создавать ответвление проекта не требуется.
Рассчитываю сделать более определённое заявление к концу недели. До тех пор прошу подождать: мы активно работаем над возобновлением разработки pgBackRest.
Сопровождение pgBackRest прекращено
27 апреля 2026
Кратко: сопровождение pgBackRest прекращено. Если вы создаёте ответвление pgBackRest, пожалуйста, выберите для своего проекта новое имя.
После долгих размышлений я решил прекратить работу над pgBackRest. Это решение далось мне нелегко. Последние тринадцать лет pgBackRest был проектом, которому я отдавал душу. Большую часть этого времени мне повезло получать поддержку компаний, но было и немало поздних вечеров и выходных, которые я вместе со множеством участников потратил на то, чтобы pgBackRest стал таким, какой он сегодня. Каждый разработчик открытого ПО прекрасно понимает, о чём я говорю и сколько жизни уходит на дорогой сердцу проект.
После продажи Crunchy Data я продолжал сопровождать pgBackRest и искал работу, которая позволила бы мне заниматься им дальше, но пока безуспешно. Поиск спонсорской поддержки также принёс значительно меньше средств, чем необходимо для жизнеспособности проекта.
Как и всем, мне нужно зарабатывать на жизнь, а выбор работы, связанной с pgBackRest, очень ограничен. Теперь я могу рассматривать более широкий круг предложений, но они не оставят времени на pgBackRest: сопровождение, исправление ошибок, рецензирование PR, ответы на обращения и прочие задачи требуют немало времени. И это ещё без разработки новых возможностей — того, что я люблю больше всего. Думаю, лучше полностью остановиться, чем работать некачественно или от случая к случаю.
Полагаю, со временем у pgBackRest появится ответвление, но это будет новый проект с новыми сопровождающими, которым предстоит заслужить доверие так же, как это сделали мы.
Ещё раз огромное спасибо всем, кто участвовал в разработке pgBackRest за эти годы. Мне было приятно работать с вами!
2 - Руководство пользователя (Debian/Ubuntu)
Введение
Это руководство следует читать последовательно от начала до конца: каждый раздел опирается на предыдущий. Например, раздел Восстановление предполагает настройку, выполненную в разделе Быстрый старт . После установки и запуска pgBackRest можно переходить между разделами, но при первом знакомстве рекомендуется пройти руководство по порядку.
Хотя примеры в этом руководстве рассчитаны на Debian/Ubuntu и PostgreSQL 17, их должно быть довольно легко адаптировать к любому дистрибутиву Unix и любой версии PostgreSQL. От ОС зависят только команды создания, запуска, остановки и удаления кластеров PostgreSQL. Команды pgBackRest одинаковы во всех системах Unix, хотя расположение исполняемого файла может различаться. pgBackRest стремится работать одинаково с разными версиями PostgreSQL, однако между ними есть небольшие различия, которые могут проявляться в отдельных примерах этого руководства, например в путях, именах файлов и настройках PostgreSQL.
Сведения о настройке и документация PostgreSQL доступны в руководстве PostgreSQL .
При подготовке этого руководства используется несколько необычный подход. При сборке документации из исходных XML-файлов каждая команда выполняется на виртуальной машине. Это позволяет с высокой уверенностью утверждать, что команды корректно работают в указанном порядке. При необходимости вывод сохраняется и показывается под командой. Если вывод отсутствует, он был сочтён несущественным или отвлекающим от изложения.
Все команды рассчитаны на выполнение непривилегированным пользователем с правами sudo для пользователей root и postgres. Команды также можно без изменений выполнять непосредственно от имени соответствующих пользователей; в этом случае префиксы sudo можно убрать.
Основные понятия
Ниже приведены определения понятий в контексте pgBackRest, PostgreSQL и этого руководства.
Резервная копия
Резервная копия — это согласованная копия кластера баз данных, которую можно восстановить после аппаратного сбоя, для возврата к определённому моменту времени или для запуска нового резервного сервера.
Полная резервная копия: pgBackRest копирует в резервную копию всё содержимое кластера баз данных. Первая резервная копия кластера всегда является полной. pgBackRest всегда может восстановить полную резервную копию непосредственно. Её согласованность не зависит от файлов за пределами самой полной резервной копии.
Дифференциальная резервная копия: pgBackRest копирует только те файлы кластера баз данных, которые изменились с момента последней полной резервной копии. При восстановлении дифференциальной резервной копии pgBackRest копирует все файлы выбранной дифференциальной копии и соответствующие неизменившиеся файлы предыдущей полной копии. Преимущество дифференциальной копии в том, что она занимает меньше места, чем полная, однако для её восстановления должны быть исправны как дифференциальная, так и полная резервная копия.
Инкрементная резервная копия: pgBackRest копирует только те файлы кластера баз данных, которые изменились с момента последней резервной копии (другой инкрементной, дифференциальной или полной). Поскольку инкрементная копия включает лишь файлы, изменившиеся после предыдущей копии, она обычно значительно меньше полной или дифференциальной. Как и в случае дифференциальной копии, восстановление инкрементной копии зависит от исправности других резервных копий. Поскольку инкрементная копия содержит только файлы, изменившиеся после последней копии, для её восстановления должны быть исправны все предшествующие инкрементные копии вплоть до предыдущей дифференциальной, сама эта дифференциальная копия и предшествующая полная копия. Если дифференциальной копии нет, должны быть исправны все предшествующие инкрементные копии вплоть до предыдущей полной копии, наличие которой обязательно, а также сама полная копия.
Восстановление
Восстановление — это копирование резервной копии в систему, где она будет запущена как рабочий кластер баз данных. Для корректного восстановления нужны файлы резервной копии и один или несколько сегментов WAL.
Журнал предзаписи (WAL)
WAL — механизм, с помощью которого PostgreSQL гарантирует сохранность зафиксированных изменений. Транзакции последовательно записываются в WAL; транзакция считается зафиксированной после того, как эти записи сброшены на диск. Затем фоновый процесс записывает изменения в основные файлы кластера баз данных (также называемые кучей). После аварийного завершения WAL воспроизводится, чтобы привести базу данных в согласованное состояние.
Концептуально WAL бесконечен, но на практике он разбит на отдельные файлы размером 16MB, называемые сегментами. Имена сегментов WAL имеют вид 0000000100000A1E000000FE: первые 8 шестнадцатеричных цифр обозначают временную шкалу, а следующие 16 — логический порядковый номер (LSN).
Шифрование
Шифрование — это преобразование данных в формат, который невозможно распознать без соответствующего пароля (также называемого парольной фразой).
pgBackRest шифрует репозиторий с использованием пароля, заданного пользователем, предотвращая несанкционированный доступ к хранящимся в нём данным.
Обновление pgBackRest
Обновление pgBackRest с v2.x до v2.y
Обновление с v2.x до v2.y несложно. Формат репозитория не изменился, поэтому в большинстве установок достаточно установить исполняемые файлы новой версии. Понижение версии также возможно, если не использовались новые функции, которые не поддерживаются старой версией.
ВАЖНО:
Локальная и удалённая версии pgBackRest должны в точности совпадать, поэтому их следует обновлять одновременно. При несовпадении версий архивирование WAL и резервное копирование не будут работать, пока версии не совпадут. В этом случае выводится ошибка: [ProtocolError] expected value '2.x' for greeting key 'version' but got '2.y'.
Сборка
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. Дополнительные сведения о пакетах приведены в разделе Установка .
Сборку из исходного кода лучше выполнять на отдельном сервере сборки, а не в рабочей среде. Многие необходимые для сборки инструменты обычно не следует устанавливать в рабочей среде. pgBackRest состоит из одного исполняемого файла, поэтому после сборки его легко скопировать на другой сервер.
build ⇒ Загрузить pgBackRest версии 2.59.3 в каталог /build
build ⇒ Установить зависимости для сборки
build ⇒ Настроить и скомпилировать pgBackRest
build ⇒ При необходимости запустить базовые тесты, чтобы проверить правильность сборки pgBackRest
Установка
Для демонстрационного кластера и выполнения примеров pgBackRest создаётся новый сервер с именем pg-primary.
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. При установке из пакета остальные инструкции этого раздела обычно не нужны, однако пакет может не создать какой-либо каталог или назначить неверные права доступа. В таком случае может потребоваться вручную создать каталоги или исправить права.
Пакеты pgBackRest для Debian/Ubuntu доступны на apt.postgresql.org .
Если для используемого дистрибутива или его версии нет пакетов, можно собрать программу из исходного кода , а затем установить её вручную, как показано ниже.
pg-primary ⇒ Установить зависимости
pg-primary ⇒ Скопировать исполняемый файл pgBackRest с сервера сборки
Для pgBackRest нужны каталоги журналов и конфигурации, а также файл конфигурации.
pg-primary ⇒ Создать файл конфигурации и каталоги pgBackRest
Теперь pgBackRest должен быть установлен правильно, но лучше это проверить. Если какие-либо зависимости пропущены, при запуске pgBackRest из командной строки возникнет ошибка.
pg-primary ⇒ Убедиться в успешной установке
Быстрый старт
В разделе «Быстрый старт» рассматривается базовая настройка pgBackRest и PostgreSQL, а также команды backup, restore и info.
Создание демонстрационного кластера
Создавать демонстрационный кластер необязательно, но настоятельно рекомендуется, особенно новым пользователям: команды в примерах этого руководства обращаются именно к нему. Предполагается, что демонстрационный кластер работает на порту по умолчанию (5432). Кластер будет запущен в одном из следующих разделов, поскольку сначала нужно завершить настройку.
pg-primary ⇒ Создать демонстрационный кластер
Настройка stanza кластера
Stanza — это конфигурация кластера баз данных PostgreSQL, определяющая его расположение, способ резервного копирования, параметры архивирования и т. д. На большинстве серверов баз данных работает только один кластер PostgreSQL, поэтому достаточно одной stanza. На серверах резервного копирования требуется отдельная stanza для каждого кластера, резервные копии которого нужно создавать.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных этого кластера. Поскольку имя stanza будет использоваться для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, например main или prod.
Имя «demo» точно отражает назначение этого кластера, поэтому подходит и в качестве имени stanza.
pgBackRest должен знать расположение основного каталога данных кластера PostgreSQL. Путь можно запросить непосредственно у PostgreSQL, но при восстановлении процесс PostgreSQL будет недоступен. Во время резервного копирования значение, переданное pgBackRest, сравнивается с путём, который использует работающий PostgreSQL: они должны совпадать, иначе резервное копирование завершится ошибкой. Убедитесь, что pg-path в точности совпадает с data_directory, возвращаемым PostgreSQL.
По умолчанию Debian/Ubuntu хранит кластеры в /var/lib/postgresql/[version]/[cluster], поэтому правильный путь к каталогу данных определить легко.
При создании файла /etc/pgbackrest/pgbackrest.conf владелец базы данных (обычно postgres) должен получить права на его чтение.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить каталог данных кластера PostgreSQL
Файлы конфигурации pgBackRest используют формат, похожий на INI в Windows. Секции обозначаются текстом в квадратных скобках, каждая секция содержит пары ключ/значение. Строки, начинающиеся с #, игнорируются и могут использоваться как комментарии, но комментарии после значения в той же строке не поддерживаются. Кавычки не поддерживаются, пробельные символы по краям ключей и значений удаляются. Повторно встречающиеся секции объединяются.
Файлы конфигурации pgBackRest могут загружаться несколькими способами:
configиconfig-include-pathимеют значения по умолчанию: загружается файл конфигурации по умолчанию, если он существует, затем добавляются файлы*.confиз каталога включаемой конфигурации по умолчанию, если они существуют.- Указан параметр
config: загружается только указанный файл конфигурации; он должен существовать. - Указан
config-include-path: загружаются файлы*.confиз каталога включаемой конфигурации; сам каталог должен существовать. Файл конфигурации по умолчанию загружается, если он существует. Чтобы загрузить только файлы из указанного каталога включаемой конфигурации, можно также передать параметр--no-config. - Указаны
configиconfig-include-path: используются заданные пользователем значения; загружается файл конфигурации, затем добавляются файлы*.confиз каталога включаемой конфигурации. Файлы должны существовать. - Указан
config-path: эта настройка переопределяет базовый путь к файлу конфигурации по умолчанию и/или базовый путь настройки config-include-path по умолчанию, если параметры config и/или config-include-path не заданы явно.
Файлы объединяются так, как если бы это был один большой файл, причём каждый файл должен быть корректен сам по себе. Поэтому в каждом файле необходимо указывать секции, в которых должны храниться пары ключ/значение. Порядок не важен, но приоритет зависит от секции. Приоритет от высшего к низшему:
- [stanza:command]
- [stanza]
- [global:command]
- [global]
ПРИМЕЧАНИЕ:
--config, --config-include-path и --config-path доступны только в командной строке.
pgBackRest также можно настраивать через переменные среды (пример ниже); эти переменные действуют для таких команд, как backup , restore и archive-push .
pg-primary ⇒ Настроить log-path через переменную среды
Создание репозитория
Репозиторий — место, где pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить необходимое место может быть непросто. Лучше всего создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за сутки. Это даст общее представление о требуемом месте, хотя со временем требования, скорее всего, будут меняться по мере развития базы данных.
В этом примере репозиторий будет храниться на том же сервере, что и PostgreSQL. Это простейшая конфигурация; она полезна, когда для резервного копирования сервера баз данных используется обычное ПО резервного копирования.
pg-primary ⇒ Создать репозиторий pgBackRest
Путь к репозиторию необходимо настроить, чтобы pgBackRest знал, где его искать.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить путь к репозиторию pgBackRest
Можно настроить и несколько репозиториев. Подробности см. в разделе Несколько репозиториев .
Настройка архивирования
Для резервного копирования работающего кластера PostgreSQL должно быть включено архивирование WAL. Через %p PostgreSQL указывает расположение сегмента WAL, который нужно архивировать. Обратите внимание: в ходе резервного копирования создаётся как минимум один сегмент WAL, даже если в кластер явно ничего не записывается.
pg-primary:/etc/postgresql/17/demo/postgresql.conf ⇒ Настроить параметры архивирования
После внесения этих изменений и перед резервным копированием кластер PostgreSQL необходимо перезапустить.
pg-primary ⇒ Перезапустить демонстрационный кластер
Настройка hot_standby включена по умолчанию; её следует оставлять включённой на всех кластерах. В дальнейшем любой кластер может быть восстановлен как резервный, например первичный сервер, заново созданный в качестве резервного после переключения при отказе. Без этой настройки резервный сервер не принимает соединения для чтения.
Если ожидается, что архивирование сегмента WAL в репозиторий pgBackRest займёт более 60 секунд (значение по умолчанию), следует увеличить параметр pgBackRest archive-timeout. Это не то же самое, что параметр PostgreSQL archive_timeout, который принудительно переключает сегмент WAL и полезен для баз данных с длительными периодами отсутствия активности. Дополнительные сведения о параметре PostgreSQL archive_timeout см. в разделе Журнал предзаписи
документации PostgreSQL.
Для команды archive-push можно задать отдельные параметры. Например, меньший уровень сжатия может ускорить архивирование, не влияя на сжатие резервных копий.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить archive-push на меньший уровень сжатия
Этот способ настройки применим к любой команде и даже к конкретной stanza, например demo:archive-push.
Настройка срока хранения
pgBackRest удаляет устаревшие резервные копии на основании параметров срока хранения.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить хранение 2 полных резервных копий
Дополнительные сведения приведены в разделе Срок хранения .
Настройка шифрования репозитория
Для демонстрации шифрования в репозитории будут настроены тип шифра и ключ. Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3 или другое объектное хранилище) поддерживает шифрование.
В качестве ключа шифрования важно использовать длинную случайную парольную фразу. Подходящий способ её создания — команда openssl rand -base64 48.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить шифрование репозитория pgBackRest
ПРИМЕЧАНИЕ:
Выше настройки шифрования размещены в секции [global], чтобы команда info могла читать все stanza. Без параметра stanza команда info читает настройки шифрования только из секции [global], поэтому при настройке шифрования для отдельных stanza для чтения зашифрованной stanza требуется параметр stanza.
После настройки репозитория, создания и проверки stanza изменить настройки шифрования репозитория нельзя.
Создание stanza
Для инициализации stanza необходимо выполнить команду stanza-create. После stanza-create рекомендуется выполнить check, чтобы убедиться в правильной настройке архивирования и резервного копирования.
pg-primary ⇒ Создать stanza и проверить конфигурацию
Проверка конфигурации
Команда check проверяет, правильно ли настроены pgBackRest и параметр archive_command для архивирования и резервного копирования указанной stanza. Она попытается проверить все репозитории и базы данных, настроенные для сервера, на котором выполняется. Команда выявляет ошибки конфигурации, особенно архивирования, из-за которых резервные копии оказываются неполными, поскольку необходимые сегменты WAL не попали в архив. Команду можно выполнять на сервере PostgreSQL или сервере репозитория. Её также можно выполнять на резервном сервере, однако, поскольку на нём нельзя вызвать pg_switch_xlog()/pg_switch_wal(), в этом случае проверяется только конфигурация репозитория.
Обратите внимание: для принудительного архивирования сегмента WAL в PostgreSQL вызываются pg_create_restore_point('pgBackRest Archive Check') и pg_switch_xlog()/pg_switch_wal().
pg-primary ⇒ Проверить конфигурацию
Настройка производительности
В pgBackRest есть ряд параметров производительности, которые по умолчанию отключены для сохранения обратной совместимости репозитория. Однако при создании нового репозитория рекомендуется использовать следующие параметры. Их можно применять и к существующему репозиторию, но тогда старые версии pgBackRest не смогут его читать. Эта несовместимость зависит от версии, в которой появилась функция, как указано в списке ниже.
compress-type— определяет алгоритм сжатия для командbackupиarchive-push. По умолчанию используетсяgz(Gzip), но рекомендуетсяzst(Zstandard): он гораздо быстрее и обеспечивает степень сжатия, близкую кgz. Значениеzstподдерживается параметромcompress-typeначиная с v2.27 . Подробности см. в разделе Тип сжатия .repo-bundle— объединяет небольшие файлы при резервном копировании, экономя место и ускоряя командыbackupиrestore, особенно в объектных хранилищах, таких как S3. Параметрrepo-bundleпоявился в v2.39 . Подробности см. в разделе Пакетирование файлов .repo-block— при резервном копированииdiff/incrкомандойbackupсохраняет только изменившиеся части файлов, а не файлы целиком. Это экономит место и ускоряетbackup. Параметрrepo-blockпоявился в v2.46 , но рекомендуется как минимум v2.52.1 . Подробности см. в разделе Блочное инкрементное копирование .
Есть и другие параметры производительности, отключённые по умолчанию, поскольку они требуют дополнительной настройки или значение по умолчанию безопасно, но не оптимально. Эти параметры доступны во всех версиях pgBackRest v2.
process-max— определяет количество процессов, используемых командами. Значение по умолчанию — 1, и оно почти никогда не является подходящим. Каждая команда используетprocess-maxпо-своему; подробности см. в документации соответствующей команды.archive-async— архивирует файлы WAL в репозиторий пакетами, что значительно ускоряет архивирование. По умолчанию отключён, поскольку требует создания каталога очереди. Подробности см. в разделе Асинхронное архивирование .backup-standby— выполняет резервное копирование с резервного сервера вместо первичного, снижая нагрузку на первичный сервер. По умолчанию отключён, поскольку требует дополнительной настройки и наличия одного или нескольких резервных серверов. Подробности см. в разделе Резервное копирование с резервного сервера .
Создание резервной копии
По умолчанию pgBackRest перед началом резервного копирования ждёт следующей плановой контрольной точки. В зависимости от настроек checkpoint_timeout и checkpoint_segments в PostgreSQL до завершения контрольной точки и начала резервного копирования может пройти немало времени. Обычно лучше задать start-fast=y, чтобы резервное копирование начиналось сразу. Это принудительно создаёт контрольную точку, но, поскольку резервные копии обычно создаются раз в сутки, дополнительная контрольная точка не должна заметно влиять на производительность. Однако на очень нагруженных кластерах может быть лучше передавать --start-fast в командной строке по мере необходимости.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить быстрый запуск резервного копирования
Чтобы создать резервную копию кластера PostgreSQL, запустите pgBackRest с командой backup.
pg-primary ⇒ Создать резервную копию демонстрационного кластера
По умолчанию pgBackRest пытается создать инкрементную резервную копию. Однако инкрементная копия должна опираться на полную, а поскольку полной копии ещё не было, pgBackRest создал полную копию.
Параметр type позволяет явно указать полное или дифференциальное резервное копирование.
pg-primary ⇒ Создать дифференциальную резервную копию демонстрационного кластера
На этот раз предупреждения не было, поскольку полная резервная копия уже существовала. Инкрементные копии могут опираться на полную или дифференциальную копию, а дифференциальные должны опираться на полную. Для создания полной копии выполните команду backup с --type=full.
Во время резервного копирования работающего кластера pgBackRest ожидает архивирования сегментов WAL, необходимых для согласованности резервной копии. Время ожидания задаётся параметром pgBackRest archive-timeout, значение которого по умолчанию составляет 60 секунд. Если известно, что архивирование отдельного сегмента занимает больше времени, этот параметр следует увеличить.
Планирование резервного копирования
Резервное копирование можно запускать по расписанию с помощью таких утилит, как cron.
В следующем примере настроены два задания cron: полное резервное копирование каждое воскресенье в 6:30 утра и дифференциальное в 6:30 утра с понедельника по субботу. Если этот crontab устанавливается впервые посреди недели, при первом запуске задания дифференциального копирования pgBackRest создаст полную копию, а на следующий день — дифференциальную.
После настройки расписания важно настроить срок хранения, чтобы устаревшие копии регулярно удалялись; см. раздел Срок хранения .
Сведения о резервных копиях
Для получения сведений о резервных копиях используйте команду info.
pg-primary ⇒ Получить сведения о демонстрационном кластере
Команда info работает с одной stanza или со всеми stanza. По умолчанию используется текстовый вывод, который содержит удобную для чтения сводку резервных копий запрошенных stanza. Этот формат может измениться в любом выпуске.
Для машиночитаемого вывода используйте --output=json. Вывод JSON содержит намного больше сведений, чем текстовый, и остаётся стабильным, если только не обнаружена ошибка.
Чтобы ускорить выполнение, ограничьте вывод сведениями о ходе выполнения, указав --detail-level=progress. При этом пропускаются все проверки, кроме проверки доступности stanza.
Для каждой stanza выводится отдельный раздел; параметром --stanza можно ограничить вывод одной stanza. Поле «status» кратко отражает состояние stanza. Значение «ok» означает, что pgBackRest работает нормально. При наличии нескольких репозиториев статус «mixed» указывает на проблемы со stanza в одном или нескольких репозиториях; в этом случае её состояние подробно приводится для каждого репозитория. Если ошибка репозитория не соответствует ни одному из известных кодов ошибок, используется код «other» и выводятся полные сведения об ошибке. Поле «wal archive min/max» показывает минимальный и максимальный WAL, хранящиеся в архиве; при наличии нескольких репозиториев оно охватывает их все, если не задан параметр --repo. Учтите, что из-за политик срока хранения архива или по другим причинам в последовательности могут быть пропуски.
Если на сервере сейчас выполняется одна из соответствующих команд, рядом со сведениями «status» появляются сообщения «backup/expire running» и/или «restore running». В текстовом выводе также отображается ход выполнения по каждому репозиторию, а в вывод JSON добавляется массив «repo».
Резервные копии выводятся от старых к новым. Самая старая копия всегда полная (обозначается F в конце метки), а самая новая может быть полной, дифференциальной (метка оканчивается на D) или инкрементной (оканчивается на I).
Поле «timestamp start/stop» задаёт период выполнения резервного копирования. По «timestamp stop» можно выбрать копию для восстановления на определённый момент времени. Дополнительные сведения приведены в разделе Восстановление на определённый момент времени
.
Поле «wal start/stop» определяет диапазон WAL, необходимый для приведения базы данных в согласованное состояние при восстановлении. Перед завершением команда backup убеждается, что этот диапазон WAL есть в архиве.
Поле «database size» — полный размер базы данных без сжатия, а «database backup size» — объём данных базы, которые фактически нужно скопировать (для полных копий эти значения совпадают).
Поле «repo» указывает, в каком репозитории находится копия. Поле «backup set size» включает все файлы этой копии и тех копий репозитория, на которые она ссылается и которые необходимы для восстановления базы данных из неё, а «backup size» — только файлы самой этой копии (для полных копий эти значения также совпадают). Если в pgBackRest включено сжатие, размеры в репозитории учитывают сжатый размер файлов.
Поле «backup reference total» содержит сводку дополнительных резервных копий, необходимых для восстановления этой копии. Чтобы вывести полный список ссылок, используйте параметр --set.
Восстановление резервной копии
Резервные копии защищают от ряда аварийных ситуаций; наиболее распространены аппаратные сбои и повреждение данных. Простейший способ имитировать повреждение данных — удалить важный файл кластера PostgreSQL.
pg-primary ⇒ Остановить демонстрационный кластер и удалить файл pg_control
При запуске кластера без этого важного файла возникнет ошибка.
pg-primary ⇒ Попытаться запустить повреждённый демонстрационный кластер
Чтобы восстановить резервную копию кластера PostgreSQL, запустите pgBackRest с командой restore. Кластер необходимо остановить (в данном случае он уже остановлен), а из каталога данных PostgreSQL удалить все файлы.
pg-primary ⇒ Удалить старые файлы демонстрационного кластера
pg-primary ⇒ Восстановить демонстрационный кластер и запустить PostgreSQL
На этот раз кластер успешно запустился, поскольку при восстановлении был возвращён отсутствующий файл pg_control.
Дополнительные сведения о команде restore приведены в разделе Восстановление
.
Мониторинг
Мониторинг — важная часть любой рабочей системы. Доступно множество инструментов, и с небольшой доработкой любой из них можно использовать для мониторинга pgBackRest.
pgBackRest может выводить сведения о репозитории в формате JSON, включая список всех резервных копий для каждой stanza и сведения об архиве WAL.
В PostgreSQL
Команда PostgreSQL COPY позволяет загрузить сведения pgBackRest в таблицу. В следующем примере эта логика оформлена как функция, с помощью которой можно выполнять запросы в реальном времени.
pg-primary ⇒ Загрузить функцию получения сведений pgBackRest для PostgreSQL
Теперь с помощью функции monitor.pgbackrest_info() можно узнать время последней успешной резервной копии и архивированный WAL для stanza.
pg-primary ⇒ Запросить время последней успешной резервной копии и архивированный WAL
Использование jq
jq — утилита командной строки, с помощью которой легко извлекать данные из JSON.
pg-primary ⇒ Установить утилиту jq
Теперь с помощью jq можно запросить время последней успешной резервной копии для stanza.
pg-primary ⇒ Запросить время последней успешной резервной копии
Или последний архивированный WAL.
pg-primary ⇒ Запросить последний архивированный WAL
ПРИМЕЧАНИЕ:
Для этого синтаксиса требуется jq v1.5.
ПРИМЕЧАНИЕ:
jq может округлять большие числа, например системные идентификаторы. Тщательно проверяйте запросы.
Резервное копирование
Если настроено несколько репозиториев, pgBackRest создаёт резервную копию в репозитории с наивысшим приоритетом (например, repo1), если не указан параметр --repo.
У pgBackRest нет встроенного планировщика, поэтому лучше запускать его из cron или другого планировщика.
Дополнительные сведения и примеры см. в разделе Создание резервной копии .
Пакетирование файлов
Объединение файлов в пакеты в репозитории экономит время резервного копирования и часть места в репозитории. Это особенно заметно, когда репозиторий находится в объектном хранилище, таком как S3, или в файловой системе с большим размером блока. Создание отдельного файла в объектном хранилище занимает больше времени, а хранение очень маленьких файлов может стоить столько же, сколько хранение более крупных.
Пакетирование файлов включается параметром repo-bundle.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-bundle
Без пакетирования файлов каталог полной резервной копии содержит 1000+ файлов, а с пакетированием их общее количество значительно уменьшается. Дополнительное преимущество: файлы нулевой длины не сохраняются (кроме записи в манифесте), тогда как при обычном резервном копировании каждый такой файл хранится отдельно.
pg-primary ⇒ Создать полную резервную копию
pg-primary ⇒ Проверить общее количество файлов
Для настройки можно использовать параметры repo-bundle-size и repo-bundle-limit, хотя значения по умолчанию должны быть оптимальными в большинстве случаев.
Хотя пакетирование файлов обычно эффективнее, оно затрудняет ручное извлечение файлов из репозитория. Для хранилища с дедупликацией оно может быть не лучшим выбором: каждая полная резервная копия размещает файлы в пакетах по-разному. Наконец, копирование пакетов файлов нельзя возобновить, поэтому не следует задавать слишком большое значение repo-bundle-limit.
Блочное инкрементное копирование
Блочные инкрементные резервные копии экономят место: сохраняются лишь части файла, изменившиеся после предыдущей резервной копии, а не весь файл.
Блочное инкрементное копирование включается параметром repo-block и наиболее эффективно, когда включено для всех типов резервных копий. Пакетирование файлов также должно быть включено.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-block
Аннотации резервных копий
К резервной копии можно прикреплять информационные пары ключ/значение. Этот параметр можно указать несколько раз, чтобы добавить несколько аннотаций.
pg-primary ⇒ Создать полную резервную копию с аннотациями
В текстовом выводе команды info аннотации отображаются, когда резервная копия указана через --set; в выводе JSON они присутствуют всегда.
pg-primary ⇒ Получить сведения о демонстрационном кластере
Аннотации, заданные в команде backup, впоследствии можно добавлять, изменять или удалять с помощью команды annotate.
pg-primary ⇒ Изменить аннотации резервной копии
Срок хранения
Обычно лучше хранить как можно больше резервных копий, чтобы расширить доступный интервал восстановления на определённый момент времени , но необходимо учитывать и практические ограничения, например объём диска. Параметры срока хранения позволяют удалять старые копии, когда они больше не нужны.
pgBackRest выполняет ротацию полных резервных копий в зависимости от типа срока хранения: по количеству или по периоду времени. Если задано количество, при удалении учитывается не время создания копий, а то, сколько их нужно сохранить. Дифференциальные копии хранятся по количеству, но всегда удаляются при удалении полной копии, от которой зависят. Инкрементные копии не удаляются по сроку хранения независимо: они всегда удаляются вместе со связанной полной или дифференциальной копией. Подробности и примеры см. в разделах Хранение полных резервных копий и Хранение дифференциальных резервных копий .
По умолчанию архивированный WAL сохраняется для резервных копий, срок хранения которых не истёк. Этот порядок можно изменить отдельно для каждого репозитория параметрами retention-archive, хотя делать это не рекомендуется. Подробности и примеры см. в разделе Хранение архива .
Команда expire автоматически выполняется после каждого успешного резервного копирования; её также может запускать пользователь. При ручном запуске удаление выполняется в соответствии с настройками срока хранения каждого настроенного репозитория. Если передан параметр --repo, удаление выполняется только в указанном репозитории. Пользователь может также ограничить удаление конкретным набором резервной копии с помощью --set; если при этом не указан --repo, поиск выполняется во всех репозиториях и удаляются все совпадающие наборы. Следует учитывать, что при каждом запуске expire проверяется и применяется политика хранения архива.
Хранение полных резервных копий
Параметр repo1-retention-full-type определяет, как интерпретировать repo1-retention-full: как количество сохраняемых полных резервных копий или как число дней их хранения. Удаление выполняется только после завершения новых резервных копий. То есть при repo1-retention-full-type=count и repo1-retention-full=2 перед удалением самой старой копии будут храниться три полные копии; при repo1-retention-full-type=time и repo1-retention-full=20 для начала удаления должна существовать хотя бы одна полная копия возрастом не менее 20 дней.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-retention-full
Для резервного копирования задано repo1-retention-full=2, но пока существует только одна полная копия, поэтому создание следующей полной копии не приведёт к удалению полных копий.
pg-primary ⇒ Создать полную резервную копию
Архив удаляется, поскольку сегменты WAL были созданы до самой старой резервной копии. Для восстановления они бесполезны: восстановить копию можно только с помощью сегментов WAL, созданных после неё.
pg-primary ⇒ Создать полную резервную копию
Полная резервная копия 20261002-190624F удаляется, а хранение архива теперь определяется копией 20261002-190646F, которая стала самой старой полной копией.
Хранение дифференциальных резервных копий
Установите repo1-retention-diff равным нужному количеству дифференциальных резервных копий. Дифференциальные копии зависят только от предыдущей полной копии, поэтому можно создать «скользящий» набор дифференциальных копий за последние сутки или более длительный период. Это обеспечивает быстрое восстановление на недавние моменты времени и при этом уменьшает общий расход места.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-retention-diff
Для резервного копирования задано repo1-retention-diff=1, поэтому прежде, чем одна дифференциальная копия будет удалена, нужно создать две. Для демонстрации удаления инкрементной копии добавляется инкрементное резервное копирование; в данном случае её удаление зависит от удаления дифференциальной копии.
pg-primary ⇒ Создать дифференциальную и инкрементную резервные копии
Теперь создание дифференциальной резервной копии приведёт к удалению предыдущих дифференциальной и инкрементной копий, оставив только одну дифференциальную.
pg-primary ⇒ Создать дифференциальную резервную копию
Хранение архива
Хотя pgBackRest автоматически удаляет архивированные сегменты WAL при удалении устаревших резервных копий (по умолчанию WAL полных копий удаляется на основании параметра repo1-retention-full), для экономии дискового пространства может быть полезно удалять архив более активно. При хранении архива дифференциальных копий полные копии также считаются дифференциальными.
При удалении архива никогда не удаляются сегменты WAL, необходимые для согласованности резервной копии. Однако восстановление на определённый момент времени (PITR) возможно только при непрерывном потоке WAL, поэтому при агрессивном удалении архива вне обычного процесса удаления резервных копий следует соблюдать осторожность. Чтобы узнать, что будет удалено, ничего фактически не удаляя, можно передать в командной строке параметр dry-run команде expire.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-retention-diff
pg-primary ⇒ Создать дифференциальную резервную копию
pg-primary ⇒ Удалить устаревший архив
У дифференциальной копии 20261002-190648F_20261002-190652D есть архивированные сегменты WAL, которые необходимо сохранить для согласованности старых копий, хотя продвинуть их дальше с помощью PITR уже нельзя. Сегменты WAL, созданные после 20261002-190648F_20261002-190652D, но до 20261002-190648F_20261002-190654D, удаляются. Сегменты, созданные после новой копии 20261002-190648F_20261002-190654D, остаются и могут использоваться для PITR.
Поскольку при хранении архива дифференциальных копий полные копии считаются дифференциальными, если теперь создать полную копию с теми же настройками, для PITR останется только архив этой полной копии.
Восстановление
По умолчанию команда восстановления автоматически выбирает последнюю резервную копию из первого репозитория, в котором есть копии (см. Быстрый старт — Восстановление резервной копии
). Порядок проверки репозиториев определяется файлом pgbackrest.conf (например, repo1 проверяется раньше repo2). Для выбора конкретного репозитория можно передать --repo (например, --repo=1). Если нужна не последняя резервная копия, можно передать параметр --set.
При PITR с --type=time или --type=lsn целевое время или LSN необходимо указать с помощью параметра --target. Если --set не задан, настроенные репозитории проверяются по порядку: выбирается резервная копия, время завершения которой предшествует целевому времени или LSN завершения которой меньше либо равен целевому LSN. Если подходящая копия не найдена, pgBackRest выдаёт ошибку как для --type=time, так и для --type=lsn; перехода к последней резервной копии не происходит. Для других типов PITR, например xid, необходимо указать параметр --set, если цель предшествует последней резервной копии. Подробнее и с примерами см. Восстановление на заданный момент времени
.
В соответствии с рекомендацией PostgreSQL слоты репликации не включаются в резервную копию. Дополнительные сведения см. в разделе Резервное копирование каталога данных документации PostgreSQL.
В следующих разделах рассматриваются дополнительные возможности команды restore.
Владельцы файлов
Если restore выполняется от имени пользователя, отличного от root (обычный случай), все восстановленные файлы будут принадлежать пользователю и группе, от имени которых запущен pgBackRest. Если существующие файлы принадлежат другому пользователю или группе и сменить владельца на пользователя и группу процесса не удаётся, возникает ошибка. В этом случае перед повторной попыткой восстановления привилегированный пользователь должен изменить владельца файлов.
Если restore выполняется от имени root, pgBackRest пытается восстановить владельцев, записанных в манифест при создании резервной копии. В манифесте хранятся только имена пользователей и групп, поэтому на сервере восстановления должны существовать те же имена. Если имя пользователя или группы локально не найдено, используется пользователь или группа каталога данных PostgreSQL, а если их не удаётся сопоставить с именем — root.
Параметр delta
В разделе Восстановление резервной копии
главы Быстрый старт
перед выполнением restore требовалось очистить каталог кластера баз данных. Параметр delta позволяет pgBackRest автоматически определить, какие файлы в каталоге кластера можно сохранить, а какие нужно восстановить из резервной копии. Он также удаляет файлы, отсутствующие в манифесте копии, устраняя расходящиеся изменения. Для этого вычисляется криптографический хеш SHA-1
каждого файла в каталоге кластера. Если хеш SHA-1 не совпадает с хешем в резервной копии, файл восстанавливается. Эта операция очень эффективна в сочетании с параметром process-max. Поскольку на время восстановления сервер PostgreSQL остановлен, можно использовать больше процессов, чем было бы желательно при резервном копировании работающего сервера PostgreSQL.
pg-primary ⇒ Остановить демонстрационный кластер и выполнить дельта-восстановление
pg-primary ⇒ Перезапустить PostgreSQL
Восстановление выбранных баз данных
Иногда требуется выборочно восстановить отдельные базы данных из резервной копии кластера. Это может понадобиться для повышения производительности или для переноса выбранных баз на машину, где недостаточно места для восстановления всего кластера.
Для демонстрации этой возможности создаются две базы данных: test1 и test2.
pg-primary ⇒ Создать две тестовые базы данных
В каждой тестовой базе будут созданы таблицы и данные, чтобы показать, что восстановление работает и при выборочном восстановлении.
pg-primary ⇒ Создать тестовую таблицу в каждой базе данных
Создаётся новая резервная копия, чтобы pgBackRest получил сведения о новых базах данных.
pg-primary ⇒ Создать резервную копию
Одна из основных причин использовать выборочное восстановление — экономия места. Здесь показан размер базы test1, чтобы его можно было сравнить с расходом дискового пространства после выборочного восстановления.
pg-primary ⇒ Показать место, занимаемое базой test1
Если неизвестно, какую базу данных нужно восстановить, используйте параметр set команды info, чтобы узнать, какие базы входят в набор резервной копии.
pg-primary ⇒ Показать список баз данных в резервной копии
Остановите кластер и восстановите только базу test2. Встроенные базы (template0, template1 и postgres) восстанавливаются всегда.
ПРЕДУПРЕЖДЕНИЕ:
Если не указать --type=immediate, восстановление может завершиться ошибкой. Причина в том, что после достижения согласованности PostgreSQL считает обнулённые страницы ошибкой даже при записи полной страницы. В PostgreSQL ≥ 13 можно использовать настройку ignore_invalid_pages, чтобы игнорировать некорректные страницы. В этом случае после восстановления важно проверить журналы и убедиться, что сообщений о некорректных страницах в выбранных базах данных нет.
pg-primary ⇒ Восстановить последнюю резервную копию, включив только базу test2
После завершения восстановления база test2 будет содержать все ранее созданные таблицы и данные.
pg-primary ⇒ Продемонстрировать восстановление базы test2
База test1, несмотря на успешное восстановление, недоступна. Причина в том, что вся база была восстановлена в виде разреженных обнулённых файлов. PostgreSQL может успешно применить WAL к таким файлам, но база в целом будет некорректна, поскольку ключевые файлы не содержат данных. Это сделано намеренно, чтобы исключить случайное использование базы, которая может содержать лишь часть данных, применённых при воспроизведении WAL.
pg-primary ⇒ Попытка подключиться к базе test1 приведёт к ошибке
Поскольку база test1 восстанавливается в виде разреженных обнулённых файлов, она займёт лишь столько места, сколько WAL будет записано при восстановлении. Объём WAL, создаваемого во время резервного копирования и применяемого при восстановлении, может быть значительным, но обычно составляет небольшую долю полного размера базы, особенно для крупных баз, где эта возможность наиболее полезна.
Очевидно, что при выборочном восстановлении база test1 занимает гораздо меньше места, чем при полном восстановлении базы.
pg-primary ⇒ Показать место, занимаемое базой test1 после восстановления
На этом этапе единственное действие, которое можно выполнить с некорректной базой test1, — drop database. pgBackRest не удаляет базу автоматически, поскольку это невозможно до завершения восстановления и появления доступа к кластеру.
pg-primary ⇒ Удалить базу test1
После удаления некорректной базы test1 остаются только test2 и встроенные базы.
pg-primary ⇒ Показать оставшиеся базы данных
Восстановление на определённый момент времени
В разделе Восстановление резервной копии главы Быстрый старт использовалось восстановление по умолчанию — воспроизведение WAL до самого конца потока. При аппаратном сбое это обычно лучший вариант, но при повреждении данных, вызванном машиной или человеком, часто уместнее восстановление на определённый момент времени (PITR).
Восстановление на определённый момент времени (PITR) позволяет воспроизвести WAL из резервной копии до заданного LSN, времени, идентификатора транзакции или точки восстановления. В типичных сценариях восстановление по времени, пожалуй, наиболее полезно. Частый случай — восстановление случайно удалённой таблицы или данных. Восстановление удалённой таблицы нагляднее, поэтому здесь используется именно такой пример, но удалённые данные восстанавливаются точно так же.
pg-primary ⇒ Создать таблицу с очень важными данными
Важно задавать время так, как его понимает PostgreSQL, и включать смещение часового пояса. Это уменьшает вероятность нежелательного преобразования часовых поясов и неожиданного результата восстановления.
pg-primary ⇒ Получить время из PostgreSQL
Теперь, когда время записано, таблица удаляется. На практике определить точное время удаления таблицы гораздо труднее, чем в этом примере. Точное время может оказаться неизвестным, но некоторое исследование должно позволить достаточно близко его оценить.
pg-primary ⇒ Удалить важную таблицу
Если для восстановления выбрана неверная резервная копия, восстановление на нужный момент времени завершится неудачей. Для демонстрации создаётся новая инкрементная копия, в которой important_table уже отсутствует.
pg-primary ⇒ Создать инкрементную резервную копию
Восстановить потерянную таблицу из этой копии не получится, поскольку PostgreSQL может воспроизводить изменения только вперёд, но не назад.
pg-primary ⇒ Попытаться восстановить данные из неподходящей резервной копии
Надёжный способ — позволить pgBackRest автоматически выбрать копию, из которой возможно восстановление на целевой момент времени, то есть копию, завершившуюся до указанного времени.
ПРИМЕЧАНИЕ:
pgBackRest не может автоматически выбрать копию при типе восстановления xid или name.
pg-primary ⇒ Восстановить демонстрационный кластер на момент 2026-10-02 19:07:12.060959+00
pgBackRest сформировал настройки восстановления в postgresql.auto.conf, поэтому PostgreSQL можно запустить сразу. Через %f PostgreSQL указывает нужный сегмент WAL, а через %p — место, куда его следует скопировать. После того как PostgreSQL завершит восстановление, таблица снова будет существовать и к ней можно будет обращаться с запросами.
pg-primary ⇒ Запустить PostgreSQL и проверить наличие важной таблицы
Журнал PostgreSQL также содержит полезные сведения. В нём указаны время и транзакция, на которых остановилось восстановление, а также время последней применённой транзакции.
pg-primary ⇒ Просмотреть журнал PostgreSQL
Удаление stanza
Команда stanza-delete удаляет из репозитория данные, связанные со stanza.
ПРЕДУПРЕЖДЕНИЕ:
Используйте эту команду с осторожностью: она безвозвратно удаляет из репозитория pgBackRest все резервные копии и архивы указанной stanza.
Чтобы удалить stanza:
- Остановите кластер PostgreSQL, связанный со stanza (или используйте –force для обхода этого требования).
- Выполните команду
stopна сервере, где будет запущенаstanza-delete. - Выполните команду
stanza-delete.
После успешного завершения команды пользователь должен самостоятельно удалить stanza из всех файлов конфигурации pgBackRest и/или переменных среды.
За один раз stanza можно удалить только из одного репозитория. Чтобы удалить stanza из нескольких репозиториев, повторите команду stanza-delete для каждого из них, указав параметр --repo.
pg-primary ⇒ Остановить удаляемый кластер PostgreSQL
pg-primary ⇒ Остановить pgBackRest для stanza
pg-primary ⇒ Удалить stanza из одного репозитория
Несколько репозиториев
Можно настроить несколько репозиториев, как показано в разделе Поддержка S3 . Одно из возможных преимуществ — локальный репозиторий для быстрого восстановления и удалённый для избыточности.
Некоторые команды, например stanza-create
/stanza-upgrade
, автоматически работают со всеми настроенными репозиториями. Для других, например stanza-delete
, репозиторий нужно указать параметром repo.
Для обратной совместимости параметр repo не требуется, если настроен только repo1. Однако, если единственный репозиторий настроен, например, как repo2, параметр repo обязателен. Это позволяет избежать нарушения работы команд при последующем добавлении нового репозитория.
Команда archive-push всегда отправляет WAL в архивы всех настроенных репозиториев. Если один репозиторий недоступен, WAL всё равно отправляется в остальные. Однако для эффективной работы необходимо включить archive-async=y; иначе остальные репозитории смогут опередить недоступный лишь на один сегмент WAL. Также учтите: если WAL не удаётся отправить в какой-либо репозиторий, PostgreSQL не удалит его из каталога pg_wal, из-за чего на томе может закончиться место.
Для каждого репозитория нужно отдельно задать расписание резервного копирования. Во многих случаях это удобно, поскольку типы копий и сроки хранения различаются между репозиториями. Аналогично, при восстановлении необходимо указать репозиторий. Обычно для восстановления лучше выбирать репозиторий с низкой задержкой или стоимостью, даже если само восстановление займёт больше времени. Определить наиболее эффективный репозиторий можно только испытаниями восстановления.
Поддержка объектных хранилищ, совместимых с Azure
pgBackRest поддерживает размещение репозиториев в объектных хранилищах, совместимых с Azure. Контейнер для репозитория необходимо создать заранее: pgBackRest не создаёт его автоматически. Репозиторий можно разместить в корне контейнера (/), но обычно лучше использовать вложенный путь, чтобы в том же контейнере можно было хранить журналы объектного хранилища и другие данные без конфликтов.
ПРЕДУПРЕЖДЕНИЕ:
Не включайте «иерархическое пространство имён»: это приведёт к ошибкам при удалении устаревших копий.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить Azure
Для использования подписей общего доступа задайте параметру repo2-azure-key-type значение sas, а параметру repo2-azure-key — токен подписи общего доступа.
Команды выполняются точно так же, как если бы репозиторий находился на локальном диске.
pg-primary ⇒ Создать stanza
Создание файлов в Azure происходит относительно медленно, поэтому включение пакетирования файлов
повышает производительность backup/restore.
pg-primary ⇒ Создать резервную копию демонстрационного кластера
Поддержка объектных хранилищ, совместимых с S3
pgBackRest поддерживает размещение репозиториев в объектных хранилищах, совместимых с S3. Бакет для репозитория необходимо создать заранее: pgBackRest не создаёт его автоматически. Репозиторий можно разместить в корне бакета (/), но обычно лучше использовать вложенный путь, чтобы в том же бакете можно было хранить журналы объектного хранилища и другие данные без конфликтов.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить S3
ПРИМЕЧАНИЕ:
Регион и конечную точку необходимо настроить в соответствии с расположением бакета. Здесь приведены значения для региона us-east-1.
Для запуска pgBackRest следует создать роль, а права доступа к бакету следует максимально ограничить. Если роль связана с экземпляром AWS, при repo3-s3-key-type=auto pgBackRest автоматически получает временные учётные данные, поэтому явно задавать ключи в /etc/pgbackrest/pgbackrest.conf не требуется.
Этот пример политики Amazon S3 ограничивает все операции чтения и записи указанным бакетом и путём репозитория.
Команды выполняются точно так же, как если бы репозиторий находился на локальном диске.
pg-primary ⇒ Создать stanza
Создание файлов в S3 происходит относительно медленно, поэтому включение пакетирования файлов
повышает производительность backup/restore.
pg-primary ⇒ Создать резервную копию демонстрационного кластера
Поддержка SFTP
pgBackRest поддерживает размещение репозиториев на серверах SFTP. Передача файлов по SFTP относительно медленная, поэтому увеличение process-max для параллельной передачи файлов повышает производительность команд.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить SFTP
При использовании SFTP, если libssh2 собрана с OpenSSH, параметр repo4-sftp-public-key-file необязателен.
pg-primary ⇒ Создать пару ключей SSH для резервного копирования по SFTP
sftp-server ⇒ Скопировать открытый ключ pg-primary для резервного копирования по SFTP на sftp-server
Команды выполняются точно так же, как если бы репозиторий находился на локальном диске.
pg-primary ⇒ Добавить отпечаток sftp-server в файл known_hosts, поскольку значение repo4-sftp-host-key-check-type по умолчанию — «strict»
pg-primary ⇒ Создать stanza
pg-primary ⇒ Создать резервную копию демонстрационного кластера
Поддержка объектных хранилищ, совместимых с GCS
pgBackRest поддерживает размещение репозиториев в объектных хранилищах, совместимых с GCS. Бакет для репозитория необходимо создать заранее: pgBackRest не создаёт его автоматически. Репозиторий можно разместить в корне бакета (/), но обычно лучше использовать вложенный путь, чтобы в том же бакете можно было хранить журналы объектного хранилища и другие данные без конфликтов.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить GCS
При работе в GCE задайте repo5-gcs-key-type=auto, чтобы автоматически проходить аутентификацию через служебную учётную запись экземпляра.
Команды выполняются точно так же, как если бы репозиторий находился на локальном диске.
Создание файлов в GCS происходит относительно медленно, поэтому включение пакетирования файлов
повышает производительность backup/restore.
Целевое время репозитория
Целевое время определяет, на какой момент команды читают репозиторий в хранилище с поддержкой версий. Это позволяет прочитать состояние репозитория на определённый момент времени, чтобы восстановить данные, удалённые или повреждённые случайными действиями пользователя либо вредоносной программой.
Хранение версий поддерживается в S3, GCS и Azure, но обычно по умолчанию отключено. Помимо включения версий, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
При указании repo-target-time также необходимо передать параметр repo. Вероятно, не все типы репозиториев поддерживают версии, и в целом для восстановления имеет смысл выбирать один репозиторий.
Обратите внимание: временные метки хранилища сравниваются с указанной меткой по условию <=, а миллисекунды в переданной метке времени отбрасываются.
Для демонстрации этой возможности stanza demo удаляется из репозитория S3.
pg-primary ⇒ Удалить stanza из репозитория S3
После удаления stanza команда info покажет ошибочное состояние репозитория.
pg-primary ⇒ Ошибка при выполнении info
Однако, поскольку хранилище поддерживает версии, можно посмотреть состояние репозитория до удаления stanza. В зависимости от ситуации определить целевое время бывает непросто, но в данном случае момент удаления stanza можно установить по времени удаления backup.info.
pg-primary ⇒ Показать версии backup.info в бакете
Теперь можно выполнить команду info с целевым временем, чтобы увидеть репозиторий до удаления.
pg-primary ⇒ Выполнить info с целевым временем
Если команда info показывает нужную резервную копию, её можно восстановить с тем же целевым временем.
pg-primary ⇒ Выполнить восстановление с целевым временем
Выделенный сервер репозитория
Конфигурация, описанная в разделе Быстрый старт , подходит для простых установок, но в корпоративных средах обычно используют выделенный сервер репозитория для хранения резервных копий и файлов архива WAL. Так резервные копии и архив WAL отделены от сервера баз данных и меньше страдают при его отказе. При этом по-прежнему полезно применять обычное ПО резервного копирования для самого сервера репозитория.
На серверах PostgreSQL параметр pg1-path должен содержать путь к локальному кластеру PostgreSQL, а pg1-host задавать не следует. При настройке сервера репозитория в файле конфигурации pgbackrest необходимо задать pg-host для подключения к первичному и резервным серверам, если они есть. Сведения более чем об одном сервере PostgreSQL следует указывать только в конфигурации pgbackrest на сервере репозитория. Порядок не важен: например, pg1-path/pg1-host и pg2-path/pg2-host могут соответствовать как первичному, так и резервному серверу.
Установка
Для хранения резервных копий кластера создаётся новый сервер с именем repository.
ПРИМЕЧАНИЕ:
Версия pgBackRest на сервере репозитория должна в точности совпадать с версией на сервере PostgreSQL.
В качестве владельца репозитория pgBackRest создаётся пользователь pgbackrest. Владельцем может быть любой пользователь, но во избежание путаницы лучше не использовать postgres, если он существует.
ПРИМЕЧАНИЕ:
При установке pgBackRest из пакета может предоставляться конфигурация logrotate, например /etc/logrotate.d/pgbackrest, которая выполняет ротацию журналов от имени определённого пользователя через директиву su (например, su postgres postgres). Поскольку файлы в /var/log/pgbackrest принадлежат пользователю, запускающему pgBackRest (здесь pgbackrest), директиву su необходимо изменить так, чтобы она соответствовала этому пользователю, иначе logrotate завершится ошибкой прав доступа.
repository ⇒ Создать пользователя pgbackrest
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. При установке из пакета остальные инструкции этого раздела обычно не нужны, однако пакет может не создать какой-либо каталог или назначить неверные права доступа. В таком случае может потребоваться вручную создать каталоги или исправить права.
Пакеты pgBackRest для Debian/Ubuntu доступны на apt.postgresql.org .
Если для используемого дистрибутива или его версии нет пакетов, можно собрать программу из исходного кода , а затем установить её вручную, как показано ниже.
repository ⇒ Установить зависимости
repository ⇒ Скопировать исполняемый файл pgBackRest с сервера сборки
Для pgBackRest нужны каталоги журналов и конфигурации, а также файл конфигурации.
repository ⇒ Создать файл конфигурации и каталоги pgBackRest
repository ⇒ Создать репозиторий pgBackRest
Настройка SSH без пароля
pgBackRest может использовать SSH без пароля для обмена данными между серверами. Также можно использовать TLS; см. Настройка TLS .
repository ⇒ Создать пару ключей сервера repository
pg-primary ⇒ Создать пару ключей сервера pg-primary
Обменяйтесь ключами между repository и pg-primary.
repository ⇒ Скопировать открытый ключ pg-primary на repository
pg-primary ⇒ Скопировать открытый ключ repository на pg-primary
Проверьте возможность подключения с repository к pg-primary и в обратном направлении.
repository ⇒ Проверить подключение с repository к pg-primary
pg-primary ⇒ Проверить подключение с pg-primary к repository
ПРИМЕЧАНИЕ:
ssh настроен так, чтобы через ssh без пароля разрешался запуск только pgBackRest. Это повышает безопасность на случай захвата одной из служебных учётных записей.
Конфигурация
На сервере репозитория необходимо указать узел pg-primary, пользователя для подключения к нему и путь к базе данных. Первичный сервер будет настроен как pg1, чтобы позднее можно было добавить резервный.
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pg1-host/pg1-host-user и pg1-path
На сервере баз данных необходимо указать сервер и пользователя репозитория. Значение параметра repo1-host-user по умолчанию — pgbackrest. Если пользователь postgres выполняет восстановление на сервере репозитория, лучше не разрешать пользователю postgres также создавать резервные копии. Однако пользователь postgres может читать репозиторий непосредственно, если входит в ту же группу, что и пользователь pgbackrest.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-host/repo1-host-user
Настройка PostgreSQL описана в разделе Настройка архивирования .
Команды выполняются так же, как в конфигурации с одним сервером, за исключением того, что некоторые команды, например backup и expire, запускаются на сервере репозитория, а не на сервере баз данных.
Создание и проверка stanza
Создайте stanza в новом репозитории.
repository ⇒ Создать stanza
Проверьте правильность конфигурации и на сервере баз данных, и на сервере репозитория. Дополнительные сведения о команде check см. в разделе Проверка конфигурации
.
pg-primary ⇒ Проверить конфигурацию
repository ⇒ Проверить конфигурацию
Создание резервной копии
Чтобы создать резервную копию кластера PostgreSQL, запустите pgBackRest с командой backup на сервере репозитория.
repository ⇒ Создать резервную копию демонстрационного кластера
Поскольку на сервере репозитория был создан новый репозиторий, появилось предупреждение о замене инкрементного резервного копирования полным.
Восстановление резервной копии
Чтобы восстановить кластер PostgreSQL, запустите pgBackRest с командой restore на сервере баз данных.
pg-primary ⇒ Остановить демонстрационный кластер, восстановить его и перезапустить PostgreSQL
Параллельное резервное копирование и восстановление
pgBackRest поддерживает параллельную обработку для ускорения сжатия и передачи данных. Количество используемых процессов задаётся параметром --process-max.
Обычно для команды backup лучше использовать не более 25% доступных CPU. Резервное копирование не обязательно должно быть очень быстрым, если оно выполняется регулярно; по возможности следует избегать влияния этого процесса на производительность базы данных.
Для команды восстановления можно и следует использовать все доступные CPU, поскольку во время восстановления кластер PostgreSQL остановлен и на сервере обычно не выполняется другая важная работа. Если на сервере несколько кластеров, это следует учитывать при настройке параллелизма восстановления.
repository ⇒ Создать резервную копию одним процессом
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pgBackRest на использование нескольких процессов backup
repository ⇒ Создать резервную копию несколькими процессами
repository ⇒ Получить сведения о резервных копиях демонстрационного кластера
Использование нескольких процессов должно повысить производительность последнего резервного копирования. Для очень маленьких копий разница может быть незаметна, но с ростом базы данных будет увеличиваться и экономия времени.
Запуск и остановка
Если резервный сервер повышается до первичного для тестирования или тестовый кластер восстанавливается из резервной копии рабочей среды, полезно запретить этим кластерам запись в репозитории pgBackRest. Для этого служит команда stop.
Команда stop блокирует следующие команды записи: archive-push, backup, expire, stanza-create и stanza-upgrade. Исключение из этого правила — stanza-delete (подробности см. в разделе Удаление stanza
).
pg-primary ⇒ Запретить команды записи pgBackRest
Новые команды записи pgBackRest больше не будут запускаться.
repository ⇒ Попытаться создать резервную копию
Укажите --force, чтобы завершить уже работающие команды записи pgBackRest. Это относится и к асинхронному archive-get (хотя он снова запустится, если потребуется PostgreSQL). Если pgBackRest уже остановлен, повторная остановка выдаст предупреждение.
pg-primary ⇒ Повторно остановить службы pgBackRest
Снова разрешите команды записи pgBackRest командой start. Команды записи, выполнявшиеся до остановки, не возобновятся автоматически, но теперь их можно запускать.
pg-primary ⇒ Разрешить команды записи pgBackRest
Также можно остановить pgBackRest для отдельной stanza.
pg-primary ⇒ Запретить команды записи pgBackRest для stanza demo
Новые команды записи pgBackRest для указанной stanza больше не будут запускаться.
repository ⇒ Попытаться создать резервную копию
При разрешении команд записи pgBackRest для отдельной stanza её также необходимо указать.
pg-primary ⇒ Разрешить команды записи pgBackRest для stanza demo
Репликация
Репликация позволяет создать из одного первичного сервера несколько копий кластера PostgreSQL, называемых резервными серверами. Они полезны для распределения нагрузки чтения и обеспечения избыточности на случай отказа первичного сервера.
Установка
Для запуска резервного сервера создаётся новый узел с именем pg-standby.
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. При установке из пакета остальные инструкции этого раздела обычно не нужны, однако пакет может не создать какой-либо каталог или назначить неверные права доступа. В таком случае может потребоваться вручную создать каталоги или исправить права.
Пакеты pgBackRest для Debian/Ubuntu доступны на apt.postgresql.org .
Если для используемого дистрибутива или его версии нет пакетов, можно собрать программу из исходного кода , а затем установить её вручную, как показано ниже.
pg-standby ⇒ Установить зависимости
pg-standby ⇒ Скопировать исполняемый файл pgBackRest с сервера сборки
Для pgBackRest нужны каталоги журналов и конфигурации, а также файл конфигурации.
pg-standby ⇒ Создать файл конфигурации и каталоги pgBackRest
Настройка SSH без пароля
pgBackRest может использовать SSH без пароля для обмена данными между серверами. Также можно использовать TLS; см. Настройка TLS .
pg-standby ⇒ Создать пару ключей сервера pg-standby
Обменяйтесь ключами между repository и pg-standby.
repository ⇒ Скопировать открытый ключ pg-standby на repository
pg-standby ⇒ Скопировать открытый ключ repository на pg-standby
Проверьте возможность подключения с repository к pg-standby и в обратном направлении.
repository ⇒ Проверить подключение с repository к pg-standby
pg-standby ⇒ Проверить подключение с pg-standby к repository
Горячий резерв
Горячий резервный сервер выполняет репликацию через архив WAL и допускает запросы только для чтения.
Конфигурация pgBackRest почти такая же, как на pg-primary, но используется тип восстановления standby, чтобы кластер оставался в режиме восстановления после достижения конца потока WAL.
pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pgBackRest на резервном сервере
Чтобы создать файлы конфигурации PostgreSQL, необходимо создать демонстрационный кластер, хотя при восстановлении он будет перезаписан.
pg-standby ⇒ Создать демонстрационный кластер
Теперь резервный сервер можно создать командой restore.
ВАЖНО:
Если кластер планируется вывести из режима восстановления, не делая его новым первичным сервером (например, для отчётности или тестирования), отключите архивирование с помощью --archive-mode=off или настройки archive_mode=off в postgresql.conf. Если архивирование не отключить, в репозиторий может попасть посторонний WAL, затрудняющий восстановление.
pg-standby ⇒ Восстановить демонстрационный резервный кластер
Эта конфигурация рассчитана на случай, если резервный сервер будет повышен до первичного.
pg-standby:/etc/postgresql/17/demo/postgresql.conf ⇒ Настроить PostgreSQL
pg-standby ⇒ Запустить PostgreSQL
Журнал PostgreSQL содержит полезные сведения о восстановлении. В частности, обратите внимание на сообщения о том, что кластер перешёл в режим резервного сервера и готов принимать соединения только для чтения.
pg-standby ⇒ Проверить журнал PostgreSQL на наличие сообщений об успешном запуске
Простой способ проверить правильность настройки репликации — создать таблицу на pg-primary.
pg-primary ⇒ Создать новую таблицу на первичном сервере
Затем запросить ту же таблицу на pg-standby.
pg-standby ⇒ Запросить новую таблицу на резервном сервере
Что же пошло не так? Поскольку PostgreSQL получает сегменты WAL для репликации из архива, изменения не будут видны на резервном сервере, пока pg-primary не отправит в архив сегмент WAL, содержащий эти изменения.
Это можно сделать вручную вызовом pg_switch_wal(), который отправляет текущий сегмент WAL в архив (для последующих изменений создаётся новый сегмент WAL).
pg-primary ⇒ Вызвать pg_switch_wal()
Теперь после небольшой задержки таблица появится на pg-standby.
pg-standby ⇒ Теперь новая таблица есть на резервном сервере (может потребоваться несколько повторных попыток)
Проверьте конфигурацию доступа резервного сервера к репозиторию.
pg-standby ⇒ Проверить конфигурацию
Потоковая репликация
Потоковая репликация устанавливает прямое соединение с первичным сервером и применяет изменения сразу после их появления на нём, не полагаясь только на архив WAL. Это значительно уменьшает отставание резервного сервера от первичного.
Для потоковой репликации требуется пользователь с правом репликации.
pg-primary ⇒ Создать пользователя репликации
Файл pg_hba.conf необходимо изменить, чтобы разрешить резервному серверу подключаться от имени пользователя репликации. Обязательно замените IP-адрес ниже фактическим IP-адресом pg-standby. После изменения pg_hba.conf потребуется перечитать конфигурацию.
pg-primary ⇒ Создать запись pg_hba.conf для пользователя репликации
Резервный сервер должен знать, как подключиться к первичному, поэтому в pgBackRest будет настроен параметр primary_conninfo.
pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ Задать primary_conninfo
Пароль можно указать в primary_conninfo, но использование файла .pgpass гибче и безопаснее.
pg-standby ⇒ Задать пароль репликации в файле .pgpass.
Теперь резервный сервер можно создать командой restore.
pg-standby ⇒ Остановить PostgreSQL и восстановить демонстрационный резервный кластер
ПРИМЕЧАНИЕ:
Настройка primary_conninfo записана в файл postgresql.auto.conf, поскольку в pgbackrest.conf она задана как recovery-option. Если требуется сохранить существующий файл postgresql.auto.conf, с командой restore можно использовать параметр --type=preserve.
pg-standby ⇒ Запустить PostgreSQL
Журнал PostgreSQL подтвердит запуск потоковой репликации.
pg-standby ⇒ Проверить журнал PostgreSQL на наличие сообщений об успешном запуске
Теперь таблица, созданная на pg-primary, быстро появится на pg-standby без необходимости вызывать pg_switch_wal().
pg-primary ⇒ Создать новую таблицу на первичном сервере
pg-standby ⇒ Запросить таблицу на резервном сервере
Несколько stanza
pgBackRest поддерживает несколько stanza. Чаще всего несколько stanza используют общий сервер репозитория.
Установка
Для запуска нового первичного сервера создаётся узел с именем pg-alt.
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. При установке из пакета остальные инструкции этого раздела обычно не нужны, однако пакет может не создать какой-либо каталог или назначить неверные права доступа. В таком случае может потребоваться вручную создать каталоги или исправить права.
Пакеты pgBackRest для Debian/Ubuntu доступны на apt.postgresql.org .
Если для используемого дистрибутива или его версии нет пакетов, можно собрать программу из исходного кода , а затем установить её вручную, как показано ниже.
pg-alt ⇒ Установить зависимости
pg-alt ⇒ Скопировать исполняемый файл pgBackRest с сервера сборки
Для pgBackRest нужны каталоги журналов и конфигурации, а также файл конфигурации.
pg-alt ⇒ Создать файл конфигурации и каталоги pgBackRest
Настройка SSH без пароля
pgBackRest может использовать SSH без пароля для обмена данными между серверами. Также можно использовать TLS; см. Настройка TLS .
pg-alt ⇒ Создать пару ключей сервера pg-alt
Обменяйтесь ключами между repository и pg-alt.
repository ⇒ Скопировать открытый ключ pg-alt на repository
pg-alt ⇒ Скопировать открытый ключ repository на pg-alt
Проверьте возможность подключения с repository к pg-alt и в обратном направлении.
repository ⇒ Проверить подключение с repository к pg-alt
pg-alt ⇒ Проверить подключение с pg-alt к repository
Конфигурация
Конфигурация pgBackRest почти идентична конфигурации pg-primary, но используется stanza demo-alt, чтобы резервные копии и архив хранились отдельно.
pg-alt:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pgBackRest на новом первичном сервере
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pg1-host/pg1-host-user и pg1-path
Создание демонстрационного кластера
pg-alt ⇒ Создать демонстрационный кластер
pg-alt:/etc/postgresql/17/demo/postgresql.conf ⇒ Настроить параметры PostgreSQL
pg-alt ⇒ Запустить демонстрационный кластер
Создание stanza и проверка конфигурации
Для инициализации stanza необходимо выполнить команду stanza-create. После stanza-create рекомендуется выполнить check, чтобы убедиться в правильной настройке архивирования и резервного копирования.
pg-alt ⇒ Создать stanza и проверить конфигурацию
Если команда check запускается на сервере репозитория, проверяются все stanza.
repository ⇒ Проверить конфигурацию всех stanza
Асинхронное архивирование
Асинхронное архивирование включается параметром archive-async. Он включает асинхронную работу обеих команд: archive-push и archive-get.
Необходим каталог очереди. Команды хранят в нём временные данные, но работают с ним существенно по-разному, поэтому использование каталога очереди подробно описано в соответствующих разделах.
pg-primary ⇒ Создать каталог очереди
pg-standby ⇒ Создать каталог очереди
Необходимо настроить каталог очереди и включить асинхронное архивирование. Само по себе асинхронное архивирование даёт некоторое преимущество за счёт уменьшения количества соединений с удалённым хранилищем, а настройка process-max может значительно повысить производительность благодаря параллельному выполнению операций. Не задавайте process-max настолько большим, чтобы это влияло на обычную работу базы данных.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить каталог очереди и асинхронное архивирование
pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить каталог очереди и асинхронное архивирование
ПРИМЕЧАНИЕ:
process-max задаётся в секциях команд, чтобы этот параметр не применялся к резервному копированию и восстановлению. Это также позволяет задать разные значения для archive-push и archive-get.
Для демонстрации потоковая репликация будет нарушена, чтобы PostgreSQL получал WAL через restore_command.
pg-primary ⇒ Нарушить потоковую репликацию, изменив пароль репликации
pg-standby ⇒ Перезапустить резервный сервер, чтобы разорвать соединение
Отправка в архив
Асинхронная команда archive-push передаёт архивирование WAL отдельному процессу или процессам для повышения пропускной способности. Она «заглядывает вперёд» и находит сегменты WAL, готовые к архивированию помимо того, который PostgreSQL сейчас запрашивает через archive_command. Сегменты WAL передаются в архив непосредственно из каталога pg_xlog/pg_wal, а archive_command сообщает об успехе только после того, как сегмент WAL надёжно сохранён в архиве.
Каталог очереди содержит текущее состояние архивирования WAL. Записываемые в него файлы состояния обычно имеют нулевую длину и должны занимать минимум места (не более нескольких МБ) и создавать очень небольшую нагрузку ввода-вывода. Все сведения в этом каталоге можно воссоздать, поэтому при переносе кластера на другое оборудование сохранять каталог очереди не требуется.
ВАЖНО:
В первоначальной реализации асинхронного архивирования сегменты WAL копировались в каталог очереди перед сжатием и передачей. Новая реализация копирует WAL непосредственно из каталога pg_xlog. Если асинхронное архивирование использовалось в v1.12 или более ранней версии, перед обновлением внимательно прочитайте примечания к выпуску v1.13.
Файл [stanza]-archive-push-async.log позволяет отслеживать работу асинхронного процесса. Удобный способ проверки — быстро отправить несколько сегментов WAL.
pg-primary ⇒ Проверить параллельное асинхронное архивирование
Теперь файл журнала будет содержать записи о параллельной асинхронной работе.
pg-primary ⇒ Проверить результаты в журнале
Получение из архива
Асинхронная команда archive-get поддерживает локальную очередь WAL для повышения пропускной способности. Если сегмента WAL нет в очереди, он извлекается из репозитория вместе с достаточным количеством последовательных сегментов WAL для заполнения очереди. Максимальный размер очереди задаётся параметром archive-get-queue-max. Когда очередь заполнена менее чем наполовину, для её заполнения извлекаются дополнительные сегменты WAL.
Асинхронная работа наиболее полезна в средах с большим объёмом генерируемого WAL или высокой задержкой соединения с хранилищем репозитория (например, S3 или другим объектным хранилищем). При высокой задержке соединения может быть полезно увеличить process-max.
Файл [stanza]-archive-get-async.log позволяет отслеживать работу асинхронного процесса.
pg-standby ⇒ Проверить результаты в журнале
pg-primary ⇒ Восстановить потоковую репликацию, изменив пароль репликации
Резервное копирование с резервного сервера
pgBackRest может выполнять резервное копирование с резервного сервера вместо первичного. Для этого необходимо настроить сервер pg-standby и включить параметр backup-standby. Если настроено несколько резервных серверов, для резервного копирования используется первый найденный работающий резервный сервер.
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pg2-host/pg2-host-user и pg2-path
Для резервного копирования необходимы и первичная, и резервная базы данных, хотя подавляющее большинство файлов копируется с резервного сервера, чтобы снизить нагрузку на первичный. Серверы баз данных можно настроить в любом порядке. pgBackRest автоматически определит, какой сервер первичный, а какой резервный.
repository ⇒ Создать резервную копию демонстрационного кластера с pg2
Эта инкрементная копия показывает, что большинство файлов копируется с сервера pg-standby и только несколько — с pg-primary.
pgBackRest создаёт с резервного сервера копию, идентичную копии с первичного. Для этого он запускает и завершает резервное копирование на pg-primary, копирует с pg-standby только реплицируемые файлы, а затем копирует немногочисленные оставшиеся файлы с pg-primary. Поэтому резервная копия включает журналы и статистику первичной базы данных.
Обновление PostgreSQL
Сразу после обновления PostgreSQL до новой основной версии во всех конфигурациях pgBackRest необходимо изменить pg-path на новое расположение базы данных и выполнить команду stanza-upgrade. Если на сервере настроено несколько репозиториев, stanza обновляется в каждом из них. Если база данных остановлена, используйте параметр --no-online.
Следующие инструкции не являются полным руководством по обновлению PostgreSQL: они описывают общий порядок обновления первичного и резервного серверов, чтобы показать необходимые шаги перенастройки pgBackRest. Перед обновлением рекомендуется создать резервную копию.
pg-primary ⇒ Остановить старый кластер
Остановите старый кластер на резервном сервере: он будет восстановлен из только что обновлённого кластера.
pg-standby ⇒ Остановить старый кластер
Создайте новый кластер и выполните обновление.
pg-primary ⇒ Создать новый кластер и выполнить обновление
Настройте параметры и порт нового кластера.
pg-primary:/etc/postgresql/18/demo/postgresql.conf ⇒ Настроить PostgreSQL
Обновите конфигурацию pgBackRest на всех системах, указав новый кластер.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Обновить pg1-path
pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ Обновить pg-path
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Обновить pg1-path и pg2-path, отключить резервное копирование с резервного сервера
pg-primary ⇒ Скопировать конфигурацию hba
Перед запуском нового кластера необходимо выполнить команду stanza-upgrade.
pg-primary ⇒ Обновить stanza
Запустите новый кластер и убедитесь в успешной установке.
pg-primary ⇒ Запустить новый кластер
Проверьте конфигурацию командой check.
pg-primary ⇒ Проверить конфигурацию
Удалите старый кластер.
pg-primary ⇒ Удалить старый кластер
Установите исполняемые файлы новой версии PostgreSQL на резервном сервере и создайте кластер.
pg-standby ⇒ Удалить старый кластер и создать новый
Выполните check на сервере репозитория. Предупреждение о недоступности резервного сервера ожидаемо, поскольку резервный кластер остановлен. Эта команда показывает, что сервер репозитория располагает сведениями о резервном сервере и правильно настроен для работы с первичным.
repository ⇒ Проверить конфигурацию
Создайте полную резервную копию нового кластера, а затем восстановите из неё резервный сервер. Если запрошен тип incr или diff, он автоматически изменится на full.
repository ⇒ Создать полную резервную копию
pg-standby ⇒ Восстановить демонстрационный резервный кластер
pg-standby ⇒ Запустить PostgreSQL и проверить конфигурацию pgBackRest
После восстановления резервного сервера можно включить резервное копирование с него.
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Снова включить резервное копирование с резервного сервера
3 - Руководство пользователя (RHEL)
Введение
Это руководство следует читать последовательно от начала до конца: каждый раздел опирается на предыдущий. Например, раздел Восстановление предполагает настройку, выполненную в разделе Быстрый старт . После установки и запуска pgBackRest можно переходить между разделами, но при первом знакомстве рекомендуется пройти руководство по порядку.
Хотя примеры в этом руководстве рассчитаны на RHEL и PostgreSQL 14, их должно быть довольно легко адаптировать к любому дистрибутиву Unix и любой версии PostgreSQL. От ОС зависят только команды создания, запуска, остановки и удаления кластеров PostgreSQL. Команды pgBackRest одинаковы во всех системах Unix, хотя расположение исполняемого файла может различаться. pgBackRest стремится работать одинаково с разными версиями PostgreSQL, однако между ними есть небольшие различия, которые могут проявляться в отдельных примерах этого руководства, например в путях, именах файлов и настройках PostgreSQL.
Сведения о настройке и документация PostgreSQL доступны в руководстве PostgreSQL .
При подготовке этого руководства используется несколько необычный подход. При сборке документации из исходных XML-файлов каждая команда выполняется на виртуальной машине. Это позволяет с высокой уверенностью утверждать, что команды корректно работают в указанном порядке. При необходимости вывод сохраняется и показывается под командой. Если вывод отсутствует, он был сочтён несущественным или отвлекающим от изложения.
Все команды рассчитаны на выполнение непривилегированным пользователем с правами sudo для пользователей root и postgres. Команды также можно без изменений выполнять непосредственно от имени соответствующих пользователей; в этом случае префиксы sudo можно убрать.
Основные понятия
Ниже приведены определения понятий в контексте pgBackRest, PostgreSQL и этого руководства.
Резервная копия
Резервная копия — это согласованная копия кластера баз данных, которую можно восстановить после аппаратного сбоя, для возврата к определённому моменту времени или для запуска нового резервного сервера.
Полная резервная копия: pgBackRest копирует в резервную копию всё содержимое кластера баз данных. Первая резервная копия кластера всегда является полной. pgBackRest всегда может восстановить полную резервную копию непосредственно. Её согласованность не зависит от файлов за пределами самой полной резервной копии.
Дифференциальная резервная копия: pgBackRest копирует только те файлы кластера баз данных, которые изменились с момента последней полной резервной копии. При восстановлении дифференциальной резервной копии pgBackRest копирует все файлы выбранной дифференциальной копии и соответствующие неизменившиеся файлы предыдущей полной копии. Преимущество дифференциальной копии в том, что она занимает меньше места, чем полная, однако для её восстановления должны быть исправны как дифференциальная, так и полная резервная копия.
Инкрементная резервная копия: pgBackRest копирует только те файлы кластера баз данных, которые изменились с момента последней резервной копии (другой инкрементной, дифференциальной или полной). Поскольку инкрементная копия включает лишь файлы, изменившиеся после предыдущей копии, она обычно значительно меньше полной или дифференциальной. Как и в случае дифференциальной копии, восстановление инкрементной копии зависит от исправности других резервных копий. Поскольку инкрементная копия содержит только файлы, изменившиеся после последней копии, для её восстановления должны быть исправны все предшествующие инкрементные копии вплоть до предыдущей дифференциальной, сама эта дифференциальная копия и предшествующая полная копия. Если дифференциальной копии нет, должны быть исправны все предшествующие инкрементные копии вплоть до предыдущей полной копии, наличие которой обязательно, а также сама полная копия.
Восстановление
Восстановление — это копирование резервной копии в систему, где она будет запущена как рабочий кластер баз данных. Для корректного восстановления нужны файлы резервной копии и один или несколько сегментов WAL.
Журнал предзаписи (WAL)
WAL — механизм, с помощью которого PostgreSQL гарантирует сохранность зафиксированных изменений. Транзакции последовательно записываются в WAL; транзакция считается зафиксированной после того, как эти записи сброшены на диск. Затем фоновый процесс записывает изменения в основные файлы кластера баз данных (также называемые кучей). После аварийного завершения WAL воспроизводится, чтобы привести базу данных в согласованное состояние.
Концептуально WAL бесконечен, но на практике он разбит на отдельные файлы размером 16MB, называемые сегментами. Имена сегментов WAL имеют вид 0000000100000A1E000000FE: первые 8 шестнадцатеричных цифр обозначают временную шкалу, а следующие 16 — логический порядковый номер (LSN).
Шифрование
Шифрование — это преобразование данных в формат, который невозможно распознать без соответствующего пароля (также называемого парольной фразой).
pgBackRest шифрует репозиторий с использованием пароля, заданного пользователем, предотвращая несанкционированный доступ к хранящимся в нём данным.
Обновление pgBackRest
Обновление pgBackRest с v2.x до v2.y
Обновление с v2.x до v2.y несложно. Формат репозитория не изменился, поэтому в большинстве установок достаточно установить исполняемые файлы новой версии. Понижение версии также возможно, если не использовались новые функции, которые не поддерживаются старой версией.
ВАЖНО:
Локальная и удалённая версии pgBackRest должны в точности совпадать, поэтому их следует обновлять одновременно. При несовпадении версий архивирование WAL и резервное копирование не будут работать, пока версии не совпадут. В этом случае выводится ошибка: [ProtocolError] expected value '2.x' for greeting key 'version' but got '2.y'.
Сборка
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. Дополнительные сведения о пакетах приведены в разделе Установка .
Сборку из исходного кода лучше выполнять на отдельном сервере сборки, а не в рабочей среде. Многие необходимые для сборки инструменты обычно не следует устанавливать в рабочей среде. pgBackRest состоит из одного исполняемого файла, поэтому после сборки его легко скопировать на другой сервер.
build ⇒ Загрузить pgBackRest версии 2.59.3 в каталог /build
build ⇒ Установить зависимости для сборки
build ⇒ Настроить и скомпилировать pgBackRest
build ⇒ При необходимости запустить базовые тесты, чтобы проверить правильность сборки pgBackRest
Установка
Для демонстрационного кластера и выполнения примеров pgBackRest создаётся новый сервер с именем pg-primary.
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. При установке из пакета остальные инструкции этого раздела обычно не нужны, однако пакет может не создать какой-либо каталог или назначить неверные права доступа. В таком случае может потребоваться вручную создать каталоги или исправить права.
Пакеты pgBackRest для RHEL доступны на yum.postgresql.org .
Если для используемого дистрибутива или его версии нет пакетов, можно собрать программу из исходного кода , а затем установить её вручную, как показано ниже.
pg-primary ⇒ Установить зависимости
pg-primary ⇒ Скопировать исполняемый файл pgBackRest с сервера сборки
Для pgBackRest нужны каталоги журналов и конфигурации, а также файл конфигурации.
pg-primary ⇒ Создать файл конфигурации и каталоги pgBackRest
Теперь pgBackRest должен быть установлен правильно, но лучше это проверить. Если какие-либо зависимости пропущены, при запуске pgBackRest из командной строки возникнет ошибка.
pg-primary ⇒ Убедиться в успешной установке
Быстрый старт
В разделе «Быстрый старт» рассматривается базовая настройка pgBackRest и PostgreSQL, а также команды backup, restore и info.
Создание демонстрационного кластера
Создавать демонстрационный кластер необязательно, но настоятельно рекомендуется, особенно новым пользователям: команды в примерах этого руководства обращаются именно к нему. Предполагается, что демонстрационный кластер работает на порту по умолчанию (5432). Кластер будет запущен в одном из следующих разделов, поскольку сначала нужно завершить настройку.
pg-primary ⇒ Создать демонстрационный кластер
По умолчанию RHEL включает день недели в имя файла журнала. Это несколько усложняет руководство, поэтому для log_filename задаётся постоянное значение.
pg-primary:/var/lib/pgsql/14/data/postgresql.conf ⇒ Задать log_filename
Настройка stanza кластера
Stanza — это конфигурация кластера баз данных PostgreSQL, определяющая его расположение, способ резервного копирования, параметры архивирования и т. д. На большинстве серверов баз данных работает только один кластер PostgreSQL, поэтому достаточно одной stanza. На серверах резервного копирования требуется отдельная stanza для каждого кластера, резервные копии которого нужно создавать.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных этого кластера. Поскольку имя stanza будет использоваться для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, например main или prod.
Имя «demo» точно отражает назначение этого кластера, поэтому подходит и в качестве имени stanza.
pgBackRest должен знать расположение основного каталога данных кластера PostgreSQL. Путь можно запросить непосредственно у PostgreSQL, но при восстановлении процесс PostgreSQL будет недоступен. Во время резервного копирования значение, переданное pgBackRest, сравнивается с путём, который использует работающий PostgreSQL: они должны совпадать, иначе резервное копирование завершится ошибкой. Убедитесь, что pg-path в точности совпадает с data_directory, возвращаемым PostgreSQL.
По умолчанию RHEL хранит кластеры в /var/lib/pgsql/[version]/data, поэтому правильный путь к каталогу данных определить легко.
При создании файла /etc/pgbackrest/pgbackrest.conf владелец базы данных (обычно postgres) должен получить права на его чтение.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить каталог данных кластера PostgreSQL
Файлы конфигурации pgBackRest используют формат, похожий на INI в Windows. Секции обозначаются текстом в квадратных скобках, каждая секция содержит пары ключ/значение. Строки, начинающиеся с #, игнорируются и могут использоваться как комментарии, но комментарии после значения в той же строке не поддерживаются. Кавычки не поддерживаются, пробельные символы по краям ключей и значений удаляются. Повторно встречающиеся секции объединяются.
Файлы конфигурации pgBackRest могут загружаться несколькими способами:
configиconfig-include-pathимеют значения по умолчанию: загружается файл конфигурации по умолчанию, если он существует, затем добавляются файлы*.confиз каталога включаемой конфигурации по умолчанию, если они существуют.- Указан параметр
config: загружается только указанный файл конфигурации; он должен существовать. - Указан
config-include-path: загружаются файлы*.confиз каталога включаемой конфигурации; сам каталог должен существовать. Файл конфигурации по умолчанию загружается, если он существует. Чтобы загрузить только файлы из указанного каталога включаемой конфигурации, можно также передать параметр--no-config. - Указаны
configиconfig-include-path: используются заданные пользователем значения; загружается файл конфигурации, затем добавляются файлы*.confиз каталога включаемой конфигурации. Файлы должны существовать. - Указан
config-path: эта настройка переопределяет базовый путь к файлу конфигурации по умолчанию и/или базовый путь настройки config-include-path по умолчанию, если параметры config и/или config-include-path не заданы явно.
Файлы объединяются так, как если бы это был один большой файл, причём каждый файл должен быть корректен сам по себе. Поэтому в каждом файле необходимо указывать секции, в которых должны храниться пары ключ/значение. Порядок не важен, но приоритет зависит от секции. Приоритет от высшего к низшему:
- [stanza:command]
- [stanza]
- [global:command]
- [global]
ПРИМЕЧАНИЕ:
--config, --config-include-path и --config-path доступны только в командной строке.
pgBackRest также можно настраивать через переменные среды (пример ниже); эти переменные действуют для таких команд, как backup , restore и archive-push .
pg-primary ⇒ Настроить log-path через переменную среды
Создание репозитория
Репозиторий — место, где pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить необходимое место может быть непросто. Лучше всего создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за сутки. Это даст общее представление о требуемом месте, хотя со временем требования, скорее всего, будут меняться по мере развития базы данных.
В этом примере репозиторий будет храниться на том же сервере, что и PostgreSQL. Это простейшая конфигурация; она полезна, когда для резервного копирования сервера баз данных используется обычное ПО резервного копирования.
pg-primary ⇒ Создать репозиторий pgBackRest
Путь к репозиторию необходимо настроить, чтобы pgBackRest знал, где его искать.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить путь к репозиторию pgBackRest
Можно настроить и несколько репозиториев. Подробности см. в разделе Несколько репозиториев .
Настройка архивирования
Для резервного копирования работающего кластера PostgreSQL должно быть включено архивирование WAL. Через %p PostgreSQL указывает расположение сегмента WAL, который нужно архивировать. Обратите внимание: в ходе резервного копирования создаётся как минимум один сегмент WAL, даже если в кластер явно ничего не записывается.
pg-primary:/var/lib/pgsql/14/data/postgresql.conf ⇒ Настроить параметры архивирования
После внесения этих изменений и перед резервным копированием кластер PostgreSQL необходимо перезапустить.
pg-primary ⇒ Перезапустить демонстрационный кластер
Настройка hot_standby включена по умолчанию; её следует оставлять включённой на всех кластерах. В дальнейшем любой кластер может быть восстановлен как резервный, например первичный сервер, заново созданный в качестве резервного после переключения при отказе. Без этой настройки резервный сервер не принимает соединения для чтения.
Если ожидается, что архивирование сегмента WAL в репозиторий pgBackRest займёт более 60 секунд (значение по умолчанию), следует увеличить параметр pgBackRest archive-timeout. Это не то же самое, что параметр PostgreSQL archive_timeout, который принудительно переключает сегмент WAL и полезен для баз данных с длительными периодами отсутствия активности. Дополнительные сведения о параметре PostgreSQL archive_timeout см. в разделе Журнал предзаписи
документации PostgreSQL.
Для команды archive-push можно задать отдельные параметры. Например, меньший уровень сжатия может ускорить архивирование, не влияя на сжатие резервных копий.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить archive-push на меньший уровень сжатия
Этот способ настройки применим к любой команде и даже к конкретной stanza, например demo:archive-push.
Настройка срока хранения
pgBackRest удаляет устаревшие резервные копии на основании параметров срока хранения.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить хранение 2 полных резервных копий
Дополнительные сведения приведены в разделе Срок хранения .
Настройка шифрования репозитория
Для демонстрации шифрования в репозитории будут настроены тип шифра и ключ. Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3 или другое объектное хранилище) поддерживает шифрование.
В качестве ключа шифрования важно использовать длинную случайную парольную фразу. Подходящий способ её создания — команда openssl rand -base64 48.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить шифрование репозитория pgBackRest
ПРИМЕЧАНИЕ:
Выше настройки шифрования размещены в секции [global], чтобы команда info могла читать все stanza. Без параметра stanza команда info читает настройки шифрования только из секции [global], поэтому при настройке шифрования для отдельных stanza для чтения зашифрованной stanza требуется параметр stanza.
После настройки репозитория, создания и проверки stanza изменить настройки шифрования репозитория нельзя.
Создание stanza
Для инициализации stanza необходимо выполнить команду stanza-create. После stanza-create рекомендуется выполнить check, чтобы убедиться в правильной настройке архивирования и резервного копирования.
pg-primary ⇒ Создать stanza и проверить конфигурацию
Проверка конфигурации
Команда check проверяет, правильно ли настроены pgBackRest и параметр archive_command для архивирования и резервного копирования указанной stanza. Она попытается проверить все репозитории и базы данных, настроенные для сервера, на котором выполняется. Команда выявляет ошибки конфигурации, особенно архивирования, из-за которых резервные копии оказываются неполными, поскольку необходимые сегменты WAL не попали в архив. Команду можно выполнять на сервере PostgreSQL или сервере репозитория. Её также можно выполнять на резервном сервере, однако, поскольку на нём нельзя вызвать pg_switch_xlog()/pg_switch_wal(), в этом случае проверяется только конфигурация репозитория.
Обратите внимание: для принудительного архивирования сегмента WAL в PostgreSQL вызываются pg_create_restore_point('pgBackRest Archive Check') и pg_switch_xlog()/pg_switch_wal().
pg-primary ⇒ Проверить конфигурацию
Настройка производительности
В pgBackRest есть ряд параметров производительности, которые по умолчанию отключены для сохранения обратной совместимости репозитория. Однако при создании нового репозитория рекомендуется использовать следующие параметры. Их можно применять и к существующему репозиторию, но тогда старые версии pgBackRest не смогут его читать. Эта несовместимость зависит от версии, в которой появилась функция, как указано в списке ниже.
compress-type— определяет алгоритм сжатия для командbackupиarchive-push. По умолчанию используетсяgz(Gzip), но рекомендуетсяzst(Zstandard): он гораздо быстрее и обеспечивает степень сжатия, близкую кgz. Значениеzstподдерживается параметромcompress-typeначиная с v2.27 . Подробности см. в разделе Тип сжатия .repo-bundle— объединяет небольшие файлы при резервном копировании, экономя место и ускоряя командыbackupиrestore, особенно в объектных хранилищах, таких как S3. Параметрrepo-bundleпоявился в v2.39 . Подробности см. в разделе Пакетирование файлов .repo-block— при резервном копированииdiff/incrкомандойbackupсохраняет только изменившиеся части файлов, а не файлы целиком. Это экономит место и ускоряетbackup. Параметрrepo-blockпоявился в v2.46 , но рекомендуется как минимум v2.52.1 . Подробности см. в разделе Блочное инкрементное копирование .
Есть и другие параметры производительности, отключённые по умолчанию, поскольку они требуют дополнительной настройки или значение по умолчанию безопасно, но не оптимально. Эти параметры доступны во всех версиях pgBackRest v2.
process-max— определяет количество процессов, используемых командами. Значение по умолчанию — 1, и оно почти никогда не является подходящим. Каждая команда используетprocess-maxпо-своему; подробности см. в документации соответствующей команды.archive-async— архивирует файлы WAL в репозиторий пакетами, что значительно ускоряет архивирование. По умолчанию отключён, поскольку требует создания каталога очереди. Подробности см. в разделе Асинхронное архивирование .backup-standby— выполняет резервное копирование с резервного сервера вместо первичного, снижая нагрузку на первичный сервер. По умолчанию отключён, поскольку требует дополнительной настройки и наличия одного или нескольких резервных серверов. Подробности см. в разделе Резервное копирование с резервного сервера .
Создание резервной копии
По умолчанию pgBackRest перед началом резервного копирования ждёт следующей плановой контрольной точки. В зависимости от настроек checkpoint_timeout и checkpoint_segments в PostgreSQL до завершения контрольной точки и начала резервного копирования может пройти немало времени. Обычно лучше задать start-fast=y, чтобы резервное копирование начиналось сразу. Это принудительно создаёт контрольную точку, но, поскольку резервные копии обычно создаются раз в сутки, дополнительная контрольная точка не должна заметно влиять на производительность. Однако на очень нагруженных кластерах может быть лучше передавать --start-fast в командной строке по мере необходимости.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить быстрый запуск резервного копирования
Чтобы создать резервную копию кластера PostgreSQL, запустите pgBackRest с командой backup.
pg-primary ⇒ Создать резервную копию демонстрационного кластера
По умолчанию pgBackRest пытается создать инкрементную резервную копию. Однако инкрементная копия должна опираться на полную, а поскольку полной копии ещё не было, pgBackRest создал полную копию.
Параметр type позволяет явно указать полное или дифференциальное резервное копирование.
pg-primary ⇒ Создать дифференциальную резервную копию демонстрационного кластера
На этот раз предупреждения не было, поскольку полная резервная копия уже существовала. Инкрементные копии могут опираться на полную или дифференциальную копию, а дифференциальные должны опираться на полную. Для создания полной копии выполните команду backup с --type=full.
Во время резервного копирования работающего кластера pgBackRest ожидает архивирования сегментов WAL, необходимых для согласованности резервной копии. Время ожидания задаётся параметром pgBackRest archive-timeout, значение которого по умолчанию составляет 60 секунд. Если известно, что архивирование отдельного сегмента занимает больше времени, этот параметр следует увеличить.
Планирование резервного копирования
Резервное копирование можно запускать по расписанию с помощью таких утилит, как cron.
В следующем примере настроены два задания cron: полное резервное копирование каждое воскресенье в 6:30 утра и дифференциальное в 6:30 утра с понедельника по субботу. Если этот crontab устанавливается впервые посреди недели, при первом запуске задания дифференциального копирования pgBackRest создаст полную копию, а на следующий день — дифференциальную.
После настройки расписания важно настроить срок хранения, чтобы устаревшие копии регулярно удалялись; см. раздел Срок хранения .
Сведения о резервных копиях
Для получения сведений о резервных копиях используйте команду info.
pg-primary ⇒ Получить сведения о демонстрационном кластере
Команда info работает с одной stanza или со всеми stanza. По умолчанию используется текстовый вывод, который содержит удобную для чтения сводку резервных копий запрошенных stanza. Этот формат может измениться в любом выпуске.
Для машиночитаемого вывода используйте --output=json. Вывод JSON содержит намного больше сведений, чем текстовый, и остаётся стабильным, если только не обнаружена ошибка.
Чтобы ускорить выполнение, ограничьте вывод сведениями о ходе выполнения, указав --detail-level=progress. При этом пропускаются все проверки, кроме проверки доступности stanza.
Для каждой stanza выводится отдельный раздел; параметром --stanza можно ограничить вывод одной stanza. Поле «status» кратко отражает состояние stanza. Значение «ok» означает, что pgBackRest работает нормально. При наличии нескольких репозиториев статус «mixed» указывает на проблемы со stanza в одном или нескольких репозиториях; в этом случае её состояние подробно приводится для каждого репозитория. Если ошибка репозитория не соответствует ни одному из известных кодов ошибок, используется код «other» и выводятся полные сведения об ошибке. Поле «wal archive min/max» показывает минимальный и максимальный WAL, хранящиеся в архиве; при наличии нескольких репозиториев оно охватывает их все, если не задан параметр --repo. Учтите, что из-за политик срока хранения архива или по другим причинам в последовательности могут быть пропуски.
Если на сервере сейчас выполняется одна из соответствующих команд, рядом со сведениями «status» появляются сообщения «backup/expire running» и/или «restore running». В текстовом выводе также отображается ход выполнения по каждому репозиторию, а в вывод JSON добавляется массив «repo».
Резервные копии выводятся от старых к новым. Самая старая копия всегда полная (обозначается F в конце метки), а самая новая может быть полной, дифференциальной (метка оканчивается на D) или инкрементной (оканчивается на I).
Поле «timestamp start/stop» задаёт период выполнения резервного копирования. По «timestamp stop» можно выбрать копию для восстановления на определённый момент времени. Дополнительные сведения приведены в разделе Восстановление на определённый момент времени
.
Поле «wal start/stop» определяет диапазон WAL, необходимый для приведения базы данных в согласованное состояние при восстановлении. Перед завершением команда backup убеждается, что этот диапазон WAL есть в архиве.
Поле «database size» — полный размер базы данных без сжатия, а «database backup size» — объём данных базы, которые фактически нужно скопировать (для полных копий эти значения совпадают).
Поле «repo» указывает, в каком репозитории находится копия. Поле «backup set size» включает все файлы этой копии и тех копий репозитория, на которые она ссылается и которые необходимы для восстановления базы данных из неё, а «backup size» — только файлы самой этой копии (для полных копий эти значения также совпадают). Если в pgBackRest включено сжатие, размеры в репозитории учитывают сжатый размер файлов.
Поле «backup reference total» содержит сводку дополнительных резервных копий, необходимых для восстановления этой копии. Чтобы вывести полный список ссылок, используйте параметр --set.
Восстановление резервной копии
Резервные копии защищают от ряда аварийных ситуаций; наиболее распространены аппаратные сбои и повреждение данных. Простейший способ имитировать повреждение данных — удалить важный файл кластера PostgreSQL.
pg-primary ⇒ Остановить демонстрационный кластер и удалить файл pg_control
При запуске кластера без этого важного файла возникнет ошибка.
pg-primary ⇒ Попытаться запустить повреждённый демонстрационный кластер
Чтобы восстановить резервную копию кластера PostgreSQL, запустите pgBackRest с командой restore. Кластер необходимо остановить (в данном случае он уже остановлен), а из каталога данных PostgreSQL удалить все файлы.
pg-primary ⇒ Удалить старые файлы демонстрационного кластера
pg-primary ⇒ Восстановить демонстрационный кластер и запустить PostgreSQL
На этот раз кластер успешно запустился, поскольку при восстановлении был возвращён отсутствующий файл pg_control.
Дополнительные сведения о команде restore приведены в разделе Восстановление
.
Мониторинг
Мониторинг — важная часть любой рабочей системы. Доступно множество инструментов, и с небольшой доработкой любой из них можно использовать для мониторинга pgBackRest.
pgBackRest может выводить сведения о репозитории в формате JSON, включая список всех резервных копий для каждой stanza и сведения об архиве WAL.
В PostgreSQL
Команда PostgreSQL COPY позволяет загрузить сведения pgBackRest в таблицу. В следующем примере эта логика оформлена как функция, с помощью которой можно выполнять запросы в реальном времени.
pg-primary ⇒ Загрузить функцию получения сведений pgBackRest для PostgreSQL
Теперь с помощью функции monitor.pgbackrest_info() можно узнать время последней успешной резервной копии и архивированный WAL для stanza.
pg-primary ⇒ Запросить время последней успешной резервной копии и архивированный WAL
Резервное копирование
Если настроено несколько репозиториев, pgBackRest создаёт резервную копию в репозитории с наивысшим приоритетом (например, repo1), если не указан параметр --repo.
У pgBackRest нет встроенного планировщика, поэтому лучше запускать его из cron или другого планировщика.
Дополнительные сведения и примеры см. в разделе Создание резервной копии .
Пакетирование файлов
Объединение файлов в пакеты в репозитории экономит время резервного копирования и часть места в репозитории. Это особенно заметно, когда репозиторий находится в объектном хранилище, таком как S3, или в файловой системе с большим размером блока. Создание отдельного файла в объектном хранилище занимает больше времени, а хранение очень маленьких файлов может стоить столько же, сколько хранение более крупных.
Пакетирование файлов включается параметром repo-bundle.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-bundle
Без пакетирования файлов каталог полной резервной копии содержит 1000+ файлов, а с пакетированием их общее количество значительно уменьшается. Дополнительное преимущество: файлы нулевой длины не сохраняются (кроме записи в манифесте), тогда как при обычном резервном копировании каждый такой файл хранится отдельно.
pg-primary ⇒ Создать полную резервную копию
pg-primary ⇒ Проверить общее количество файлов
Для настройки можно использовать параметры repo-bundle-size и repo-bundle-limit, хотя значения по умолчанию должны быть оптимальными в большинстве случаев.
Хотя пакетирование файлов обычно эффективнее, оно затрудняет ручное извлечение файлов из репозитория. Для хранилища с дедупликацией оно может быть не лучшим выбором: каждая полная резервная копия размещает файлы в пакетах по-разному. Наконец, копирование пакетов файлов нельзя возобновить, поэтому не следует задавать слишком большое значение repo-bundle-limit.
Блочное инкрементное копирование
Блочные инкрементные резервные копии экономят место: сохраняются лишь части файла, изменившиеся после предыдущей резервной копии, а не весь файл.
Блочное инкрементное копирование включается параметром repo-block и наиболее эффективно, когда включено для всех типов резервных копий. Пакетирование файлов также должно быть включено.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-block
Аннотации резервных копий
К резервной копии можно прикреплять информационные пары ключ/значение. Этот параметр можно указать несколько раз, чтобы добавить несколько аннотаций.
pg-primary ⇒ Создать полную резервную копию с аннотациями
В текстовом выводе команды info аннотации отображаются, когда резервная копия указана через --set; в выводе JSON они присутствуют всегда.
pg-primary ⇒ Получить сведения о демонстрационном кластере
Аннотации, заданные в команде backup, впоследствии можно добавлять, изменять или удалять с помощью команды annotate.
pg-primary ⇒ Изменить аннотации резервной копии
Срок хранения
Обычно лучше хранить как можно больше резервных копий, чтобы расширить доступный интервал восстановления на определённый момент времени , но необходимо учитывать и практические ограничения, например объём диска. Параметры срока хранения позволяют удалять старые копии, когда они больше не нужны.
pgBackRest выполняет ротацию полных резервных копий в зависимости от типа срока хранения: по количеству или по периоду времени. Если задано количество, при удалении учитывается не время создания копий, а то, сколько их нужно сохранить. Дифференциальные копии хранятся по количеству, но всегда удаляются при удалении полной копии, от которой зависят. Инкрементные копии не удаляются по сроку хранения независимо: они всегда удаляются вместе со связанной полной или дифференциальной копией. Подробности и примеры см. в разделах Хранение полных резервных копий и Хранение дифференциальных резервных копий .
По умолчанию архивированный WAL сохраняется для резервных копий, срок хранения которых не истёк. Этот порядок можно изменить отдельно для каждого репозитория параметрами retention-archive, хотя делать это не рекомендуется. Подробности и примеры см. в разделе Хранение архива .
Команда expire автоматически выполняется после каждого успешного резервного копирования; её также может запускать пользователь. При ручном запуске удаление выполняется в соответствии с настройками срока хранения каждого настроенного репозитория. Если передан параметр --repo, удаление выполняется только в указанном репозитории. Пользователь может также ограничить удаление конкретным набором резервной копии с помощью --set; если при этом не указан --repo, поиск выполняется во всех репозиториях и удаляются все совпадающие наборы. Следует учитывать, что при каждом запуске expire проверяется и применяется политика хранения архива.
Хранение полных резервных копий
Параметр repo1-retention-full-type определяет, как интерпретировать repo1-retention-full: как количество сохраняемых полных резервных копий или как число дней их хранения. Удаление выполняется только после завершения новых резервных копий. То есть при repo1-retention-full-type=count и repo1-retention-full=2 перед удалением самой старой копии будут храниться три полные копии; при repo1-retention-full-type=time и repo1-retention-full=20 для начала удаления должна существовать хотя бы одна полная копия возрастом не менее 20 дней.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-retention-full
Для резервного копирования задано repo1-retention-full=2, но пока существует только одна полная копия, поэтому создание следующей полной копии не приведёт к удалению полных копий.
pg-primary ⇒ Создать полную резервную копию
Архив удаляется, поскольку сегменты WAL были созданы до самой старой резервной копии. Для восстановления они бесполезны: восстановить копию можно только с помощью сегментов WAL, созданных после неё.
pg-primary ⇒ Создать полную резервную копию
Полная резервная копия 20261002-185647F удаляется, а хранение архива теперь определяется копией 20261002-185711F, которая стала самой старой полной копией.
Хранение дифференциальных резервных копий
Установите repo1-retention-diff равным нужному количеству дифференциальных резервных копий. Дифференциальные копии зависят только от предыдущей полной копии, поэтому можно создать «скользящий» набор дифференциальных копий за последние сутки или более длительный период. Это обеспечивает быстрое восстановление на недавние моменты времени и при этом уменьшает общий расход места.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-retention-diff
Для резервного копирования задано repo1-retention-diff=1, поэтому прежде, чем одна дифференциальная копия будет удалена, нужно создать две. Для демонстрации удаления инкрементной копии добавляется инкрементное резервное копирование; в данном случае её удаление зависит от удаления дифференциальной копии.
pg-primary ⇒ Создать дифференциальную и инкрементную резервные копии
Теперь создание дифференциальной резервной копии приведёт к удалению предыдущих дифференциальной и инкрементной копий, оставив только одну дифференциальную.
pg-primary ⇒ Создать дифференциальную резервную копию
Хранение архива
Хотя pgBackRest автоматически удаляет архивированные сегменты WAL при удалении устаревших резервных копий (по умолчанию WAL полных копий удаляется на основании параметра repo1-retention-full), для экономии дискового пространства может быть полезно удалять архив более активно. При хранении архива дифференциальных копий полные копии также считаются дифференциальными.
При удалении архива никогда не удаляются сегменты WAL, необходимые для согласованности резервной копии. Однако восстановление на определённый момент времени (PITR) возможно только при непрерывном потоке WAL, поэтому при агрессивном удалении архива вне обычного процесса удаления резервных копий следует соблюдать осторожность. Чтобы узнать, что будет удалено, ничего фактически не удаляя, можно передать в командной строке параметр dry-run команде expire.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-retention-diff
pg-primary ⇒ Создать дифференциальную резервную копию
pg-primary ⇒ Удалить устаревший архив
У дифференциальной копии 20261002-185713F_20261002-185717D есть архивированные сегменты WAL, которые необходимо сохранить для согласованности старых копий, хотя продвинуть их дальше с помощью PITR уже нельзя. Сегменты WAL, созданные после 20261002-185713F_20261002-185717D, но до 20261002-185713F_20261002-185719D, удаляются. Сегменты, созданные после новой копии 20261002-185713F_20261002-185719D, остаются и могут использоваться для PITR.
Поскольку при хранении архива дифференциальных копий полные копии считаются дифференциальными, если теперь создать полную копию с теми же настройками, для PITR останется только архив этой полной копии.
Восстановление
По умолчанию команда восстановления автоматически выбирает последнюю резервную копию из первого репозитория, в котором есть копии (см. Быстрый старт — Восстановление резервной копии
). Порядок проверки репозиториев определяется файлом pgbackrest.conf (например, repo1 проверяется раньше repo2). Для выбора конкретного репозитория можно передать --repo (например, --repo=1). Если нужна не последняя резервная копия, можно передать параметр --set.
При PITR с --type=time или --type=lsn целевое время или LSN необходимо указать с помощью параметра --target. Если --set не задан, настроенные репозитории проверяются по порядку: выбирается резервная копия, время завершения которой предшествует целевому времени или LSN завершения которой меньше либо равен целевому LSN. Если подходящая копия не найдена, pgBackRest выдаёт ошибку как для --type=time, так и для --type=lsn; перехода к последней резервной копии не происходит. Для других типов PITR, например xid, необходимо указать параметр --set, если цель предшествует последней резервной копии. Подробнее и с примерами см. Восстановление на заданный момент времени
.
В соответствии с рекомендацией PostgreSQL слоты репликации не включаются в резервную копию. Дополнительные сведения см. в разделе Резервное копирование каталога данных документации PostgreSQL.
В следующих разделах рассматриваются дополнительные возможности команды restore.
Владельцы файлов
Если restore выполняется от имени пользователя, отличного от root (обычный случай), все восстановленные файлы будут принадлежать пользователю и группе, от имени которых запущен pgBackRest. Если существующие файлы принадлежат другому пользователю или группе и сменить владельца на пользователя и группу процесса не удаётся, возникает ошибка. В этом случае перед повторной попыткой восстановления привилегированный пользователь должен изменить владельца файлов.
Если restore выполняется от имени root, pgBackRest пытается восстановить владельцев, записанных в манифест при создании резервной копии. В манифесте хранятся только имена пользователей и групп, поэтому на сервере восстановления должны существовать те же имена. Если имя пользователя или группы локально не найдено, используется пользователь или группа каталога данных PostgreSQL, а если их не удаётся сопоставить с именем — root.
Параметр delta
В разделе Восстановление резервной копии
главы Быстрый старт
перед выполнением restore требовалось очистить каталог кластера баз данных. Параметр delta позволяет pgBackRest автоматически определить, какие файлы в каталоге кластера можно сохранить, а какие нужно восстановить из резервной копии. Он также удаляет файлы, отсутствующие в манифесте копии, устраняя расходящиеся изменения. Для этого вычисляется криптографический хеш SHA-1
каждого файла в каталоге кластера. Если хеш SHA-1 не совпадает с хешем в резервной копии, файл восстанавливается. Эта операция очень эффективна в сочетании с параметром process-max. Поскольку на время восстановления сервер PostgreSQL остановлен, можно использовать больше процессов, чем было бы желательно при резервном копировании работающего сервера PostgreSQL.
pg-primary ⇒ Остановить демонстрационный кластер и выполнить дельта-восстановление
pg-primary ⇒ Перезапустить PostgreSQL
Восстановление выбранных баз данных
Иногда требуется выборочно восстановить отдельные базы данных из резервной копии кластера. Это может понадобиться для повышения производительности или для переноса выбранных баз на машину, где недостаточно места для восстановления всего кластера.
Для демонстрации этой возможности создаются две базы данных: test1 и test2.
pg-primary ⇒ Создать две тестовые базы данных
В каждой тестовой базе будут созданы таблицы и данные, чтобы показать, что восстановление работает и при выборочном восстановлении.
pg-primary ⇒ Создать тестовую таблицу в каждой базе данных
Создаётся новая резервная копия, чтобы pgBackRest получил сведения о новых базах данных.
pg-primary ⇒ Создать резервную копию
Одна из основных причин использовать выборочное восстановление — экономия места. Здесь показан размер базы test1, чтобы его можно было сравнить с расходом дискового пространства после выборочного восстановления.
pg-primary ⇒ Показать место, занимаемое базой test1
Если неизвестно, какую базу данных нужно восстановить, используйте параметр set команды info, чтобы узнать, какие базы входят в набор резервной копии.
pg-primary ⇒ Показать список баз данных в резервной копии
Остановите кластер и восстановите только базу test2. Встроенные базы (template0, template1 и postgres) восстанавливаются всегда.
ПРЕДУПРЕЖДЕНИЕ:
Если не указать --type=immediate, восстановление может завершиться ошибкой. Причина в том, что после достижения согласованности PostgreSQL считает обнулённые страницы ошибкой даже при записи полной страницы. В PostgreSQL ≥ 13 можно использовать настройку ignore_invalid_pages, чтобы игнорировать некорректные страницы. В этом случае после восстановления важно проверить журналы и убедиться, что сообщений о некорректных страницах в выбранных базах данных нет.
pg-primary ⇒ Восстановить последнюю резервную копию, включив только базу test2
После завершения восстановления база test2 будет содержать все ранее созданные таблицы и данные.
pg-primary ⇒ Продемонстрировать восстановление базы test2
База test1, несмотря на успешное восстановление, недоступна. Причина в том, что вся база была восстановлена в виде разреженных обнулённых файлов. PostgreSQL может успешно применить WAL к таким файлам, но база в целом будет некорректна, поскольку ключевые файлы не содержат данных. Это сделано намеренно, чтобы исключить случайное использование базы, которая может содержать лишь часть данных, применённых при воспроизведении WAL.
pg-primary ⇒ Попытка подключиться к базе test1 приведёт к ошибке
Поскольку база test1 восстанавливается в виде разреженных обнулённых файлов, она займёт лишь столько места, сколько WAL будет записано при восстановлении. Объём WAL, создаваемого во время резервного копирования и применяемого при восстановлении, может быть значительным, но обычно составляет небольшую долю полного размера базы, особенно для крупных баз, где эта возможность наиболее полезна.
Очевидно, что при выборочном восстановлении база test1 занимает гораздо меньше места, чем при полном восстановлении базы.
pg-primary ⇒ Показать место, занимаемое базой test1 после восстановления
На этом этапе единственное действие, которое можно выполнить с некорректной базой test1, — drop database. pgBackRest не удаляет базу автоматически, поскольку это невозможно до завершения восстановления и появления доступа к кластеру.
pg-primary ⇒ Удалить базу test1
После удаления некорректной базы test1 остаются только test2 и встроенные базы.
pg-primary ⇒ Показать оставшиеся базы данных
Восстановление на определённый момент времени
В разделе Восстановление резервной копии главы Быстрый старт использовалось восстановление по умолчанию — воспроизведение WAL до самого конца потока. При аппаратном сбое это обычно лучший вариант, но при повреждении данных, вызванном машиной или человеком, часто уместнее восстановление на определённый момент времени (PITR).
Восстановление на определённый момент времени (PITR) позволяет воспроизвести WAL из резервной копии до заданного LSN, времени, идентификатора транзакции или точки восстановления. В типичных сценариях восстановление по времени, пожалуй, наиболее полезно. Частый случай — восстановление случайно удалённой таблицы или данных. Восстановление удалённой таблицы нагляднее, поэтому здесь используется именно такой пример, но удалённые данные восстанавливаются точно так же.
pg-primary ⇒ Создать таблицу с очень важными данными
Важно задавать время так, как его понимает PostgreSQL, и включать смещение часового пояса. Это уменьшает вероятность нежелательного преобразования часовых поясов и неожиданного результата восстановления.
pg-primary ⇒ Получить время из PostgreSQL
Теперь, когда время записано, таблица удаляется. На практике определить точное время удаления таблицы гораздо труднее, чем в этом примере. Точное время может оказаться неизвестным, но некоторое исследование должно позволить достаточно близко его оценить.
pg-primary ⇒ Удалить важную таблицу
Если для восстановления выбрана неверная резервная копия, восстановление на нужный момент времени завершится неудачей. Для демонстрации создаётся новая инкрементная копия, в которой important_table уже отсутствует.
pg-primary ⇒ Создать инкрементную резервную копию
Восстановить потерянную таблицу из этой копии не получится, поскольку PostgreSQL может воспроизводить изменения только вперёд, но не назад.
pg-primary ⇒ Попытаться восстановить данные из неподходящей резервной копии
Надёжный способ — позволить pgBackRest автоматически выбрать копию, из которой возможно восстановление на целевой момент времени, то есть копию, завершившуюся до указанного времени.
ПРИМЕЧАНИЕ:
pgBackRest не может автоматически выбрать копию при типе восстановления xid или name.
pg-primary ⇒ Восстановить демонстрационный кластер на момент 2026-10-02 18:57:39.575732+00
pgBackRest сформировал настройки восстановления в postgresql.auto.conf, поэтому PostgreSQL можно запустить сразу. Через %f PostgreSQL указывает нужный сегмент WAL, а через %p — место, куда его следует скопировать. После того как PostgreSQL завершит восстановление, таблица снова будет существовать и к ней можно будет обращаться с запросами.
pg-primary ⇒ Запустить PostgreSQL и проверить наличие важной таблицы
Журнал PostgreSQL также содержит полезные сведения. В нём указаны время и транзакция, на которых остановилось восстановление, а также время последней применённой транзакции.
pg-primary ⇒ Просмотреть журнал PostgreSQL
Удаление stanza
Команда stanza-delete удаляет из репозитория данные, связанные со stanza.
ПРЕДУПРЕЖДЕНИЕ:
Используйте эту команду с осторожностью: она безвозвратно удаляет из репозитория pgBackRest все резервные копии и архивы указанной stanza.
Чтобы удалить stanza:
- Остановите кластер PostgreSQL, связанный со stanza (или используйте –force для обхода этого требования).
- Выполните команду
stopна сервере, где будет запущенаstanza-delete. - Выполните команду
stanza-delete.
После успешного завершения команды пользователь должен самостоятельно удалить stanza из всех файлов конфигурации pgBackRest и/или переменных среды.
За один раз stanza можно удалить только из одного репозитория. Чтобы удалить stanza из нескольких репозиториев, повторите команду stanza-delete для каждого из них, указав параметр --repo.
pg-primary ⇒ Остановить удаляемый кластер PostgreSQL
pg-primary ⇒ Остановить pgBackRest для stanza
pg-primary ⇒ Удалить stanza из одного репозитория
Несколько репозиториев
Можно настроить несколько репозиториев, как показано в разделе Поддержка S3 . Одно из возможных преимуществ — локальный репозиторий для быстрого восстановления и удалённый для избыточности.
Некоторые команды, например stanza-create
/stanza-upgrade
, автоматически работают со всеми настроенными репозиториями. Для других, например stanza-delete
, репозиторий нужно указать параметром repo.
Для обратной совместимости параметр repo не требуется, если настроен только repo1. Однако, если единственный репозиторий настроен, например, как repo2, параметр repo обязателен. Это позволяет избежать нарушения работы команд при последующем добавлении нового репозитория.
Команда archive-push всегда отправляет WAL в архивы всех настроенных репозиториев. Если один репозиторий недоступен, WAL всё равно отправляется в остальные. Однако для эффективной работы необходимо включить archive-async=y; иначе остальные репозитории смогут опередить недоступный лишь на один сегмент WAL. Также учтите: если WAL не удаётся отправить в какой-либо репозиторий, PostgreSQL не удалит его из каталога pg_wal, из-за чего на томе может закончиться место.
Для каждого репозитория нужно отдельно задать расписание резервного копирования. Во многих случаях это удобно, поскольку типы копий и сроки хранения различаются между репозиториями. Аналогично, при восстановлении необходимо указать репозиторий. Обычно для восстановления лучше выбирать репозиторий с низкой задержкой или стоимостью, даже если само восстановление займёт больше времени. Определить наиболее эффективный репозиторий можно только испытаниями восстановления.
Поддержка объектных хранилищ, совместимых с Azure
pgBackRest поддерживает размещение репозиториев в объектных хранилищах, совместимых с Azure. Контейнер для репозитория необходимо создать заранее: pgBackRest не создаёт его автоматически. Репозиторий можно разместить в корне контейнера (/), но обычно лучше использовать вложенный путь, чтобы в том же контейнере можно было хранить журналы объектного хранилища и другие данные без конфликтов.
ПРЕДУПРЕЖДЕНИЕ:
Не включайте «иерархическое пространство имён»: это приведёт к ошибкам при удалении устаревших копий.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить Azure
Для использования подписей общего доступа задайте параметру repo2-azure-key-type значение sas, а параметру repo2-azure-key — токен подписи общего доступа.
Команды выполняются точно так же, как если бы репозиторий находился на локальном диске.
pg-primary ⇒ Создать stanza
Создание файлов в Azure происходит относительно медленно, поэтому включение пакетирования файлов
повышает производительность backup/restore.
pg-primary ⇒ Создать резервную копию демонстрационного кластера
Поддержка объектных хранилищ, совместимых с S3
pgBackRest поддерживает размещение репозиториев в объектных хранилищах, совместимых с S3. Бакет для репозитория необходимо создать заранее: pgBackRest не создаёт его автоматически. Репозиторий можно разместить в корне бакета (/), но обычно лучше использовать вложенный путь, чтобы в том же бакете можно было хранить журналы объектного хранилища и другие данные без конфликтов.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить S3
ПРИМЕЧАНИЕ:
Регион и конечную точку необходимо настроить в соответствии с расположением бакета. Здесь приведены значения для региона us-east-1.
Для запуска pgBackRest следует создать роль, а права доступа к бакету следует максимально ограничить. Если роль связана с экземпляром AWS, при repo3-s3-key-type=auto pgBackRest автоматически получает временные учётные данные, поэтому явно задавать ключи в /etc/pgbackrest/pgbackrest.conf не требуется.
Этот пример политики Amazon S3 ограничивает все операции чтения и записи указанным бакетом и путём репозитория.
Команды выполняются точно так же, как если бы репозиторий находился на локальном диске.
pg-primary ⇒ Создать stanza
Создание файлов в S3 происходит относительно медленно, поэтому включение пакетирования файлов
повышает производительность backup/restore.
pg-primary ⇒ Создать резервную копию демонстрационного кластера
Поддержка SFTP
pgBackRest поддерживает размещение репозиториев на серверах SFTP. Передача файлов по SFTP относительно медленная, поэтому увеличение process-max для параллельной передачи файлов повышает производительность команд.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить SFTP
При использовании SFTP, если libssh2 собрана с OpenSSH, параметр repo4-sftp-public-key-file необязателен.
pg-primary ⇒ Создать пару ключей SSH для резервного копирования по SFTP
sftp-server ⇒ Скопировать открытый ключ pg-primary для резервного копирования по SFTP на sftp-server
Команды выполняются точно так же, как если бы репозиторий находился на локальном диске.
pg-primary ⇒ Добавить отпечаток sftp-server в файл known_hosts, поскольку значение repo4-sftp-host-key-check-type по умолчанию — «strict»
pg-primary ⇒ Создать stanza
pg-primary ⇒ Создать резервную копию демонстрационного кластера
Поддержка объектных хранилищ, совместимых с GCS
pgBackRest поддерживает размещение репозиториев в объектных хранилищах, совместимых с GCS. Бакет для репозитория необходимо создать заранее: pgBackRest не создаёт его автоматически. Репозиторий можно разместить в корне бакета (/), но обычно лучше использовать вложенный путь, чтобы в том же бакете можно было хранить журналы объектного хранилища и другие данные без конфликтов.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить GCS
При работе в GCE задайте repo5-gcs-key-type=auto, чтобы автоматически проходить аутентификацию через служебную учётную запись экземпляра.
Команды выполняются точно так же, как если бы репозиторий находился на локальном диске.
Создание файлов в GCS происходит относительно медленно, поэтому включение пакетирования файлов
повышает производительность backup/restore.
Целевое время репозитория
Целевое время определяет, на какой момент команды читают репозиторий в хранилище с поддержкой версий. Это позволяет прочитать состояние репозитория на определённый момент времени, чтобы восстановить данные, удалённые или повреждённые случайными действиями пользователя либо вредоносной программой.
Хранение версий поддерживается в S3, GCS и Azure, но обычно по умолчанию отключено. Помимо включения версий, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
При указании repo-target-time также необходимо передать параметр repo. Вероятно, не все типы репозиториев поддерживают версии, и в целом для восстановления имеет смысл выбирать один репозиторий.
Обратите внимание: временные метки хранилища сравниваются с указанной меткой по условию <=, а миллисекунды в переданной метке времени отбрасываются.
Для демонстрации этой возможности stanza demo удаляется из репозитория S3.
pg-primary ⇒ Удалить stanza из репозитория S3
После удаления stanza команда info покажет ошибочное состояние репозитория.
pg-primary ⇒ Ошибка при выполнении info
Однако, поскольку хранилище поддерживает версии, можно посмотреть состояние репозитория до удаления stanza. В зависимости от ситуации определить целевое время бывает непросто, но в данном случае момент удаления stanza можно установить по времени удаления backup.info.
pg-primary ⇒ Показать версии backup.info в бакете
Теперь можно выполнить команду info с целевым временем, чтобы увидеть репозиторий до удаления.
pg-primary ⇒ Выполнить info с целевым временем
Если команда info показывает нужную резервную копию, её можно восстановить с тем же целевым временем.
pg-primary ⇒ Выполнить восстановление с целевым временем
Выделенный сервер репозитория
Конфигурация, описанная в разделе Быстрый старт , подходит для простых установок, но в корпоративных средах обычно используют выделенный сервер репозитория для хранения резервных копий и файлов архива WAL. Так резервные копии и архив WAL отделены от сервера баз данных и меньше страдают при его отказе. При этом по-прежнему полезно применять обычное ПО резервного копирования для самого сервера репозитория.
На серверах PostgreSQL параметр pg1-path должен содержать путь к локальному кластеру PostgreSQL, а pg1-host задавать не следует. При настройке сервера репозитория в файле конфигурации pgbackrest необходимо задать pg-host для подключения к первичному и резервным серверам, если они есть. Сведения более чем об одном сервере PostgreSQL следует указывать только в конфигурации pgbackrest на сервере репозитория. Порядок не важен: например, pg1-path/pg1-host и pg2-path/pg2-host могут соответствовать как первичному, так и резервному серверу.
Установка
Для хранения резервных копий кластера создаётся новый сервер с именем repository.
ПРИМЕЧАНИЕ:
Версия pgBackRest на сервере репозитория должна в точности совпадать с версией на сервере PostgreSQL.
В качестве владельца репозитория pgBackRest создаётся пользователь pgbackrest. Владельцем может быть любой пользователь, но во избежание путаницы лучше не использовать postgres, если он существует.
ПРИМЕЧАНИЕ:
При установке pgBackRest из пакета может предоставляться конфигурация logrotate, например /etc/logrotate.d/pgbackrest, которая выполняет ротацию журналов от имени определённого пользователя через директиву su (например, su postgres postgres). Поскольку файлы в /var/log/pgbackrest принадлежат пользователю, запускающему pgBackRest (здесь pgbackrest), директиву su необходимо изменить так, чтобы она соответствовала этому пользователю, иначе logrotate завершится ошибкой прав доступа.
repository ⇒ Создать пользователя pgbackrest
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. При установке из пакета остальные инструкции этого раздела обычно не нужны, однако пакет может не создать какой-либо каталог или назначить неверные права доступа. В таком случае может потребоваться вручную создать каталоги или исправить права.
Пакеты pgBackRest для RHEL доступны на yum.postgresql.org .
Если для используемого дистрибутива или его версии нет пакетов, можно собрать программу из исходного кода , а затем установить её вручную, как показано ниже.
repository ⇒ Установить зависимости
repository ⇒ Скопировать исполняемый файл pgBackRest с сервера сборки
Для pgBackRest нужны каталоги журналов и конфигурации, а также файл конфигурации.
repository ⇒ Создать файл конфигурации и каталоги pgBackRest
repository ⇒ Создать репозиторий pgBackRest
Конфигурация
pgBackRest может использовать TLS с клиентскими сертификатами для обмена данными между серверами. Также можно использовать SSH; см. Настройка SSH .
pgBackRest ожидает, что клиентские и серверные сертификаты созданы так же, как для PostgreSQL. Подробные инструкции по созданию сертификатов см. в разделе Защищённые соединения TCP/IP с TLS .
На сервере репозитория необходимо указать узел pg-primary, пользователя для подключения к нему и путь к базе данных. Первичный сервер будет настроен как pg1, чтобы позднее можно было добавить резервный.
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pg1-host/pg1-host-user и pg1-path
На сервере баз данных необходимо указать сервер и пользователя репозитория. Значение параметра repo1-host-user по умолчанию — pgbackrest. Если пользователь postgres выполняет восстановление на сервере репозитория, лучше не разрешать пользователю postgres также создавать резервные копии. Однако пользователь postgres может читать репозиторий непосредственно, если входит в ту же группу, что и пользователь pgbackrest.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить repo1-host/repo1-host-user
Настройка PostgreSQL описана в разделе Настройка архивирования .
Команды выполняются так же, как в конфигурации с одним сервером, за исключением того, что некоторые команды, например backup и expire, запускаются на сервере репозитория, а не на сервере баз данных.
Настройка сервера TLS
Сервер TLS pgBackRest необходимо настроить и запустить на каждом узле.
repository ⇒ Настроить сервер pgBackRest
pg-primary ⇒ Настроить сервер pgBackRest
Создание и проверка stanza
Создайте stanza в новом репозитории.
repository ⇒ Создать stanza
Проверьте правильность конфигурации и на сервере баз данных, и на сервере репозитория. Дополнительные сведения о команде check см. в разделе Проверка конфигурации
.
pg-primary ⇒ Проверить конфигурацию
repository ⇒ Проверить конфигурацию
Создание резервной копии
Чтобы создать резервную копию кластера PostgreSQL, запустите pgBackRest с командой backup на сервере репозитория.
repository ⇒ Создать резервную копию демонстрационного кластера
Поскольку на сервере репозитория был создан новый репозиторий, появилось предупреждение о замене инкрементного резервного копирования полным.
Восстановление резервной копии
Чтобы восстановить кластер PostgreSQL, запустите pgBackRest с командой restore на сервере баз данных.
pg-primary ⇒ Остановить демонстрационный кластер, восстановить его и перезапустить PostgreSQL
Параллельное резервное копирование и восстановление
pgBackRest поддерживает параллельную обработку для ускорения сжатия и передачи данных. Количество используемых процессов задаётся параметром --process-max.
Обычно для команды backup лучше использовать не более 25% доступных CPU. Резервное копирование не обязательно должно быть очень быстрым, если оно выполняется регулярно; по возможности следует избегать влияния этого процесса на производительность базы данных.
Для команды восстановления можно и следует использовать все доступные CPU, поскольку во время восстановления кластер PostgreSQL остановлен и на сервере обычно не выполняется другая важная работа. Если на сервере несколько кластеров, это следует учитывать при настройке параллелизма восстановления.
repository ⇒ Создать резервную копию одним процессом
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pgBackRest на использование нескольких процессов backup
repository ⇒ Создать резервную копию несколькими процессами
repository ⇒ Получить сведения о резервных копиях демонстрационного кластера
Использование нескольких процессов должно повысить производительность последнего резервного копирования. Для очень маленьких копий разница может быть незаметна, но с ростом базы данных будет увеличиваться и экономия времени.
Запуск и остановка
Если резервный сервер повышается до первичного для тестирования или тестовый кластер восстанавливается из резервной копии рабочей среды, полезно запретить этим кластерам запись в репозитории pgBackRest. Для этого служит команда stop.
Команда stop блокирует следующие команды записи: archive-push, backup, expire, stanza-create и stanza-upgrade. Исключение из этого правила — stanza-delete (подробности см. в разделе Удаление stanza
).
pg-primary ⇒ Запретить команды записи pgBackRest
Новые команды записи pgBackRest больше не будут запускаться.
repository ⇒ Попытаться создать резервную копию
Укажите --force, чтобы завершить уже работающие команды записи pgBackRest. Это относится и к асинхронному archive-get (хотя он снова запустится, если потребуется PostgreSQL). Если pgBackRest уже остановлен, повторная остановка выдаст предупреждение.
pg-primary ⇒ Повторно остановить службы pgBackRest
Снова разрешите команды записи pgBackRest командой start. Команды записи, выполнявшиеся до остановки, не возобновятся автоматически, но теперь их можно запускать.
pg-primary ⇒ Разрешить команды записи pgBackRest
Также можно остановить pgBackRest для отдельной stanza.
pg-primary ⇒ Запретить команды записи pgBackRest для stanza demo
Новые команды записи pgBackRest для указанной stanza больше не будут запускаться.
repository ⇒ Попытаться создать резервную копию
При разрешении команд записи pgBackRest для отдельной stanza её также необходимо указать.
pg-primary ⇒ Разрешить команды записи pgBackRest для stanza demo
Репликация
Репликация позволяет создать из одного первичного сервера несколько копий кластера PostgreSQL, называемых резервными серверами. Они полезны для распределения нагрузки чтения и обеспечения избыточности на случай отказа первичного сервера.
Установка
Для запуска резервного сервера создаётся новый узел с именем pg-standby.
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. При установке из пакета остальные инструкции этого раздела обычно не нужны, однако пакет может не создать какой-либо каталог или назначить неверные права доступа. В таком случае может потребоваться вручную создать каталоги или исправить права.
Пакеты pgBackRest для RHEL доступны на yum.postgresql.org .
Если для используемого дистрибутива или его версии нет пакетов, можно собрать программу из исходного кода , а затем установить её вручную, как показано ниже.
pg-standby ⇒ Установить зависимости
pg-standby ⇒ Скопировать исполняемый файл pgBackRest с сервера сборки
Для pgBackRest нужны каталоги журналов и конфигурации, а также файл конфигурации.
pg-standby ⇒ Создать файл конфигурации и каталоги pgBackRest
Горячий резерв
Горячий резервный сервер выполняет репликацию через архив WAL и допускает запросы только для чтения.
Конфигурация pgBackRest почти такая же, как на pg-primary, но используется тип восстановления standby, чтобы кластер оставался в режиме восстановления после достижения конца потока WAL.
pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pgBackRest на резервном сервере
pg-standby ⇒ Настроить сервер pgBackRest
Создайте каталог, в который будет восстановлен PostgreSQL.
pg-standby ⇒ Создать каталог PostgreSQL
Теперь резервный сервер можно создать командой restore.
ВАЖНО:
Если кластер планируется вывести из режима восстановления, не делая его новым первичным сервером (например, для отчётности или тестирования), отключите архивирование с помощью --archive-mode=off или настройки archive_mode=off в postgresql.conf. Если архивирование не отключить, в репозиторий может попасть посторонний WAL, затрудняющий восстановление.
pg-standby ⇒ Восстановить демонстрационный резервный кластер
Эта конфигурация рассчитана на случай, если резервный сервер будет повышен до первичного.
pg-standby:/var/lib/pgsql/14/data/postgresql.conf ⇒ Настроить PostgreSQL
pg-standby ⇒ Запустить PostgreSQL
Журнал PostgreSQL содержит полезные сведения о восстановлении. В частности, обратите внимание на сообщения о том, что кластер перешёл в режим резервного сервера и готов принимать соединения только для чтения.
pg-standby ⇒ Проверить журнал PostgreSQL на наличие сообщений об успешном запуске
Простой способ проверить правильность настройки репликации — создать таблицу на pg-primary.
pg-primary ⇒ Создать новую таблицу на первичном сервере
Затем запросить ту же таблицу на pg-standby.
pg-standby ⇒ Запросить новую таблицу на резервном сервере
Что же пошло не так? Поскольку PostgreSQL получает сегменты WAL для репликации из архива, изменения не будут видны на резервном сервере, пока pg-primary не отправит в архив сегмент WAL, содержащий эти изменения.
Это можно сделать вручную вызовом pg_switch_wal(), который отправляет текущий сегмент WAL в архив (для последующих изменений создаётся новый сегмент WAL).
pg-primary ⇒ Вызвать pg_switch_wal()
Теперь после небольшой задержки таблица появится на pg-standby.
pg-standby ⇒ Теперь новая таблица есть на резервном сервере (может потребоваться несколько повторных попыток)
Проверьте конфигурацию доступа резервного сервера к репозиторию.
pg-standby ⇒ Проверить конфигурацию
Потоковая репликация
Потоковая репликация устанавливает прямое соединение с первичным сервером и применяет изменения сразу после их появления на нём, не полагаясь только на архив WAL. Это значительно уменьшает отставание резервного сервера от первичного.
Для потоковой репликации требуется пользователь с правом репликации.
pg-primary ⇒ Создать пользователя репликации
Файл pg_hba.conf необходимо изменить, чтобы разрешить резервному серверу подключаться от имени пользователя репликации. Обязательно замените IP-адрес ниже фактическим IP-адресом pg-standby. После изменения pg_hba.conf потребуется перечитать конфигурацию.
pg-primary ⇒ Создать запись pg_hba.conf для пользователя репликации
Резервный сервер должен знать, как подключиться к первичному, поэтому в pgBackRest будет настроен параметр primary_conninfo.
pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ Задать primary_conninfo
Пароль можно указать в primary_conninfo, но использование файла .pgpass гибче и безопаснее.
pg-standby ⇒ Задать пароль репликации в файле .pgpass.
Теперь резервный сервер можно создать командой restore.
pg-standby ⇒ Остановить PostgreSQL и восстановить демонстрационный резервный кластер
ПРИМЕЧАНИЕ:
Настройка primary_conninfo записана в файл postgresql.auto.conf, поскольку в pgbackrest.conf она задана как recovery-option. Если требуется сохранить существующий файл postgresql.auto.conf, с командой restore можно использовать параметр --type=preserve.
По умолчанию RHEL хранит файл postgresql.conf в каталоге данных PostgreSQL. Поэтому изменение postgresql.conf было перезаписано при последнем восстановлении, и настройку hot_standby необходимо включить снова. Другие способы решения этой проблемы — хранить файл postgresql.conf в другом месте или включить hot_standby на сервере pg-primary, где эта настройка будет игнорироваться.
pg-standby:/var/lib/pgsql/14/data/postgresql.conf ⇒ Включить hot_standby
pg-standby ⇒ Запустить PostgreSQL
Журнал PostgreSQL подтвердит запуск потоковой репликации.
pg-standby ⇒ Проверить журнал PostgreSQL на наличие сообщений об успешном запуске
Теперь таблица, созданная на pg-primary, быстро появится на pg-standby без необходимости вызывать pg_switch_wal().
pg-primary ⇒ Создать новую таблицу на первичном сервере
pg-standby ⇒ Запросить таблицу на резервном сервере
Несколько stanza
pgBackRest поддерживает несколько stanza. Чаще всего несколько stanza используют общий сервер репозитория.
Установка
Для запуска нового первичного сервера создаётся узел с именем pg-alt.
Предпочтительнее устанавливать pgBackRest из пакета, чем собирать из исходного кода. При установке из пакета остальные инструкции этого раздела обычно не нужны, однако пакет может не создать какой-либо каталог или назначить неверные права доступа. В таком случае может потребоваться вручную создать каталоги или исправить права.
Пакеты pgBackRest для RHEL доступны на yum.postgresql.org .
Если для используемого дистрибутива или его версии нет пакетов, можно собрать программу из исходного кода , а затем установить её вручную, как показано ниже.
pg-alt ⇒ Установить зависимости
pg-alt ⇒ Скопировать исполняемый файл pgBackRest с сервера сборки
Для pgBackRest нужны каталоги журналов и конфигурации, а также файл конфигурации.
pg-alt ⇒ Создать файл конфигурации и каталоги pgBackRest
Конфигурация
Конфигурация pgBackRest почти идентична конфигурации pg-primary, но используется stanza demo-alt, чтобы резервные копии и архив хранились отдельно.
pg-alt:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pgBackRest на новом первичном сервере
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pg1-host/pg1-host-user и pg1-path
pg-alt ⇒ Настроить сервер pgBackRest
Создание демонстрационного кластера
pg-alt ⇒ Создать демонстрационный кластер
pg-alt:/var/lib/pgsql/14/data/postgresql.conf ⇒ Настроить параметры PostgreSQL
pg-alt ⇒ Запустить демонстрационный кластер
Создание stanza и проверка конфигурации
Для инициализации stanza необходимо выполнить команду stanza-create. После stanza-create рекомендуется выполнить check, чтобы убедиться в правильной настройке архивирования и резервного копирования.
pg-alt ⇒ Создать stanza и проверить конфигурацию
Если команда check запускается на сервере репозитория, проверяются все stanza.
repository ⇒ Проверить конфигурацию всех stanza
Асинхронное архивирование
Асинхронное архивирование включается параметром archive-async. Он включает асинхронную работу обеих команд: archive-push и archive-get.
Необходим каталог очереди. Команды хранят в нём временные данные, но работают с ним существенно по-разному, поэтому использование каталога очереди подробно описано в соответствующих разделах.
pg-primary ⇒ Создать каталог очереди
pg-standby ⇒ Создать каталог очереди
Необходимо настроить каталог очереди и включить асинхронное архивирование. Само по себе асинхронное архивирование даёт некоторое преимущество за счёт уменьшения количества соединений с удалённым хранилищем, а настройка process-max может значительно повысить производительность благодаря параллельному выполнению операций. Не задавайте process-max настолько большим, чтобы это влияло на обычную работу базы данных.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить каталог очереди и асинхронное архивирование
pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить каталог очереди и асинхронное архивирование
ПРИМЕЧАНИЕ:
process-max задаётся в секциях команд, чтобы этот параметр не применялся к резервному копированию и восстановлению. Это также позволяет задать разные значения для archive-push и archive-get.
Для демонстрации потоковая репликация будет нарушена, чтобы PostgreSQL получал WAL через restore_command.
pg-primary ⇒ Нарушить потоковую репликацию, изменив пароль репликации
pg-standby ⇒ Перезапустить резервный сервер, чтобы разорвать соединение
Отправка в архив
Асинхронная команда archive-push передаёт архивирование WAL отдельному процессу или процессам для повышения пропускной способности. Она «заглядывает вперёд» и находит сегменты WAL, готовые к архивированию помимо того, который PostgreSQL сейчас запрашивает через archive_command. Сегменты WAL передаются в архив непосредственно из каталога pg_xlog/pg_wal, а archive_command сообщает об успехе только после того, как сегмент WAL надёжно сохранён в архиве.
Каталог очереди содержит текущее состояние архивирования WAL. Записываемые в него файлы состояния обычно имеют нулевую длину и должны занимать минимум места (не более нескольких МБ) и создавать очень небольшую нагрузку ввода-вывода. Все сведения в этом каталоге можно воссоздать, поэтому при переносе кластера на другое оборудование сохранять каталог очереди не требуется.
ВАЖНО:
В первоначальной реализации асинхронного архивирования сегменты WAL копировались в каталог очереди перед сжатием и передачей. Новая реализация копирует WAL непосредственно из каталога pg_xlog. Если асинхронное архивирование использовалось в v1.12 или более ранней версии, перед обновлением внимательно прочитайте примечания к выпуску v1.13.
Файл [stanza]-archive-push-async.log позволяет отслеживать работу асинхронного процесса. Удобный способ проверки — быстро отправить несколько сегментов WAL.
pg-primary ⇒ Проверить параллельное асинхронное архивирование
Теперь файл журнала будет содержать записи о параллельной асинхронной работе.
pg-primary ⇒ Проверить результаты в журнале
Получение из архива
Асинхронная команда archive-get поддерживает локальную очередь WAL для повышения пропускной способности. Если сегмента WAL нет в очереди, он извлекается из репозитория вместе с достаточным количеством последовательных сегментов WAL для заполнения очереди. Максимальный размер очереди задаётся параметром archive-get-queue-max. Когда очередь заполнена менее чем наполовину, для её заполнения извлекаются дополнительные сегменты WAL.
Асинхронная работа наиболее полезна в средах с большим объёмом генерируемого WAL или высокой задержкой соединения с хранилищем репозитория (например, S3 или другим объектным хранилищем). При высокой задержке соединения может быть полезно увеличить process-max.
Файл [stanza]-archive-get-async.log позволяет отслеживать работу асинхронного процесса.
pg-standby ⇒ Проверить результаты в журнале
pg-primary ⇒ Восстановить потоковую репликацию, изменив пароль репликации
Резервное копирование с резервного сервера
pgBackRest может выполнять резервное копирование с резервного сервера вместо первичного. Для этого необходимо настроить сервер pg-standby и включить параметр backup-standby. Если настроено несколько резервных серверов, для резервного копирования используется первый найденный работающий резервный сервер.
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Настроить pg2-host/pg2-host-user и pg2-path
Для резервного копирования необходимы и первичная, и резервная базы данных, хотя подавляющее большинство файлов копируется с резервного сервера, чтобы снизить нагрузку на первичный. Серверы баз данных можно настроить в любом порядке. pgBackRest автоматически определит, какой сервер первичный, а какой резервный.
repository ⇒ Создать резервную копию демонстрационного кластера с pg2
Эта инкрементная копия показывает, что большинство файлов копируется с сервера pg-standby и только несколько — с pg-primary.
pgBackRest создаёт с резервного сервера копию, идентичную копии с первичного. Для этого он запускает и завершает резервное копирование на pg-primary, копирует с pg-standby только реплицируемые файлы, а затем копирует немногочисленные оставшиеся файлы с pg-primary. Поэтому резервная копия включает журналы и статистику первичной базы данных.
Обновление PostgreSQL
Сразу после обновления PostgreSQL до новой основной версии во всех конфигурациях pgBackRest необходимо изменить pg-path на новое расположение базы данных и выполнить команду stanza-upgrade. Если на сервере настроено несколько репозиториев, stanza обновляется в каждом из них. Если база данных остановлена, используйте параметр --no-online.
Следующие инструкции не являются полным руководством по обновлению PostgreSQL: они описывают общий порядок обновления первичного и резервного серверов, чтобы показать необходимые шаги перенастройки pgBackRest. Перед обновлением рекомендуется создать резервную копию.
pg-primary ⇒ Остановить старый кластер
Остановите старый кластер на резервном сервере: он будет восстановлен из только что обновлённого кластера.
pg-standby ⇒ Остановить старый кластер
Создайте новый кластер и выполните обновление.
pg-primary ⇒ Создать новый кластер и выполнить обновление
Настройте параметры и порт нового кластера.
pg-primary:/var/lib/pgsql/15/data/postgresql.conf ⇒ Настроить PostgreSQL
Обновите конфигурацию pgBackRest на всех системах, указав новый кластер.
pg-primary:/etc/pgbackrest/pgbackrest.conf ⇒ Обновить pg1-path
pg-standby:/etc/pgbackrest/pgbackrest.conf ⇒ Обновить pg-path
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Обновить pg1-path и pg2-path, отключить резервное копирование с резервного сервера
pg-primary ⇒ Скопировать конфигурацию hba
Перед запуском нового кластера необходимо выполнить команду stanza-upgrade.
pg-primary ⇒ Обновить stanza
Запустите новый кластер и убедитесь в успешной установке.
pg-primary ⇒ Запустить новый кластер
Проверьте конфигурацию командой check.
pg-primary ⇒ Проверить конфигурацию
Удалите старый кластер.
pg-primary ⇒ Удалить старый кластер
Установите исполняемые файлы новой версии PostgreSQL на резервном сервере и создайте кластер.
pg-standby ⇒ Удалить старый кластер и создать новый
Выполните check на сервере репозитория. Предупреждение о недоступности резервного сервера ожидаемо, поскольку резервный кластер остановлен. Эта команда показывает, что сервер репозитория располагает сведениями о резервном сервере и правильно настроен для работы с первичным.
repository ⇒ Проверить конфигурацию
Создайте полную резервную копию нового кластера, а затем восстановите из неё резервный сервер. Если запрошен тип incr или diff, он автоматически изменится на full.
repository ⇒ Создать полную резервную копию
pg-standby ⇒ Восстановить демонстрационный резервный кластер
pg-standby ⇒ Запустить PostgreSQL и проверить конфигурацию pgBackRest
После восстановления резервного сервера можно включить резервное копирование с него.
repository:/etc/pgbackrest/pgbackrest.conf ⇒ Снова включить резервное копирование с резервного сервера
4 - Справочник команд
Введение
Команды выполняют различные функции pgBackRest. Здесь приведён полный список параметров команд: каждый применимый к команде параметр перечислен в её описании, даже если он применим и к другим командам. Сюда входят все параметры, которые также можно настроить в pgbackrest.conf.
Параметры, не имеющие логического типа, заданные в pgbackrest.conf, можно сбросить к значениям по умолчанию из командной строки с помощью префикса reset-. Это позволяет восстановить резервную копию непосредственно на сервере репозитория. Обычно pgBackRest выдаёт ошибку, поскольку определяет, что сервер базы данных удалённый, а удалённое восстановление невозможно. Если добавить --reset-pg1-host в командную строку, pgBackRest проигнорирует удалённый сервер базы данных и выполнит восстановление локально. Может потребоваться передать новый --pg1-path, чтобы выполнить восстановление в определённый каталог, отличный от каталога на сервере базы данных.
Префикс no- позволяет задать логическому параметру значение false в командной строке.
Любой параметр можно задать переменной окружения, добавив префикс PGBACKREST_ к имени параметра в верхнем регистре и заменив - на _: например, pg1-path превращается в PGBACKREST_PG1_PATH, а stanza — в PGBACKREST_STANZA. Логические параметры представляются так же, как в файле конфигурации, например PGBACKREST_COMPRESS="n"; варианты reset-* не допускаются. Для параметров, которые можно указывать несколько раз в командной строке или файле конфигурации, значения разделяются двоеточиями, например PGBACKREST_DB_INCLUDE="db1:db2".
Параметры командной строки переопределяют параметры окружения, а те переопределяют параметры файла конфигурации.
Сведения о типах параметров приведены во введении в конфигурацию
Команды
| Команда | Краткое описание |
|---|---|
annotate
|
Добавление, изменение или удаление аннотаций резервной копии после её создания. |
archive-get
|
Получение архивированных сегментов WAL для восстановления, PITR или восстановления реплики. |
archive-push
|
Получение сегментов WAL от PostgreSQL и отправка их в настроенные репозитории. |
backup
|
Создание резервных копий в целевом репозитории (по умолчанию — репозиторий с наивысшим приоритетом). |
check
|
Проверка конфигурации резервного копирования и архивирования stanza, а также работы архивирования WAL. |
expire
|
Удаление резервных копий и архивного WAL согласно настроенным политикам хранения. |
help
|
Вывод общей справки, справки по команде или по параметру. |
info
|
Вывод состояния и метаданных stanza и резервных копий в текстовом формате или JSON. |
repo-get
|
Чтение файлов репозитория (подобно cat) для администрирования, исследования и тестирования. |
repo-ls
|
Вывод списка файлов и путей репозитория (подобно ls) для администрирования, исследования и тестирования. |
restore
|
Восстановление из резервной копии (по умолчанию — последней) с возможностью восстановления на заданный момент времени. |
server
|
Запуск TLS-сервера pgBackRest для доступа к удалённому серверу без SSH. |
server-ping
|
Проверка того, что TLS-сервер pgBackRest принимает соединения. |
stanza-create
|
Создание метаданных stanza во всех настроенных репозиториях. |
stanza-delete
|
Безвозвратное удаление всех резервных копий и архивов stanza. |
stanza-upgrade
|
Обновление метаданных stanza после обновления основной версии PostgreSQL. |
start
|
Возобновление разрешения на запуск процессов pgBackRest после команды stop. |
stop
|
Запрет запуска новых процессов pgBackRest и, при необходимости, принудительная остановка работающих. |
verify
|
Проверка корректности данных резервных копий и архива в репозитории. |
version
|
Вывод установленной версии pgBackRest. |
4.1 - Команда аннотирования (annotate)
annotate.Аннотации, заданные при выполнении команды backup, впоследствии можно добавлять, изменять и удалять с помощью команды annotate.
Параметры команды
Параметр аннотации резервной копии (--annotation)
Добавление к резервной копии пользовательских пар «ключ — значение».
Пользователи могут добавлять к резервной копии информационные пары «ключ — значение». Этот параметр можно указывать несколько раз для добавления нескольких аннотаций.
Аннотации включаются в текстовый вывод команды info, если резервная копия указана через --set, и всегда присутствуют в выводе JSON.
Параметр набора резервной копии (--set)
Набор резервной копии для аннотирования.
Набор резервной копии, к которому применяются аннотации.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
4.2 - Команда получения из архива (archive-get)
archive-get.PostgreSQL использует эту команду для восстановления резервной копии, выполнения PITR или поддержания реплики в актуальном состоянии как альтернативу потоковой передаче. Сегменты WAL необходимы для восстановления PostgreSQL или поддержания реплики.
Если настроено несколько репозиториев, WAL запрашивается из них в порядке приоритета (например, repo1, repo2 и т. д.). Как правило, более быстрому или дешёвому хранилищу лучше назначать более высокий приоритет. Если репозиторий указан параметром --repo, поиск выполняется только в нём.
При восстановлении pgBackRest настраивает и формирует команду archive-get для использования PostgreSQL. Пример приведён в разделе Восстановление на заданный момент времени
.
Параметры команды
Параметр асинхронного архивирования (--archive-async)
Асинхронная отправка и получение сегментов WAL.
Включает асинхронный режим работы команд archive-push и archive-get.
Асинхронный режим эффективнее, поскольку позволяет повторно использовать соединения и выполнять операции параллельно. Дополнительные сведения приведены в описании параметров spool-path, archive-get-queue-max и archive-push-queue-max.
Параметр максимального размера очереди получения из архива (--archive-get-queue-max)
Максимальный размер очереди archive-get в pgBackRest.
Задаёт максимальный размер очереди archive-get при включённом archive-async. Очередь хранится в spool-path и ускоряет передачу WAL в PostgreSQL.
Параметр повторного запроса отсутствующего сегмента WAL (--archive-missing-retry)
Повторный запрос отсутствующего сегмента WAL
Повторно запрашивает сегмент WAL, об отсутствии которого ранее сообщила команда archive-get в асинхронном режиме. Это предотвращает использование уведомлений в каталоге очереди, оставшихся от предыдущего восстановления, которые могли бы привести к сбою восстановления, если согласованность ещё не достигнута.
Отключение этого параметра позволяет PostgreSQL надёжнее определять достижение конца WAL в архиве и переключаться на потоковую передачу с первичного сервера. Если повторные запросы включены, непрерывное поступление WAL в архив заставляет PostgreSQL продолжать получать WAL из архива вместо переключения на потоковую передачу.
При отключении этого параметра важно убедиться, что каталог очереди для stanza пуст. Команда restore очищает его автоматически, если каталог очереди настроен на момент восстановления. В противном случае пользователь должен самостоятельно обеспечить его очистку.
Параметр тайм-аута архивирования (--archive-timeout)
Тайм-аут архивирования.
Задаёт максимальное время в секундах, в течение которого ожидается поступление каждого сегмента WAL в архивный репозиторий pgBackRest. Тайм-аут применяется к командам check и backup, когда они ожидают архивирования сегментов WAL, необходимых для согласованности резервной копии.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды pgBackRest (--cmd)
Команда pgBackRest.
pgBackRest может формировать командную строку, например когда команда restore создаёт настройку restore_command. В этом случае используется команда, которой был запущен процесс pgBackRest, если не задан параметр cmd.
ОСТОРОЖНО:
Использование обёртки для команды pgBackRest может привести к непредсказуемому поведению и не рекомендуется.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр максимального числа процессов (--process-max)
Максимальное число процессов для сжатия и передачи данных.
Каждый процесс выполняет сжатие и передачу, ускоряя выполнение команды, однако не следует задавать process-max настолько большим, чтобы это ухудшало производительность базы данных.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр каталога очереди (--spool-path)
Путь для хранения промежуточных данных.
Этот каталог используется для хранения данных асинхронных команд archive-push и archive-get.
Асинхронная команда archive-push записывает подтверждения в каталог очереди после успешного сохранения WAL в архиве (а при сбое — сообщения об ошибках), чтобы процесс переднего плана мог быстро уведомить PostgreSQL. Файлы подтверждений очень малы: нулевого размера при успехе и несколько сотен байтов при ошибке.
Асинхронная команда archive-get помещает WAL в очередь в каталоге очереди, чтобы быстро передавать его по запросу PostgreSQL. Перемещение файлов в PostgreSQL наиболее эффективно, когда каталог очереди находится в той же файловой системе, что и pg_xlog/pg_wal. Однако не рекомендуется размещать каталог очереди внутри pg_xlog/pg_wal, поскольку это может вызвать проблемы у утилит PostgreSQL, таких как pg_rewind.
Данные в каталоге очереди нельзя считать строго временными: они могут сохраняться после перезагрузки, и их следует сохранять. Однако их потеря не представляет проблемы. pgBackRest просто повторно проверит каждый сегмент WAL, чтобы убедиться в его надёжном архивировании для archive-push, и заново построит очередь для archive-get.
Каталог очереди предназначен для размещения в локальной файловой системе, совместимой с Posix, а не в удалённой файловой системе, такой как NFS или CIFS.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр целевого времени репозитория (--repo-target-time)
Целевое время репозитория.
Целевое время определяет момент, на который команды читают репозиторий в хранилище с версионированием. Это позволяет прочитать состояние репозитория на определённый момент времени и восстановить данные, удалённые или повреждённые по ошибке пользователя либо вредоносным ПО.
S3, GCS и Azure поддерживают версионирование, но обычно оно отключено по умолчанию. Помимо включения версионирования, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
Если указан параметр repo-target-time, необходимо также указать repo. Версионирование, вероятно, поддерживается не всеми типами репозиториев, и в целом при восстановлении разумно обращаться к одному конкретному репозиторию.
Временные метки хранилища сравниваются с указанной по условию <=; миллисекунды, если они указаны, отбрасываются.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры stanza
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
4.3 - Команда отправки в архив (archive-push)
archive-push.Принимает сегмент WAL от PostgreSQL и архивирует его в каждом репозитории, заданном индексированным параметром repo-path (сведения о настройке репозиториев приведены в разделе Репозиторий
). В зависимости от archive-async сегмент WAL может быть сразу отправлен в архив или сохранён локально. При нескольких настроенных репозиториях archive-push пытается отправить сегмент в максимально возможное их число.
Команда archive-push предназначена для настройки и вызова из PostgreSQL. Пример приведён в разделе Настройка архивирования
.
Параметры команды
Параметр асинхронного архивирования (--archive-async)
Асинхронная отправка и получение сегментов WAL.
Включает асинхронный режим работы команд archive-push и archive-get.
Асинхронный режим эффективнее, поскольку позволяет повторно использовать соединения и выполнять операции параллельно. Дополнительные сведения приведены в описании параметров spool-path, archive-get-queue-max и archive-push-queue-max.
Параметр проверки архива (--archive-check)
Проверка наличия сегментов WAL в архиве перед завершением резервного копирования.
Проверяет, что все сегменты WAL, необходимые для согласованности резервной копии, присутствуют в архиве WAL. Рекомендуется оставить значение по умолчанию, если не используется другой способ архивирования.
Этот параметр должен быть включён, если включён archive-copy.
Параметр проверки режима архивирования (--archive-mode-check)
Проверка настройки PostgreSQL archive_mode.
Этот параметр включён по умолчанию и запрещает использовать в PostgreSQL archive_mode=always.
Сегменты WAL, отправляемые с резервного сервера, могут логически совпадать с сегментами WAL с первичного сервера, но иметь другие контрольные суммы. Во избежание конфликтов рекомендуется отключить архивирование из нескольких источников.
ОСТОРОЖНО:
Если этот параметр отключён, крайне важно обеспечить, чтобы в репозиторий через команду archive-push писал только один процесс архивирования.
Параметр размера пакета отправки в архив (--archive-push-batch-size)
Максимальный объём WAL, отправляемый за один асинхронный запуск.
В асинхронном режиме процесс archive-push отправляет все готовые сегменты WAL за один запуск. Поскольку archive-push-queue-max проверяется только в начале каждого запуска, при обработке очень большого числа сегментов очередь может значительно превысить предел до следующей проверки.
Этот параметр ограничивает объём WAL, обрабатываемый за один запуск, после чего процесс завершается и вновь запускается следующим вызовом archive-push, который повторно проверяет очередь. Меньшие значения позволяют проверять очередь чаще, но требуют более частого запуска асинхронного процесса. Значение округляется вниз до целого числа сегментов WAL, однако всегда обрабатывается хотя бы один сегмент.
Параметр максимального размера очереди отправки в архив (--archive-push-queue-max)
Максимальный размер очереди архивирования PostgreSQL.
При достижении предела произойдёт следующее:
- pgBackRest сообщит PostgreSQL об успешном архивировании WAL, а затем УДАЛИТ ЕГО.
- В журнал PostgreSQL будет выведено предупреждение.
В этом случае поток архивного журнала прервётся, и PITR за этой точкой станет невозможен. Чтобы вновь обеспечить полные возможности восстановления, потребуется новая резервная копия.
В асинхронном режиме удаляется вся очередь, чтобы отдельные сегменты WAL не успевали попадать в архив до повторного превышения предела очереди.
В асинхронном режиме этот предел проверяется только в начале каждого запуска archive-push, поэтому за один запуск очередь может превысить его. Уменьшите archive-push-batch-size, чтобы проверять очередь чаще.
Эта возможность предотвращает заполнение тома с журналом, при котором PostgreSQL полностью остановится. Лучше потерять резервную копию, чем допустить остановку PostgreSQL.
Устаревшее имя: archive-queue-max
Параметр тайм-аута архивирования (--archive-timeout)
Тайм-аут архивирования.
Задаёт максимальное время в секундах, в течение которого ожидается поступление каждого сегмента WAL в архивный репозиторий pgBackRest. Тайм-аут применяется к командам check и backup, когда они ожидают архивирования сегментов WAL, необходимых для согласованности резервной копии.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды pgBackRest (--cmd)
Команда pgBackRest.
pgBackRest может формировать командную строку, например когда команда restore создаёт настройку restore_command. В этом случае используется команда, которой был запущен процесс pgBackRest, если не задан параметр cmd.
ОСТОРОЖНО:
Использование обёртки для команды pgBackRest может привести к непредсказуемому поведению и не рекомендуется.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр сжатия (--compress)
Сжатие файлов.
Файлы резервных копий совместимы с утилитами сжатия командной строки.
Этот параметр устарел. Вместо него следует использовать compress-type.
Параметр уровня сжатия (--compress-level)
Уровень сжатия файлов.
Задаёт уровень сжатия файлов, когда compress-type не равен none или задано compress=y (устаревший вариант).
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр типа сжатия (--compress-type)
Тип сжатия файлов.
Поддерживаются следующие типы сжатия:
none- без сжатияbz2- формат сжатия bzip2gz- формат сжатия gziplz4- формат сжатия lz4 (доступен не на всех платформах)zst- формат сжатия Zstandard (доступен не на всех платформах)
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр максимального числа процессов (--process-max)
Максимальное число процессов для сжатия и передачи данных.
Каждый процесс выполняет сжатие и передачу, ускоряя выполнение команды, однако не следует задавать process-max настолько большим, чтобы это ухудшало производительность базы данных.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр каталога очереди (--spool-path)
Путь для хранения промежуточных данных.
Этот каталог используется для хранения данных асинхронных команд archive-push и archive-get.
Асинхронная команда archive-push записывает подтверждения в каталог очереди после успешного сохранения WAL в архиве (а при сбое — сообщения об ошибках), чтобы процесс переднего плана мог быстро уведомить PostgreSQL. Файлы подтверждений очень малы: нулевого размера при успехе и несколько сотен байтов при ошибке.
Асинхронная команда archive-get помещает WAL в очередь в каталоге очереди, чтобы быстро передавать его по запросу PostgreSQL. Перемещение файлов в PostgreSQL наиболее эффективно, когда каталог очереди находится в той же файловой системе, что и pg_xlog/pg_wal. Однако не рекомендуется размещать каталог очереди внутри pg_xlog/pg_wal, поскольку это может вызвать проблемы у утилит PostgreSQL, таких как pg_rewind.
Данные в каталоге очереди нельзя считать строго временными: они могут сохраняться после перезагрузки, и их следует сохранять. Однако их потеря не представляет проблемы. pgBackRest просто повторно проверит каждый сегмент WAL, чтобы убедиться в его надёжном архивировании для archive-push, и заново построит очередь для archive-get.
Каталог очереди предназначен для размещения в локальной файловой системе, совместимой с Posix, а не в удалённой файловой системе, такой как NFS или CIFS.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр проверки заголовков WAL (--archive-header-check)
Проверка версии и идентификатора PostgreSQL в заголовках WAL.
Этот параметр включён по умолчанию и проверяет соответствие заголовка WAL версии PostgreSQL и системному идентификатору, чтобы убедиться, что WAL копируется в правильную stanza. Эта проверка дополняет проверку соответствия pg_control stanza и проверку того, что WAL копируется из того же каталога данных PostgreSQL, где находится pg_control.
Поэтому отключение этой проверки достаточно безопасно, но делать это следует только при необходимости, например если WAL зашифрован.
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры stanza
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
4.4 - Команда резервного копирования (backup)
backup.Если настроено несколько репозиториев, pgBackRest создаёт резервную копию в репозитории с наивысшим приоритетом (например, repo1), если не указан параметр --repo.
В pgBackRest нет встроенного планировщика, поэтому лучше запускать его через cron или другой механизм планирования.
Подробности и примеры приведены в разделе Создание резервной копии .
Параметры команды
Параметр аннотации резервной копии (--annotation)
Добавление к резервной копии пользовательских пар «ключ — значение».
Пользователи могут добавлять к резервной копии информационные пары «ключ — значение». Этот параметр можно указывать несколько раз для добавления нескольких аннотаций.
Аннотации включаются в текстовый вывод команды info, если резервная копия указана через --set, и всегда присутствуют в выводе JSON.
Параметр проверки архива (--archive-check)
Проверка наличия сегментов WAL в архиве перед завершением резервного копирования.
Проверяет, что все сегменты WAL, необходимые для согласованности резервной копии, присутствуют в архиве WAL. Рекомендуется оставить значение по умолчанию, если не используется другой способ архивирования.
Этот параметр должен быть включён, если включён archive-copy.
Параметр копирования архива (--archive-copy)
Копирование в резервную копию сегментов WAL, необходимых для согласованности.
Этот параметр обеспечивает дополнительную предосторожность: он защищает от повреждения архива сегментов WAL, сохраняя сегменты, необходимые для согласованности, непосредственно в резервной копии. Сегменты WAL по-прежнему сохраняются и в архиве, поэтому параметр увеличивает расход места.
При использовании этого параметра желательно, чтобы команды archive-push и backup имели одинаковый compress-type (например, lz4). Иначе сегменты WAL потребуется повторно сжать с compress-type, используемым резервной копией, что может потребовать значительных ресурсов в зависимости от объёма WAL, созданного во время резервного копирования.
При восстановлении сегменты WAL будут находиться в pg_xlog/pg_wal, и PostgreSQL предпочтёт использовать их, а не вызывать restore_command.
Параметр archive-check должен быть включён, если включён archive-copy.
Параметр проверки режима архивирования (--archive-mode-check)
Проверка настройки PostgreSQL archive_mode.
Этот параметр включён по умолчанию и запрещает использовать в PostgreSQL archive_mode=always.
Сегменты WAL, отправляемые с резервного сервера, могут логически совпадать с сегментами WAL с первичного сервера, но иметь другие контрольные суммы. Во избежание конфликтов рекомендуется отключить архивирование из нескольких источников.
ОСТОРОЖНО:
Если этот параметр отключён, крайне важно обеспечить, чтобы в репозиторий через команду archive-push писал только один процесс архивирования.
Параметр тайм-аута архивирования (--archive-timeout)
Тайм-аут архивирования.
Задаёт максимальное время в секундах, в течение которого ожидается поступление каждого сегмента WAL в архивный репозиторий pgBackRest. Тайм-аут применяется к командам check и backup, когда они ожидают архивирования сегментов WAL, необходимых для согласованности резервной копии.
Параметр резервного копирования с резервного сервера (--backup-standby)
Резервное копирование с резервного кластера.
Включает резервное копирование с резервного сервера для снижения нагрузки на первичный кластер. Этот параметр требует настройки как первичного, так и резервного сервера.
Поддерживаются следующие режимы:
y- Для резервного копирования необходим резервный сервер.prefer- Копирование с резервного сервера, если он доступен; иначе с первичного.n- Копирование только с первичного сервера.
Параметр контрольных сумм страниц (--checksum-page)
Проверка контрольных сумм страниц данных.
Указывает pgBackRest проверять контрольные суммы всех страниц данных при резервном копировании кластера. Этот параметр включается автоматически, если в кластере включены контрольные суммы страниц данных.
Ошибки проверки контрольных сумм не прерывают резервное копирование. Вместо этого в журнал выводятся предупреждения (а при настройках по умолчанию — и в консоль), а список некорректных страниц сохраняется в манифесте резервной копии.
Параметр исключения путей и файлов (--exclude)
Исключение путей и файлов из резервной копии.
Все исключения задаются относительно $PGDATA. Если исключение заканчивается на /, исключаются только файлы в указанном каталоге: например, --exclude=junk/ исключит все файлы в каталоге $PGDATA/junk, но сохранит сам каталог. Если исключение не заканчивается на /, файл может либо точно совпадать с исключением, либо соответствовать исключению с добавленным /: например, --exclude=junk исключит каталог $PGDATA/junk и все содержащиеся в нём файлы.
Используйте эту возможность осторожно: очень легко исключить важные данные и нарушить согласованность резервной копии. Обязательно проверяйте восстановление!
Все исключённые файлы записываются в журнал на уровне info вместе с правилом исключения. Обязательно проверяйте список исключённых файлов, чтобы убедиться, что ничего не исключено случайно.
ПРИМЕЧАНИЕ: при дельта-восстановлении исключения не учитываются. Все файлы и каталоги, исключённые при резервном копировании, будут удалены при дельта-восстановлении.
Этот параметр не следует использовать для исключения журналов PostgreSQL из резервной копии. Журналы можно вынести за пределы каталога PGDATA с помощью настройки PostgreSQL log_directory; при этом они также сохранятся после восстановления.
В командной строке или файле конфигурации можно задать несколько исключений.
Параметр автоматического удаления устаревших копий (--expire-auto)
Автоматический запуск команды expire после успешного резервного копирования.
Этот параметр включён по умолчанию. Отключать его следует с осторожностью: в этом случае все резервные копии и архивы будут храниться бессрочно, что может привести к исчерпанию места в репозитории. Чтобы избежать этого, необходимо регулярно запускать команду expire.
При автоматическом запуске после успешного резервного копирования expire использует конфигурацию команды backup, поэтому параметры, заданные только в секции команды expire (например, [global:expire]), не применяются. Чтобы применялась конфигурация, специфичная для expire, отключите этот параметр и запускайте команду expire отдельно.
Параметр принудительного выполнения (--force)
Принудительное резервное копирование остановленного кластера.
При использовании с --no-start-stop резервное копирование выполняется, даже если pgBackRest считает PostgreSQL работающим. Этот параметр следует использовать крайне осторожно, поскольку он, скорее всего, приведёт к созданию непригодной резервной копии.
В некоторых ситуациях резервное копирование может быть желательно и при таких условиях. Например, если сервер аварийно завершил работу, а том кластера базы данных можно смонтировать только для чтения, имеет смысл создать резервную копию, даже если присутствует postmaster.pid. В таком случае лучше было бы вернуться к предыдущей копии и воспроизвести WAL, но в сегменте WAL, не попавшем в архив, может находиться очень важная транзакция.
Параметр порога сохранения манифеста (--manifest-save-threshold)
Порог сохранения манифеста при резервном копировании.
Определяет, как часто манифест сохраняется во время резервного копирования. Сохранять его важно, поскольку он содержит контрольные суммы и обеспечивает эффективное возобновление. Фактический порог равен большему из двух значений: 1% размера резервной копии или manifest-save-threshold.
Параметр копирования работающего кластера (--online)
Резервное копирование работающего кластера.
Параметр –no-online запрещает pgBackRest вызывать функции начала и завершения резервного копирования на кластере базы данных. Для этого PostgreSQL следует остановить; если он работает, pgBackRest выдаст ошибку.
Этот параметр позволяет создавать резервные копии остановленного кластера. Каталог pg_xlog/pg_wal копируется как есть, а archive-check автоматически отключается для этой копии.
Параметр возобновления (--resume)
Разрешение возобновления неудавшегося резервного копирования.
Определяет, включена ли возможность возобновления. Она может значительно сократить время резервного копирования после сбоя предыдущей попытки того же типа. Однако она усложняет работу, поэтому в средах, где она не нужна, может быть желательно её отключить.
Параметр быстрого запуска (--start-fast)
Принудительная контрольная точка для быстрого начала резервного копирования.
Принудительно выполняет контрольную точку, передавая y в параметр fast функции начала резервного копирования, чтобы копирование началось немедленно. Иначе резервное копирование начнётся после следующей плановой контрольной точки.
Параметр типа (--type)
Тип резервной копии.
Поддерживаются следующие типы резервных копий:
full- Копируются все файлы кластера базы данных; зависимостей от предыдущих копий нет.incr- Инкрементная копия относительно последней успешной резервной копии.diff- Аналогична инкрементной копии, но всегда основана на последней полной копии.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды pgBackRest (--cmd)
Команда pgBackRest.
pgBackRest может формировать командную строку, например когда команда restore создаёт настройку restore_command. В этом случае используется команда, которой был запущен процесс pgBackRest, если не задан параметр cmd.
ОСТОРОЖНО:
Использование обёртки для команды pgBackRest может привести к непредсказуемому поведению и не рекомендуется.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр сжатия (--compress)
Сжатие файлов.
Файлы резервных копий совместимы с утилитами сжатия командной строки.
Этот параметр устарел. Вместо него следует использовать compress-type.
Параметр уровня сжатия (--compress-level)
Уровень сжатия файлов.
Задаёт уровень сжатия файлов, когда compress-type не равен none или задано compress=y (устаревший вариант).
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр типа сжатия (--compress-type)
Тип сжатия файлов.
Поддерживаются следующие типы сжатия:
none- без сжатияbz2- формат сжатия bzip2gz- формат сжатия gziplz4- формат сжатия lz4 (доступен не на всех платформах)zst- формат сжатия Zstandard (доступен не на всех платформах)
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута базы данных (--db-timeout)
Тайм-аут запроса к базе данных.
Задаёт тайм-аут запросов к базе данных в секундах. Он распространяется и на функции начала и завершения резервного копирования, каждая из которых может выполняться довольно долго. Поэтому следует задавать большой тайм-аут, если нет уверенности, что эти функции завершатся быстро (то есть если задано start-fast=y и известно, что кластер базы данных не создаст много сегментов WAL во время резервного копирования).
ПРИМЕЧАНИЕ: параметр
db-timeoutдолжен быть меньшеprotocol-timeout.
Параметр дельта-восстановления и копирования (--delta)
Восстановление или резервное копирование с использованием контрольных сумм.
При восстановлении по умолчанию предполагается, что каталоги данных и табличных пространств PostgreSQL существуют, но пусты. Этот параметр выполняет дельта-восстановление с использованием контрольных сумм.
При резервном копировании этот параметр использует контрольные суммы вместо временных меток, чтобы определить, нужно ли копировать файлы.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр максимального числа процессов (--process-max)
Максимальное число процессов для сжатия и передачи данных.
Каждый процесс выполняет сжатие и передачу, ускоряя выполнение команды, однако не следует задавать process-max настолько большим, чтобы это ухудшало производительность базы данных.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр проверки заголовков страниц (--page-header-check)
Проверка заголовков страниц PostgreSQL.
Этот параметр включён по умолчанию и добавляет проверки заголовков страниц.
Следует избегать отключения этого параметра, кроме случаев, когда оно необходимо, например если страницы зашифрованы.
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр поблочного инкрементного резервного копирования (--repo-block)
Включение поблочного инкрементного резервного копирования.
Поблочное инкрементное копирование позволяет создавать более детальные резервные копии, разбивая файлы на блоки, которые можно копировать независимо. Это экономит место в репозитории и может ускорить дельта-восстановление, поскольку отдельные блоки можно получать без чтения всего файла из репозитория.
ПРИМЕЧАНИЕ: прежде чем включить
repo-block, необходимо включить параметрrepo-bundle.
Размер блока определяется размером и возрастом файла. Как правило, для более старых или крупных файлов выбираются более крупные блоки. Если файл достаточно старый, поблочное инкрементное копирование для него не используется.
Поблочное инкрементное копирование наиболее эффективно, когда включено для всех типов резервных копий, в том числе полных. Полная копия при этом становится немного больше, зато последующие дифференциальные и инкрементные копии могут использовать созданные ею карты блоков для экономии места.
Параметр пакетирования файлов в репозитории (--repo-bundle)
Пакетирование файлов в репозитории.
Объединяет небольшие файлы в пакеты, уменьшая общее число файлов, записываемых в репозиторий. Записывать меньше файлов обычно эффективнее, особенно в объектные хранилища, такие как S3. Кроме того, файлы нулевого размера не сохраняются (кроме записей в манифесте), что экономит время и место.
Параметр предельного размера файла в пакете репозитория (--repo-bundle-limit)
Предельный размер файлов для пакетирования.
Максимальный размер файлов, включаемых в пакеты. Файлы большего размера хранятся отдельно.
Файлы в пакетах нельзя использовать повторно при возобновлении резервного копирования, поэтому этот параметр определяет, какие файлы можно использовать при возобновлении: чем больше значение, тем меньше таких файлов.
Параметр размера пакета репозитория (--repo-bundle-size)
Целевой размер пакета файлов.
Определяет целевой суммарный размер файлов, добавляемых в один пакет. Несжатый пакет может достигать размера repo-bundle-size + repo-bundle-limit, поэтому не следует задавать этому параметру максимальный размер, допустимый файловой системой.
Как правило, слишком большое значение нежелательно: при повторной попытке потребуется заново обработать весь пакет.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр жёстких ссылок в репозитории (--repo-hardlink)
Жёсткие ссылки между файлами резервных копий в репозитории.
Включает создание жёстких ссылок из дифференциальных и инкрементных копий на файлы соответствующих полных копий. На уровне файловой системы каждая копия при этом выглядит полной. Однако следует соблюдать осторожность: изменение файлов с жёсткими ссылками может затронуть все резервные копии в наборе.
Устаревшее имя: hardlink
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр хранения архива (--repo-retention-archive)
Число резервных копий, для которых сохраняется непрерывный WAL.
ПРИМЕЧАНИЕ: сегменты WAL, необходимые для согласованности резервной копии, всегда сохраняются до удаления этой копии независимо от настройки данного параметра.
Если значение не задано, а repo-retention-full-type равен count (по умолчанию), то для удаления архива по умолчанию используется значение repo-retention-full (или repo-retention-diff), соответствующее repo-retention-archive-type, заданному как full (или diff). Это гарантирует, что WAL удаляется только для уже удалённых резервных копий. Если repo-retention-full-type равен time, по умолчанию удаляются архивы, предшествующие самой старой полной копии, оставшейся после применения настройки repo-retention-full.
Этот параметр должен быть задан, если repo-retention-archive-type равен incr. При острой нехватке дискового пространства он вместе с repo-retention-archive-type позволяет агрессивнее удалять сегменты WAL. Однако это исключает возможность PITR из копий с удалённым WAL и потому не рекомендуется.
Устаревшее имя: retention-archive
Параметр типа хранения архива (--repo-retention-archive-type)
Тип резервных копий для хранения WAL.
При значении full pgBackRest сохраняет архивные журналы для числа полных резервных копий, заданного repo-retention-archive. При значении diff (дифференциальные) pgBackRest сохраняет архивные журналы для числа полных и дифференциальных копий, заданного repo-retention-archive: если последняя копия полная, для целей хранения в репозитории она учитывается как дифференциальная. При значении incr (инкрементные) pgBackRest сохраняет архивные журналы для числа полных, дифференциальных и инкрементных копий, заданного repo-retention-archive. Рекомендуется оставить значение по умолчанию, при котором WAL удаляется только вместе с полными резервными копиями.
Устаревшее имя: retention-archive-type
Параметр хранения дифференциальных копий (--repo-retention-diff)
Число сохраняемых дифференциальных резервных копий.
При удалении дифференциальной копии также удаляются все связанные с ней инкрементные копии. Если параметр не задан, все дифференциальные копии сохраняются до удаления полных копий, от которых они зависят.
При определении копий для удаления полные копии учитываются в числе дифференциальных. В большинстве случаев это немного уменьшает число дифференциальных копий, которые необходимо хранить.
Устаревшее имя: retention-diff
Параметр хранения полных копий (--repo-retention-full)
Число или срок хранения полных резервных копий.
При удалении полной копии также удаляются все связанные с ней дифференциальные и инкрементные копии. Если параметр не задан, выводится предупреждение. Для бессрочного хранения задайте максимальное значение.
Устаревшее имя: retention-full
Параметр типа хранения полных копий (--repo-retention-full-type)
Тип срока хранения полных резервных копий.
Определяет, означает ли настройка repo-retention-full период времени (в днях) или число полных копий, которые нужно сохранять.
При значении time полные копии старше repo-retention-full удаляются из репозитория, если существует хотя бы ещё одна копия, возраст которой не меньше значения repo-retention-full. Например, если repo-retention-full равен 30 (дней) и есть 2 полные копии возрастом 25 и 35 дней, ни одна не будет удалена: после удаления копии возрастом 35 дней останется только копия возрастом 25 дней, что нарушит политику хранения за 30 дней. Эта политика требует наличия хотя бы одной копии возрастом 30 дней перед удалением более старой. Архивный WAL, предшествующий самой старой оставшейся полной копии, удаляется автоматически, если repo-retention-archive-type и repo-retention-archive не заданы явно.
При значении count полные копии сверх числа repo-retention-full удаляются. Например, если repo-retention-full равен 4 и завершается пятая полная копия, самая старая полная копия будет удалена, чтобы их число осталось равным 4.
Резервная копия учитывается при применении политики хранения только после успешного завершения. Например, если repo-retention-full-type равен count, а repo-retention-full равен 2, для удаления самой старой копии должны существовать 3 завершённые полные копии.
Параметр хранения истории резервных копий (--repo-retention-history)
Число дней хранения манифестов истории резервных копий.
После завершения резервного копирования копия манифеста сохраняется в каталоге backup.history. По умолчанию эти файлы никогда не удаляются, поскольку полезны для анализа данных, например для измерения роста резервных копий и WAL со временем.
Параметр repo-retention-history задаёт число дней хранения манифестов истории резервных копий. Неудалённые резервные копии всегда сохраняются в истории. Укажите repo-retention-history=0, чтобы хранить историю только для неудалённых резервных копий.
При удалении манифеста истории полной резервной копии также удаляются манифесты истории всех связанных с ней дифференциальных и инкрементных копий.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр символических ссылок в репозитории (--repo-symlink)
Создание символических ссылок внутри репозитория.
Включает создание символических ссылок latest и ссылок табличных пространств. Эти ссылки наиболее полезны при использовании снимков для восстановления непосредственно в репозитории, что встречается редко.
Хотя подавляющему большинству пользователей эта возможность, вероятно, не нужна, она остаётся включённой по умолчанию ради совместимости. Однако для Posix-подобных хранилищ, не поддерживающих символические ссылки, может быть полезно отключить их.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры stanza
Параметр базы данных PostgreSQL (--pg-database)
База данных PostgreSQL.
Имя базы данных для соединения с PostgreSQL. Обычно лучше оставить значение по умолчанию, но в некоторых установках такой базы может не быть.
По историческим причинам значение переменной окружения PGDATABASE игнорируется.
Параметр сервера PostgreSQL (--pg-host)
Сервер PostgreSQL для удалённой работы.
Используется при резервном копировании, когда сервер PostgreSQL отличается от сервера репозитория.
Устаревшее имя: db-host
Параметр файла центра сертификации сервера PostgreSQL (--pg-host-ca-file)
Файл центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера PostgreSQL (--pg-host-ca-path)
Каталог центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера PostgreSQL (--pg-host-cert-file)
Файл сертификата для сервера PostgreSQL.
Отправляется серверу PostgreSQL для подтверждения личности клиента.
Параметр команды на сервере PostgreSQL (--pg-host-cmd)
Команда pgBackRest на сервере PostgreSQL.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере PostgreSQL различается. Если параметр не задан, команда на сервере PostgreSQL будет той же, что и локальная команда.
Устаревшее имя: db-cmd
Параметр файла конфигурации сервера PostgreSQL (--pg-host-config)
Файл конфигурации pgBackRest на сервере базы данных.
Задаёт расположение файла конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: db-config
Параметр каталога включаемых конфигураций сервера PostgreSQL (--pg-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере базы данных.
Задаёт расположение каталога включаемых конфигураций на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера PostgreSQL (--pg-host-config-path)
Каталог конфигурации pgBackRest на сервере базы данных.
Задаёт расположение каталога конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера PostgreSQL (--pg-host-key-file)
Файл ключа для сервера PostgreSQL.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера PostgreSQL (--pg-host-port)
Порт сервера PostgreSQL при заданном pg-host.
Позволяет указать нестандартный порт для протокола сервера PostgreSQL.
ПРИМЕЧАНИЕ: при
pg-host-type=sshдляpg-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: db-ssh-port
Параметр типа протокола сервера PostgreSQL (--pg-host-type)
Тип протокола сервера PostgreSQL.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера PostgreSQL (--pg-host-user)
Пользователь для входа на сервер PostgreSQL при заданном pg-host.
Этот пользователь также будет владельцем удалённого процесса pgBackRest и будет устанавливать соединения с PostgreSQL. Для правильной работы следует использовать владельца кластера базы данных PostgreSQL, обычно это пользователь postgres, выбранный по умолчанию.
Устаревшее имя: db-user
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
Параметр порта PostgreSQL (--pg-port)
Порт PostgreSQL.
Порт, на котором работает PostgreSQL. Обычно его не требуется указывать, поскольку большинство кластеров PostgreSQL работают на порту по умолчанию.
Устаревшее имя: db-port
Параметр каталога сокета PostgreSQL (--pg-socket-path)
Каталог Unix-сокета PostgreSQL.
Каталог Unix-сокета, указанный при запуске PostgreSQL. pgBackRest автоматически проверяет стандартное расположение для используемой ОС, поэтому обычно этот параметр не требуется, если каталог сокета не был явно изменён настройкой unix_socket_directories в postgresql.conf.
Устаревшее имя: db-socket-path
Параметр пользователя базы данных PostgreSQL (--pg-user)
Пользователь базы данных PostgreSQL.
Имя пользователя базы данных для соединения с PostgreSQL. Если оно не указано, pgBackRest использует локального пользователя ОС или PGUSER.
4.5 - Команда проверки конфигурации (check)
check.Команда check проверяет правильность настройки pgBackRest и archive_command для архивирования и резервного копирования указанной stanza. Она пытается проверить все репозитории и базы данных, настроенные для сервера, на котором запущена. Команда обнаруживает ошибки конфигурации, особенно архивирования, из-за которых резервные копии оказываются неполными, поскольку необходимые сегменты WAL не попали в архив. Её можно запускать на сервере PostgreSQL или сервере репозитория. Также её можно запускать на резервном сервере, однако, поскольку pg_switch_xlog()/pg_switch_wal() нельзя выполнить на резервном сервере, в этом случае проверяется только конфигурация репозитория.
Для принудительного архивирования сегмента WAL в PostgreSQL вызываются pg_create_restore_point('pgBackRest Archive Check') и pg_switch_xlog()/pg_switch_wal().
Параметры команды
Параметр проверки архива (--archive-check)
Проверка наличия сегментов WAL в архиве перед завершением резервного копирования.
Проверяет, что все сегменты WAL, необходимые для согласованности резервной копии, присутствуют в архиве WAL. Рекомендуется оставить значение по умолчанию, если не используется другой способ архивирования.
Этот параметр должен быть включён, если включён archive-copy.
Параметр проверки режима архивирования (--archive-mode-check)
Проверка настройки PostgreSQL archive_mode.
Этот параметр включён по умолчанию и запрещает использовать в PostgreSQL archive_mode=always.
Сегменты WAL, отправляемые с резервного сервера, могут логически совпадать с сегментами WAL с первичного сервера, но иметь другие контрольные суммы. Во избежание конфликтов рекомендуется отключить архивирование из нескольких источников.
ОСТОРОЖНО:
Если этот параметр отключён, крайне важно обеспечить, чтобы в репозиторий через команду archive-push писал только один процесс архивирования.
Параметр тайм-аута архивирования (--archive-timeout)
Тайм-аут архивирования.
Задаёт максимальное время в секундах, в течение которого ожидается поступление каждого сегмента WAL в архивный репозиторий pgBackRest. Тайм-аут применяется к командам check и backup, когда они ожидают архивирования сегментов WAL, необходимых для согласованности резервной копии.
Параметр резервного копирования с резервного сервера (--backup-standby)
Резервное копирование с резервного кластера.
Включает резервное копирование с резервного сервера для снижения нагрузки на первичный кластер. Этот параметр требует настройки как первичного, так и резервного сервера.
Поддерживаются следующие режимы:
y- Для резервного копирования необходим резервный сервер.prefer- Копирование с резервного сервера, если он доступен; иначе с первичного.n- Копирование только с первичного сервера.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута базы данных (--db-timeout)
Тайм-аут запроса к базе данных.
Задаёт тайм-аут запросов к базе данных в секундах. Он распространяется и на функции начала и завершения резервного копирования, каждая из которых может выполняться довольно долго. Поэтому следует задавать большой тайм-аут, если нет уверенности, что эти функции завершатся быстро (то есть если задано start-fast=y и известно, что кластер базы данных не создаст много сегментов WAL во время резервного копирования).
ПРИМЕЧАНИЕ: параметр
db-timeoutдолжен быть меньшеprotocol-timeout.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры stanza
Параметр базы данных PostgreSQL (--pg-database)
База данных PostgreSQL.
Имя базы данных для соединения с PostgreSQL. Обычно лучше оставить значение по умолчанию, но в некоторых установках такой базы может не быть.
По историческим причинам значение переменной окружения PGDATABASE игнорируется.
Параметр сервера PostgreSQL (--pg-host)
Сервер PostgreSQL для удалённой работы.
Используется при резервном копировании, когда сервер PostgreSQL отличается от сервера репозитория.
Устаревшее имя: db-host
Параметр файла центра сертификации сервера PostgreSQL (--pg-host-ca-file)
Файл центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера PostgreSQL (--pg-host-ca-path)
Каталог центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера PostgreSQL (--pg-host-cert-file)
Файл сертификата для сервера PostgreSQL.
Отправляется серверу PostgreSQL для подтверждения личности клиента.
Параметр команды на сервере PostgreSQL (--pg-host-cmd)
Команда pgBackRest на сервере PostgreSQL.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере PostgreSQL различается. Если параметр не задан, команда на сервере PostgreSQL будет той же, что и локальная команда.
Устаревшее имя: db-cmd
Параметр файла конфигурации сервера PostgreSQL (--pg-host-config)
Файл конфигурации pgBackRest на сервере базы данных.
Задаёт расположение файла конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: db-config
Параметр каталога включаемых конфигураций сервера PostgreSQL (--pg-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере базы данных.
Задаёт расположение каталога включаемых конфигураций на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера PostgreSQL (--pg-host-config-path)
Каталог конфигурации pgBackRest на сервере базы данных.
Задаёт расположение каталога конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера PostgreSQL (--pg-host-key-file)
Файл ключа для сервера PostgreSQL.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера PostgreSQL (--pg-host-port)
Порт сервера PostgreSQL при заданном pg-host.
Позволяет указать нестандартный порт для протокола сервера PostgreSQL.
ПРИМЕЧАНИЕ: при
pg-host-type=sshдляpg-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: db-ssh-port
Параметр типа протокола сервера PostgreSQL (--pg-host-type)
Тип протокола сервера PostgreSQL.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера PostgreSQL (--pg-host-user)
Пользователь для входа на сервер PostgreSQL при заданном pg-host.
Этот пользователь также будет владельцем удалённого процесса pgBackRest и будет устанавливать соединения с PostgreSQL. Для правильной работы следует использовать владельца кластера базы данных PostgreSQL, обычно это пользователь postgres, выбранный по умолчанию.
Устаревшее имя: db-user
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
Параметр порта PostgreSQL (--pg-port)
Порт PostgreSQL.
Порт, на котором работает PostgreSQL. Обычно его не требуется указывать, поскольку большинство кластеров PostgreSQL работают на порту по умолчанию.
Устаревшее имя: db-port
Параметр каталога сокета PostgreSQL (--pg-socket-path)
Каталог Unix-сокета PostgreSQL.
Каталог Unix-сокета, указанный при запуске PostgreSQL. pgBackRest автоматически проверяет стандартное расположение для используемой ОС, поэтому обычно этот параметр не требуется, если каталог сокета не был явно изменён настройкой unix_socket_directories в postgresql.conf.
Устаревшее имя: db-socket-path
Параметр пользователя базы данных PostgreSQL (--pg-user)
Пользователь базы данных PostgreSQL.
Имя пользователя базы данных для соединения с PostgreSQL. Если оно не указано, pgBackRest использует локального пользователя ОС или PGUSER.
4.6 - Команда удаления устаревших копий (expire)
expire.pgBackRest выполняет ротацию полных резервных копий в зависимости от типа срока хранения: по числу копий или по периоду времени. Если задано число, удаление зависит не от времени создания копий, а от количества, которое необходимо сохранить. Дифференциальные копии хранятся по числу, но всегда удаляются вместе с полной копией, от которой зависят. Инкрементные копии не удаляются независимо по сроку хранения: они всегда удаляются вместе со связанной полной или дифференциальной копией. Подробности и примеры приведены в разделах Хранение полных резервных копий и Хранение дифференциальных резервных копий .
По умолчанию архивный WAL сохраняется для ещё не удалённых резервных копий. Хотя это не рекомендуется, правила можно изменить для каждого репозитория параметрами retention-archive. Подробности и примеры приведены в разделе Хранение архива .
Команда expire автоматически запускается после каждого успешного резервного копирования; пользователь также может запустить её вручную. При ручном запуске удаление выполняется согласно настройкам хранения каждого настроенного репозитория. Если указан --repo, удаление выполняется только в этом репозитории. Пользователь также может ограничить удаление конкретным набором резервной копии с помощью --set: если не указан --repo, поиск выполняется во всех репозиториях и удаляются наборы, соответствующие критериям. При каждом запуске expire правила хранения архива также проверяются и применяются.
Параметры команды
Параметр удаления архива до указанного сегмента (--archive-expire-before)
Удаление архива WAL, предшествующего указанному сегменту WAL.
Удаляет сегменты WAL, предшествующие указанному, но только те, которые не нужны сохраняемым резервным копиям: то есть сегменты старше самой ранней сохраняемой копии либо любые сегменты, если в репозитории нет копий. Указанный сегмент и всё после него сохраняются. Это соответствует значению, которое PostgreSQL передаёт archive_cleanup_command как %r.
Этот параметр предназначен прежде всего для репозиториев только с архивом, в которых не хранятся резервные копии. Его также можно использовать для освобождения места за счёт удаления WAL, предшествующего первой резервной копии, когда условия хранения полных копий ещё не выполнены и не запускают удаление архива.
Параметр самой старой копии (--oldest)
Удаление самого старого набора резервной копии, допустимого к удалению.
Удаляет самый старый набор полной резервной копии, который можно удалить (то есть остаётся хотя бы одна более новая полная копия). Это эквивалентно ручному уменьшению числа хранимых копий на одну, но вычисляется автоматически. Все копии, связанные с удаляемым полным набором (дифференциальные и инкрементные), также удаляются.
При использовании этого параметра правила хранения архива также временно корректируются, чтобы WAL удаляемых копий можно было удалить за тот же запуск.
Если хранение полных копий настроено по времени (через --repo-retention-full-type=time), --oldest для этого запуска использует удаление по числу копий.
ПРЕДУПРЕЖДЕНИЕ:
Этот параметр нельзя сочетать с --set.
Параметр набора резервной копии (--set)
Набор резервной копии для удаления.
Указанный набор (то есть копия с заданной меткой и все зависимые от неё копии, если они есть) удаляется независимо от правил хранения, но в репозитории должна остаться хотя бы одна полная резервная копия.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр крайне осторожно: он безвозвратно удаляет из репозитория pgBackRest все копии указанного набора и все архивы, не требуемые для согласованности резервной копии. Это может исключить возможность PITR. Если настроены --repo-retention-full и/или --repo-retention-archive, при таком разовом удалении рекомендуется переопределить их максимальными значениями, чтобы избежать непреднамеренного удаления архивов.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр пробного запуска (--dry-run)
Пробный запуск команды.
Параметр --dry-run доступен только в командной строке. Его можно передать, чтобы определить, какие изменения выполнит команда, без фактического внесения изменений.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр хранения архива (--repo-retention-archive)
Число резервных копий, для которых сохраняется непрерывный WAL.
ПРИМЕЧАНИЕ: сегменты WAL, необходимые для согласованности резервной копии, всегда сохраняются до удаления этой копии независимо от настройки данного параметра.
Если значение не задано, а repo-retention-full-type равен count (по умолчанию), то для удаления архива по умолчанию используется значение repo-retention-full (или repo-retention-diff), соответствующее repo-retention-archive-type, заданному как full (или diff). Это гарантирует, что WAL удаляется только для уже удалённых резервных копий. Если repo-retention-full-type равен time, по умолчанию удаляются архивы, предшествующие самой старой полной копии, оставшейся после применения настройки repo-retention-full.
Этот параметр должен быть задан, если repo-retention-archive-type равен incr. При острой нехватке дискового пространства он вместе с repo-retention-archive-type позволяет агрессивнее удалять сегменты WAL. Однако это исключает возможность PITR из копий с удалённым WAL и потому не рекомендуется.
Устаревшее имя: retention-archive
Параметр типа хранения архива (--repo-retention-archive-type)
Тип резервных копий для хранения WAL.
При значении full pgBackRest сохраняет архивные журналы для числа полных резервных копий, заданного repo-retention-archive. При значении diff (дифференциальные) pgBackRest сохраняет архивные журналы для числа полных и дифференциальных копий, заданного repo-retention-archive: если последняя копия полная, для целей хранения в репозитории она учитывается как дифференциальная. При значении incr (инкрементные) pgBackRest сохраняет архивные журналы для числа полных, дифференциальных и инкрементных копий, заданного repo-retention-archive. Рекомендуется оставить значение по умолчанию, при котором WAL удаляется только вместе с полными резервными копиями.
Устаревшее имя: retention-archive-type
Параметр хранения дифференциальных копий (--repo-retention-diff)
Число сохраняемых дифференциальных резервных копий.
При удалении дифференциальной копии также удаляются все связанные с ней инкрементные копии. Если параметр не задан, все дифференциальные копии сохраняются до удаления полных копий, от которых они зависят.
При определении копий для удаления полные копии учитываются в числе дифференциальных. В большинстве случаев это немного уменьшает число дифференциальных копий, которые необходимо хранить.
Устаревшее имя: retention-diff
Параметр хранения полных копий (--repo-retention-full)
Число или срок хранения полных резервных копий.
При удалении полной копии также удаляются все связанные с ней дифференциальные и инкрементные копии. Если параметр не задан, выводится предупреждение. Для бессрочного хранения задайте максимальное значение.
Устаревшее имя: retention-full
Параметр типа хранения полных копий (--repo-retention-full-type)
Тип срока хранения полных резервных копий.
Определяет, означает ли настройка repo-retention-full период времени (в днях) или число полных копий, которые нужно сохранять.
При значении time полные копии старше repo-retention-full удаляются из репозитория, если существует хотя бы ещё одна копия, возраст которой не меньше значения repo-retention-full. Например, если repo-retention-full равен 30 (дней) и есть 2 полные копии возрастом 25 и 35 дней, ни одна не будет удалена: после удаления копии возрастом 35 дней останется только копия возрастом 25 дней, что нарушит политику хранения за 30 дней. Эта политика требует наличия хотя бы одной копии возрастом 30 дней перед удалением более старой. Архивный WAL, предшествующий самой старой оставшейся полной копии, удаляется автоматически, если repo-retention-archive-type и repo-retention-archive не заданы явно.
При значении count полные копии сверх числа repo-retention-full удаляются. Например, если repo-retention-full равен 4 и завершается пятая полная копия, самая старая полная копия будет удалена, чтобы их число осталось равным 4.
Резервная копия учитывается при применении политики хранения только после успешного завершения. Например, если repo-retention-full-type равен count, а repo-retention-full равен 2, для удаления самой старой копии должны существовать 3 завершённые полные копии.
Параметр хранения истории резервных копий (--repo-retention-history)
Число дней хранения манифестов истории резервных копий.
После завершения резервного копирования копия манифеста сохраняется в каталоге backup.history. По умолчанию эти файлы никогда не удаляются, поскольку полезны для анализа данных, например для измерения роста резервных копий и WAL со временем.
Параметр repo-retention-history задаёт число дней хранения манифестов истории резервных копий. Неудалённые резервные копии всегда сохраняются в истории. Укажите repo-retention-history=0, чтобы хранить историю только для неудалённых резервных копий.
При удалении манифеста истории полной резервной копии также удаляются манифесты истории всех связанных с ней дифференциальных и инкрементных копий.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр символических ссылок в репозитории (--repo-symlink)
Создание символических ссылок внутри репозитория.
Включает создание символических ссылок latest и ссылок табличных пространств. Эти ссылки наиболее полезны при использовании снимков для восстановления непосредственно в репозитории, что встречается редко.
Хотя подавляющему большинству пользователей эта возможность, вероятно, не нужна, она остаётся включённой по умолчанию ради совместимости. Однако для Posix-подобных хранилищ, не поддерживающих символические ссылки, может быть полезно отключить их.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
4.7 - Команда справки (help)
help.Предоставляется три уровня справки. Если команда не указана, выводится общая справка. Если указана команда (например, pgbackrest help backup), выводится её полное описание со списком допустимых параметров. Если вместе с командой указан параметр (например, pgbackrest help backup type), выводится полное описание этого параметра применительно к команде.
Параметры команды
Параметр вывода справки (--help)
Вывод справки.
Выводит справку, даже если команда help не указана, и переопределяет параметр --version.
Параметр вывода версии (--version)
Вывод версии.
Отображает версию, даже если не указаны команды version или help.
4.8 - Команда вывода сведений (info)
info.Команда info работает с одной stanza или со всеми stanza. По умолчанию выводится текстовая сводка резервных копий для запрошенных stanza, предназначенная для чтения человеком. Этот формат может меняться в любом выпуске.
Для машиночитаемого вывода используйте --output=json. Вывод JSON содержит гораздо больше сведений, чем текстовый, и сохраняет стабильный формат, если не обнаружена ошибка.
Чтобы ускорить выполнение, ограничьте вывод сведениями о ходе выполнения, указав --detail-level=progress. При этом пропускаются все проверки, кроме доступности stanza.
Для каждой stanza выводится отдельный раздел; параметром --stanza можно ограничить вывод одной stanza. Поле «status» кратко отражает состояние stanza. Значение «ok» означает, что pgBackRest работает нормально. При нескольких репозиториях состояние «mixed» указывает на проблемы со stanza в одном или нескольких репозиториях; в этом случае её состояние подробно выводится для каждого репозитория. Если в репозитории возникла ошибка, не относящаяся к известным кодам, используется код «other» и приводятся полные сведения об ошибке. Поле «wal archive min/max» показывает минимальный и максимальный WAL, хранящийся в архиве. При нескольких репозиториях значения учитывают все репозитории, если не задан --repo. Возможны пропуски из-за политик хранения архива или по другим причинам.
Если на сервере выполняется какая-либо из этих команд, рядом с «status» появляются сообщения «backup/expire running» и/или «restore running». В текстовом выводе также показывается ход выполнения по каждому репозиторию, а в вывод JSON включается массив «repo».
Резервные копии выводятся от старых к новым. Самая старая копия всегда полная (обозначается F в конце метки), а самая новая может быть полной, дифференциальной (метка заканчивается на D) или инкрементной (на I).
Поле «timestamp start/stop» определяет период выполнения резервного копирования. По «timestamp stop» можно выбрать копию для восстановления на заданный момент времени. Дополнительные сведения приведены в разделе Восстановление на заданный момент времени
.
Поле «wal start/stop» задаёт диапазон WAL, необходимый для приведения базы данных в согласованное состояние при восстановлении. Команда backup перед завершением гарантирует наличие этого диапазона WAL в архиве.
Поле «database size» — полный несжатый размер базы данных, а «database backup size» — объём данных базы, который фактически нужно скопировать (для полных копий они совпадают).
Поле «repo» указывает репозиторий, содержащий копию. Поле «backup set size» включает все файлы этой копии и всех используемых ею копий в репозитории, необходимых для восстановления базы данных из неё, а «backup size» — только файлы этой копии (для полных копий значения также совпадают). Если в pgBackRest включено сжатие, размеры в репозитории отражают размеры сжатых файлов.
Поле «backup reference total» сводит сведения о дополнительных копиях, необходимых для восстановления этой копии. Полный список зависимостей можно вывести параметром --set.
Параметры команды
Параметр уровня детализации (--detail-level)
Уровень детализации вывода.
Поддерживаются следующие уровни:
progress- Только текущий ход резервного копирования или удаления копий. Этот уровень нельзя использовать с параметром--set.full- Полные сведения.
Параметр вывода (--output)
Формат вывода.
Поддерживаются следующие типы вывода:
text- Сводка сведений о резервных копиях для чтения человеком.json- Исчерпывающие машиночитаемые сведения о резервных копиях в формате JSON.
Параметр набора резервной копии (--set)
Набор резервной копии для подробного просмотра.
Подробные сведения включают полный список дополнительных копий, необходимых для восстановления этой копии, список баз данных (с OID) в наборе (кроме шаблонных баз), табличные пространства (с OID) и пути их восстановления по умолчанию, а также символические ссылки с целями, на которые они будут восстановлены при указании --link-all.
Параметр типа (--type)
Фильтрация по типу резервной копии.
Фильтрует вывод по одному из следующих типов резервных копий:
full- Только полные копии.diff- Только дифференциальные копии.incr- Только инкрементные копии.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр целевого времени репозитория (--repo-target-time)
Целевое время репозитория.
Целевое время определяет момент, на который команды читают репозиторий в хранилище с версионированием. Это позволяет прочитать состояние репозитория на определённый момент времени и восстановить данные, удалённые или повреждённые по ошибке пользователя либо вредоносным ПО.
S3, GCS и Azure поддерживают версионирование, но обычно оно отключено по умолчанию. Помимо включения версионирования, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
Если указан параметр repo-target-time, необходимо также указать repo. Версионирование, вероятно, поддерживается не всеми типами репозиториев, и в целом при восстановлении разумно обращаться к одному конкретному репозиторию.
Временные метки хранилища сравниваются с указанной по условию <=; миллисекунды, если они указаны, отбрасываются.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
4.9 - Команда чтения из репозитория (repo-get)
repo-get.Аналог команды Unix cat, работающий со всеми поддерживаемыми типами репозиториев. Команда требует полного имени файла и предназначена прежде всего для администрирования, исследования и тестирования. Она не является обязательной частью обычной настройки pgBackRest.
Если репозиторий зашифрован, repo-get автоматически расшифрует файл. Автоматическая распаковка не выполняется, но вывод можно передать по конвейеру соответствующей команде распаковки, например gzip -d.
Если настроено несколько репозиториев, по умолчанию команда использует репозиторий с наивысшим приоритетом (например, repo1), если не указан параметр --repo.
Параметры команды
Параметр игнорирования отсутствующего файла (--ignore-missing)
Игнорирование отсутствующего исходного файла.
Если исходный файл отсутствует, завершается с кодом 1, но не выдаёт ошибку.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр необработанных данных (--raw)
Запрет преобразования данных.
Не преобразует данные (то есть не шифрует, не распаковывает и т. п.) для текущей команды.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр целевого времени репозитория (--repo-target-time)
Целевое время репозитория.
Целевое время определяет момент, на который команды читают репозиторий в хранилище с версионированием. Это позволяет прочитать состояние репозитория на определённый момент времени и восстановить данные, удалённые или повреждённые по ошибке пользователя либо вредоносным ПО.
S3, GCS и Azure поддерживают версионирование, но обычно оно отключено по умолчанию. Помимо включения версионирования, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
Если указан параметр repo-target-time, необходимо также указать repo. Версионирование, вероятно, поддерживается не всеми типами репозиториев, и в целом при восстановлении разумно обращаться к одному конкретному репозиторию.
Временные метки хранилища сравниваются с указанной по условию <=; миллисекунды, если они указаны, отбрасываются.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
4.10 - Команда просмотра репозитория (repo-ls)
repo-ls.Аналог команды Unix ls, работающий со всеми поддерживаемыми типами репозиториев. Команда принимает абсолютный путь либо путь относительно каталога репозитория, заданного параметром --repo-path, и предназначена прежде всего для администрирования, исследования и тестирования. Она не является обязательной частью обычной настройки pgBackRest.
В текстовом выводе по умолчанию каждое имя файла выводится на отдельной строке. Для вывода JSON укажите --output=json.
Если настроено несколько репозиториев, по умолчанию команда использует репозиторий с наивысшим приоритетом (например, repo1), если не указан параметр --repo.
Параметры команды
Параметр фильтрации вывода (--filter)
Фильтрация вывода регулярным выражением.
Фильтр применяется к именам файлов и путей перед их выводом.
Параметр вывода (--output)
Формат вывода.
Поддерживаются следующие типы вывода:
text- Простой список с одним именем файла, ссылки или пути на строку.json- Подробные сведения о файлах, ссылках и путях в формате JSON.
В формате JSON доступны следующие поля:
name- Имя файла, ссылки или пути (при рекурсивном обходе — также часть пути).type-file,pathилиlink.size- Размер в байтах (только для файлов).time- Время последнего изменения (только для файлов).destination- Цель ссылки (только для ссылок).
Параметр рекурсивного обхода (--recurse)
Включение в вывод всех вложенных путей.
В вывод включаются все вложенные пути и их файлы.
Параметр сортировки вывода (--sort)
Сортировка вывода по возрастанию, по убыванию либо без сортировки.
Поддерживаются следующие типы сортировки:
asc- Сортировка по возрастанию.desc- Сортировка по убыванию.none- Без сортировки.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр целевого времени репозитория (--repo-target-time)
Целевое время репозитория.
Целевое время определяет момент, на который команды читают репозиторий в хранилище с версионированием. Это позволяет прочитать состояние репозитория на определённый момент времени и восстановить данные, удалённые или повреждённые по ошибке пользователя либо вредоносным ПО.
S3, GCS и Azure поддерживают версионирование, но обычно оно отключено по умолчанию. Помимо включения версионирования, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
Если указан параметр repo-target-time, необходимо также указать repo. Версионирование, вероятно, поддерживается не всеми типами репозиториев, и в целом при восстановлении разумно обращаться к одному конкретному репозиторию.
Временные метки хранилища сравниваются с указанной по условию <=; миллисекунды, если они указаны, отбрасываются.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
4.11 - Команда восстановления (restore)
restore.По умолчанию команда восстановления автоматически выбирает последнюю резервную копию из первого репозитория, где есть копии (см. Быстрый старт — восстановление резервной копии
). Порядок проверки репозиториев задаётся в pgbackrest.conf (например, repo1 проверяется раньше repo2). Для выбора конкретного репозитория можно передать --repo (например, --repo=1). Если требуется не последняя копия, можно передать --set.
При PITR с --type=time или --type=lsn целевое время или LSN необходимо указать с помощью параметра --target. Если --set не задан, настроенные репозитории проверяются по порядку: выбирается резервная копия, время завершения которой предшествует целевому времени или LSN завершения которой меньше либо равен целевому LSN. Если подходящая копия не найдена, pgBackRest выдаёт ошибку как для --type=time, так и для --type=lsn; перехода к последней резервной копии не происходит. Для других типов PITR, например xid, необходимо указать параметр --set, если цель предшествует последней резервной копии. Подробнее и с примерами см. Восстановление на заданный момент времени
.
Слоты репликации не включаются согласно рекомендации PostgreSQL. Дополнительные сведения приведены в разделе Резервное копирование каталога данных документации PostgreSQL.
Параметры команды
Параметр режима архивирования (--archive-mode)
Сохранение или отключение архивирования на восстановленном кластере.
Позволяет сохранить или отключить архивирование на восстановленном кластере. Это полезно, когда для выполнения определённой работы кластер необходимо повысить до первичного, но использовать его как новый первичный сервер не планируется. В таком случае отправлять WAL этого кластера в репозиторий нежелательно.
Поддерживаются следующие режимы:
off- Отключает архивирование, задаваяarchive_mode=off.preserve- Сохраняет текущее значениеarchive_mode.
ПРИМЕЧАНИЕ: этот параметр недоступен в PostgreSQL < 12.
Параметр исключения баз данных (--db-exclude)
Восстановление с исключением указанных баз данных.
Исключённые базы данных восстанавливаются в виде разреженных файлов, заполненных нулями: это экономит место, сохраняя возможность восстановления PostgreSQL. После восстановления эти базы будут недоступны, но их можно удалить командой drop database. Параметр --db-exclude можно передать несколько раз, чтобы исключить несколько баз данных.
В сочетании с параметром --db-include параметр --db-exclude применяется только к стандартным системным базам данных (template0, template1 и postgres).
Параметр включения баз данных (--db-include)
Восстановление только указанных баз данных.
Эта возможность позволяет восстановить только выбранные базы данных. Базы, не включённые явно, восстанавливаются в виде разреженных файлов, заполненных нулями: это экономит место, сохраняя возможность восстановления PostgreSQL. После восстановления базы, которые не были включены, будут недоступны, но их можно удалить командой drop database.
ПРИМЕЧАНИЕ: встроенные базы данных (
template0,template1иpostgres) всегда восстанавливаются, если они не исключены явно.
Параметр --db-include можно передать несколько раз, чтобы включить несколько баз данных.
Дополнительные сведения и ограничения приведены в разделе Восстановление выбранных баз данных .
Параметр принудительного выполнения (--force)
Принудительное восстановление.
Сам по себе этот параметр принудительно полностью перезаписывает каталоги данных и табличных пространств PostgreSQL. В сочетании с --delta выполняется дельта-восстановление по временным меткам и размерам вместо контрольных сумм.
Параметр восстановления всех ссылок (--link-all)
Восстановление всех символических ссылок.
По умолчанию каталоги и файлы, на которые указывают символические ссылки, восстанавливаются как обычные каталоги и файлы в $PGDATA. Причина в том, что восстанавливать ссылки на исходные цели в другой системе, отличной от той, где выполнялось резервное копирование, может быть небезопасно. Этот параметр восстанавливает все символические ссылки в том виде, в каком они были в исходной системе при резервном копировании.
Параметр переназначения ссылок (--link-map)
Изменение цели символической ссылки.
Позволяет при восстановлении изменить целевой файл или путь символической ссылки. Это полезно при восстановлении в системах, где организация хранилища отличается от исходной системы, в которой была создана резервная копия.
Параметр настройки восстановления (--recovery-option)
Установка параметра в postgresql.auto.conf или recovery.conf.
Сведения о параметрах postgresql.auto.conf и recovery.conf приведены в разделе Конфигурация сервера
(обязательно выберите свою версию PostgreSQL). Этот параметр можно указывать несколько раз.
Для PostgreSQL >= 12 параметры записываются в postgresql.auto.conf. Для всех остальных версий — в recovery.conf.
ПРИМЕЧАНИЕ: параметр
restore_commandсоздаётся автоматически, но его можно переопределить этим параметром. Собственныйrestore_commandследует задавать осторожно, поскольку pgBackRest рассчитан на автоматическое управление им. Параметры цели восстановления (recovery_target_name, recovery_target_time и т. п.) pgBackRest формирует автоматически, и их не следует задавать таким способом.
Поскольку после записи файла postgresql.auto.conf или recovery.conf pgBackRest не запускает PostgreSQL, перед ручным перезапуском всегда можно проверить или отредактировать postgresql.auto.conf или recovery.conf.
Параметр набора резервной копии (--set)
Набор резервной копии для восстановления.
Набор резервной копии, который требуется восстановить. Значение latest восстанавливает последнюю копию; иначе следует указать имя нужной копии.
Параметр переназначения табличного пространства (--tablespace-map)
Восстановление табличного пространства в указанный каталог.
Перемещает табличное пространство в новое расположение при восстановлении. Это полезно, когда расположения табличных пространств на реплике отличаются или после обновления системы изменились точки монтирования.
Расположения табличных пространств не хранятся в pg_tablespace, поэтому их можно свободно перемещать. Однако переносить табличное пространство в data_directory не рекомендуется: это может вызвать проблемы. Дополнительные сведения о перемещении табличных пространств приведены на http://www.databasesoup.com/2013/11/moving-tablespaces.html
.
Параметр переназначения всех табличных пространств (--tablespace-map-all)
Восстановление всех табличных пространств в указанный каталог.
По умолчанию табличные пространства восстанавливаются в исходные расположения. Для каждого пространства это можно изменить параметром tablespace-map, но иногда удобнее сразу переназначить все пространства в новый каталог. Это особенно полезно в системах разработки или предварительного тестирования, где организация хранилища может отличаться от исходной системы, в которой была создана резервная копия.
Указанный путь будет родительским каталогом, в котором создаются все табличные пространства из резервной копии.
ОСТОРОЖНО:
Табличные пространства, созданные после начала резервного копирования, не переназначаются. Если требуется переназначение, после создания табличного пространства следует сделать новую резервную копию.
Параметр цели (--target)
Цель восстановления.
Определяет цель восстановления при --type, равном lsn, name, xid или time. Если цель предшествует последней копии и --type не равен time или lsn, укажите набор резервной копии параметром --set.
Параметр действия при достижении цели (--target-action)
Действие при достижении цели восстановления.
При hot_standby=on (значение по умолчанию начиная с PostgreSQL 10) этот параметр одинаково управляет поведением кластера при достижении цели или исчерпании WAL в архиве.
При hot_standby=off в PostgreSQL >= 12 значение pause действует как shutdown. При hot_standby=off в PostgreSQL < 12 значение pause действует как promote.
Поддерживаются следующие действия:
pause- Приостановка при достижении цели восстановления.promote- Повышение до первичного сервера и смена временной шкалы при достижении цели восстановления.shutdown- Остановка сервера при достижении цели восстановления. (PostgreSQL >= 9.5)
Параметр исключения цели (--target-exclusive)
Остановка непосредственно перед достижением цели восстановления.
Определяет, исключается ли сама цель из восстановления (по умолчанию включается), и допустим только при --type, равном lsn, time или xid. Например, при --type=xid и --target=1007 параметр --target-exclusive исключит содержимое транзакции 1007. Дополнительные сведения приведены в описании recovery_target_inclusive в документации PostgreSQL.
Параметр целевой временной шкалы (--target-timeline)
Восстановление по временной шкале.
Дополнительные сведения приведены в описании recovery_target_timeline в документации PostgreSQL.
Параметр типа (--type)
Тип восстановления.
Поддерживаются следующие типы восстановления:
default- Восстановление до конца потока архива.immediate- Восстановление только до достижения согласованного состояния базы данных.lsn- Восстановление до LSN (номера позиции в журнале), заданного в--target. Поддерживается только в PostgreSQL >= 10.name- Восстановление до точки восстановления, заданной в--target.xid- Восстановление до идентификатора транзакции, заданного в--target.time- Восстановление до времени, заданного в--target.preserve- Сохранение существующего файлаpostgresql.auto.confилиrecovery.conf.standby- Добавлениеstandby_mode=onв файлpostgresql.auto.confилиrecovery.conf, чтобы кластер запустился в режиме резервного сервера.none- Файлpostgresql.auto.confилиrecovery.confне записывается, поэтому PostgreSQL попытается достичь согласованности с помощью сегментов WAL вpg_xlog/pg_wal. Предоставьте необходимые сегменты WAL или используйте настройкуarchive-copy, чтобы включить их в резервную копию.
ПРЕДУПРЕЖДЕНИЕ:
Следует избегать восстановления с type=none, поскольку по его завершении временная шкала не увеличивается. Это может привести, например, к попытке PostgreSQL архивировать дублирующийся WAL, которая будет отклонена; в результате диск может заполниться, а PostgreSQL — аварийно завершиться с panic. Кроме того, такие средства, как pg_rewind, могут работать некорректно или вызывать повреждение данных.
Для копий остановленного кластера значение type восстановления по умолчанию — none, поскольку при wal_level=minimal восстановление на заданный момент времени невозможно. Если type задан явно, он применяется, так как восстановление на заданный момент времени из копии остановленного кластера возможно при wal_level > minimal.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды pgBackRest (--cmd)
Команда pgBackRest.
pgBackRest может формировать командную строку, например когда команда restore создаёт настройку restore_command. В этом случае используется команда, которой был запущен процесс pgBackRest, если не задан параметр cmd.
ОСТОРОЖНО:
Использование обёртки для команды pgBackRest может привести к непредсказуемому поведению и не рекомендуется.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр дельта-восстановления и копирования (--delta)
Восстановление или резервное копирование с использованием контрольных сумм.
При восстановлении по умолчанию предполагается, что каталоги данных и табличных пространств PostgreSQL существуют, но пусты. Этот параметр выполняет дельта-восстановление с использованием контрольных сумм.
При резервном копировании этот параметр использует контрольные суммы вместо временных меток, чтобы определить, нужно ли копировать файлы.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр максимального числа процессов (--process-max)
Максимальное число процессов для сжатия и передачи данных.
Каждый процесс выполняет сжатие и передачу, ускоряя выполнение команды, однако не следует задавать process-max настолько большим, чтобы это ухудшало производительность базы данных.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр целевого времени репозитория (--repo-target-time)
Целевое время репозитория.
Целевое время определяет момент, на который команды читают репозиторий в хранилище с версионированием. Это позволяет прочитать состояние репозитория на определённый момент времени и восстановить данные, удалённые или повреждённые по ошибке пользователя либо вредоносным ПО.
S3, GCS и Azure поддерживают версионирование, но обычно оно отключено по умолчанию. Помимо включения версионирования, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
Если указан параметр repo-target-time, необходимо также указать repo. Версионирование, вероятно, поддерживается не всеми типами репозиториев, и в целом при восстановлении разумно обращаться к одному конкретному репозиторию.
Временные метки хранилища сравниваются с указанной по условию <=; миллисекунды, если они указаны, отбрасываются.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры stanza
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
4.12 - Команда сервера (server)
server.Сервер pgBackRest обеспечивает доступ к удалённым серверам без использования протокола SSH.
Параметры команды
Параметр адреса TLS-сервера (--tls-server-address)
Адрес TLS-сервера.
IP-адрес, на котором сервер будет слушать запросы клиентов.
Параметр авторизованных клиентов TLS-сервера (--tls-server-auth)
Авторизованные клиенты TLS-сервера.
Сервер авторизует клиентов, проверяя их сертификаты и сверяя CN (общее имя) сертификата со списком, заданным на сервере параметром tls-server-auth.
Клиентский CN можно авторизовать для любого количества stanza, передав в параметре tls-server-auth список через запятую, либо для всех stanza, указав tls-server-auth=client-cn=*. Для клиентского CN нельзя указывать подстановочные символы.
Параметр центров сертификации TLS-сервера (--tls-server-ca-file)
Центры сертификации TLS-сервера.
Проверяет, что сертификаты клиентов подписаны доверенным центром сертификации.
Параметр сертификата TLS-сервера (--tls-server-cert-file)
Файл сертификата TLS-сервера.
Отправляется клиенту для подтверждения личности сервера.
Параметр ключа TLS-сервера (--tls-server-key-file)
Файл ключа TLS-сервера.
Подтверждает, что сертификат сервера отправлен его владельцем.
Параметр порта TLS-сервера (--tls-server-port)
Порт сервера TLS.
Порт, на котором сервер будет слушать запросы клиентов.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
4.13 - Команда проверки доступности сервера (server-ping)
server-ping.Проверяет, что TLS-сервер pgBackRest принимает соединения. Это только проверка доступности, поскольку попытка аутентификации не выполняется.
Если сервер не указан в командной строке, используется параметр tls-server-host.
Параметры команды
Параметр адреса TLS-сервера (--tls-server-address)
Адрес TLS-сервера.
IP-адрес, на котором сервер будет слушать запросы клиентов.
Параметр порта TLS-сервера (--tls-server-port)
Порт сервера TLS.
Порт, на котором сервер будет слушать запросы клиентов.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
4.14 - Команда создания stanza (stanza-create)
stanza-create.Команду stanza-create необходимо выполнить после настройки stanza в pgbackrest.conf. Если настроено несколько репозиториев, stanza создаётся в каждом. Уже созданные stanza пропускаются, поэтому stanza-create всегда безопасно запускать, в том числе после настройки нового репозитория.
Дополнительные сведения и пример приведены в разделе Создание stanza .
Параметры команды
Параметр копирования работающего кластера (--online)
Создание на работающем кластере.
Параметр –no-online запрещает pgBackRest соединяться с PostgreSQL при создании stanza.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута базы данных (--db-timeout)
Тайм-аут запроса к базе данных.
Задаёт тайм-аут запросов к базе данных в секундах. Он распространяется и на функции начала и завершения резервного копирования, каждая из которых может выполняться довольно долго. Поэтому следует задавать большой тайм-аут, если нет уверенности, что эти функции завершатся быстро (то есть если задано start-fast=y и известно, что кластер базы данных не создаст много сегментов WAL во время резервного копирования).
ПРИМЕЧАНИЕ: параметр
db-timeoutдолжен быть меньшеprotocol-timeout.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры stanza
Параметр базы данных PostgreSQL (--pg-database)
База данных PostgreSQL.
Имя базы данных для соединения с PostgreSQL. Обычно лучше оставить значение по умолчанию, но в некоторых установках такой базы может не быть.
По историческим причинам значение переменной окружения PGDATABASE игнорируется.
Параметр сервера PostgreSQL (--pg-host)
Сервер PostgreSQL для удалённой работы.
Используется при резервном копировании, когда сервер PostgreSQL отличается от сервера репозитория.
Устаревшее имя: db-host
Параметр файла центра сертификации сервера PostgreSQL (--pg-host-ca-file)
Файл центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера PostgreSQL (--pg-host-ca-path)
Каталог центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера PostgreSQL (--pg-host-cert-file)
Файл сертификата для сервера PostgreSQL.
Отправляется серверу PostgreSQL для подтверждения личности клиента.
Параметр команды на сервере PostgreSQL (--pg-host-cmd)
Команда pgBackRest на сервере PostgreSQL.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере PostgreSQL различается. Если параметр не задан, команда на сервере PostgreSQL будет той же, что и локальная команда.
Устаревшее имя: db-cmd
Параметр файла конфигурации сервера PostgreSQL (--pg-host-config)
Файл конфигурации pgBackRest на сервере базы данных.
Задаёт расположение файла конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: db-config
Параметр каталога включаемых конфигураций сервера PostgreSQL (--pg-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере базы данных.
Задаёт расположение каталога включаемых конфигураций на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера PostgreSQL (--pg-host-config-path)
Каталог конфигурации pgBackRest на сервере базы данных.
Задаёт расположение каталога конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера PostgreSQL (--pg-host-key-file)
Файл ключа для сервера PostgreSQL.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера PostgreSQL (--pg-host-port)
Порт сервера PostgreSQL при заданном pg-host.
Позволяет указать нестандартный порт для протокола сервера PostgreSQL.
ПРИМЕЧАНИЕ: при
pg-host-type=sshдляpg-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: db-ssh-port
Параметр типа протокола сервера PostgreSQL (--pg-host-type)
Тип протокола сервера PostgreSQL.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера PostgreSQL (--pg-host-user)
Пользователь для входа на сервер PostgreSQL при заданном pg-host.
Этот пользователь также будет владельцем удалённого процесса pgBackRest и будет устанавливать соединения с PostgreSQL. Для правильной работы следует использовать владельца кластера базы данных PostgreSQL, обычно это пользователь postgres, выбранный по умолчанию.
Устаревшее имя: db-user
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
Параметр порта PostgreSQL (--pg-port)
Порт PostgreSQL.
Порт, на котором работает PostgreSQL. Обычно его не требуется указывать, поскольку большинство кластеров PostgreSQL работают на порту по умолчанию.
Устаревшее имя: db-port
Параметр каталога сокета PostgreSQL (--pg-socket-path)
Каталог Unix-сокета PostgreSQL.
Каталог Unix-сокета, указанный при запуске PostgreSQL. pgBackRest автоматически проверяет стандартное расположение для используемой ОС, поэтому обычно этот параметр не требуется, если каталог сокета не был явно изменён настройкой unix_socket_directories в postgresql.conf.
Устаревшее имя: db-socket-path
Параметр пользователя базы данных PostgreSQL (--pg-user)
Пользователь базы данных PostgreSQL.
Имя пользователя базы данных для соединения с PostgreSQL. Если оно не указано, pgBackRest использует локального пользователя ОС или PGUSER.
4.15 - Команда удаления stanza (stanza-delete)
stanza-delete.Команда stanza-delete удаляет из репозитория данные, связанные со stanza.
ПРЕДУПРЕЖДЕНИЕ:
Используйте эту команду осторожно: она безвозвратно удаляет все резервные копии и архивы указанной stanza из репозитория pgBackRest.
Чтобы удалить stanza:
- Остановите кластер PostgreSQL, связанный со stanza (или используйте –force, чтобы обойти это требование).
- Выполните команду
stopна сервере, где будет запущена командаstanza-delete. - Выполните команду
stanza-delete.
После успешного завершения команды пользователь должен самостоятельно удалить stanza из всех файлов конфигурации pgBackRest и/или переменных окружения.
За один раз stanza можно удалить только из одного репозитория. Для удаления из нескольких репозиториев повторите команду stanza-delete для каждого из них, указывая параметр --repo.
Параметры команды
Параметр принудительного выполнения (--force)
Принудительное удаление stanza.
Если PostgreSQL для этой stanza продолжает работать, этот параметр позволяет принудительно удалить stanza из репозитория.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута базы данных (--db-timeout)
Тайм-аут запроса к базе данных.
Задаёт тайм-аут запросов к базе данных в секундах. Он распространяется и на функции начала и завершения резервного копирования, каждая из которых может выполняться довольно долго. Поэтому следует задавать большой тайм-аут, если нет уверенности, что эти функции завершатся быстро (то есть если задано start-fast=y и известно, что кластер базы данных не создаст много сегментов WAL во время резервного копирования).
ПРИМЕЧАНИЕ: параметр
db-timeoutдолжен быть меньшеprotocol-timeout.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры stanza
Параметр базы данных PostgreSQL (--pg-database)
База данных PostgreSQL.
Имя базы данных для соединения с PostgreSQL. Обычно лучше оставить значение по умолчанию, но в некоторых установках такой базы может не быть.
По историческим причинам значение переменной окружения PGDATABASE игнорируется.
Параметр сервера PostgreSQL (--pg-host)
Сервер PostgreSQL для удалённой работы.
Используется при резервном копировании, когда сервер PostgreSQL отличается от сервера репозитория.
Устаревшее имя: db-host
Параметр файла центра сертификации сервера PostgreSQL (--pg-host-ca-file)
Файл центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера PostgreSQL (--pg-host-ca-path)
Каталог центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера PostgreSQL (--pg-host-cert-file)
Файл сертификата для сервера PostgreSQL.
Отправляется серверу PostgreSQL для подтверждения личности клиента.
Параметр команды на сервере PostgreSQL (--pg-host-cmd)
Команда pgBackRest на сервере PostgreSQL.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере PostgreSQL различается. Если параметр не задан, команда на сервере PostgreSQL будет той же, что и локальная команда.
Устаревшее имя: db-cmd
Параметр файла конфигурации сервера PostgreSQL (--pg-host-config)
Файл конфигурации pgBackRest на сервере базы данных.
Задаёт расположение файла конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: db-config
Параметр каталога включаемых конфигураций сервера PostgreSQL (--pg-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере базы данных.
Задаёт расположение каталога включаемых конфигураций на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера PostgreSQL (--pg-host-config-path)
Каталог конфигурации pgBackRest на сервере базы данных.
Задаёт расположение каталога конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера PostgreSQL (--pg-host-key-file)
Файл ключа для сервера PostgreSQL.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера PostgreSQL (--pg-host-port)
Порт сервера PostgreSQL при заданном pg-host.
Позволяет указать нестандартный порт для протокола сервера PostgreSQL.
ПРИМЕЧАНИЕ: при
pg-host-type=sshдляpg-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: db-ssh-port
Параметр типа протокола сервера PostgreSQL (--pg-host-type)
Тип протокола сервера PostgreSQL.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера PostgreSQL (--pg-host-user)
Пользователь для входа на сервер PostgreSQL при заданном pg-host.
Этот пользователь также будет владельцем удалённого процесса pgBackRest и будет устанавливать соединения с PostgreSQL. Для правильной работы следует использовать владельца кластера базы данных PostgreSQL, обычно это пользователь postgres, выбранный по умолчанию.
Устаревшее имя: db-user
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
Параметр порта PostgreSQL (--pg-port)
Порт PostgreSQL.
Порт, на котором работает PostgreSQL. Обычно его не требуется указывать, поскольку большинство кластеров PostgreSQL работают на порту по умолчанию.
Устаревшее имя: db-port
Параметр каталога сокета PostgreSQL (--pg-socket-path)
Каталог Unix-сокета PostgreSQL.
Каталог Unix-сокета, указанный при запуске PostgreSQL. pgBackRest автоматически проверяет стандартное расположение для используемой ОС, поэтому обычно этот параметр не требуется, если каталог сокета не был явно изменён настройкой unix_socket_directories в postgresql.conf.
Устаревшее имя: db-socket-path
Параметр пользователя базы данных PostgreSQL (--pg-user)
Пользователь базы данных PostgreSQL.
Имя пользователя базы данных для соединения с PostgreSQL. Если оно не указано, pgBackRest использует локального пользователя ОС или PGUSER.
4.16 - Команда обновления stanza (stanza-upgrade)
stanza-upgrade.Сразу после обновления PostgreSQL до более новой основной версии необходимо во всех конфигурациях pgBackRest задать pg-path, указывающий новое расположение базы данных, и выполнить команду stanza-upgrade. Если на сервере настроено несколько репозиториев, stanza обновляется в каждом. Если база данных остановлена, используйте параметр --no-online.
Параметры команды
Параметр копирования работающего кластера (--online)
Обновление работающего кластера.
Параметр –no-online запрещает pgBackRest соединяться с PostgreSQL при обновлении stanza.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута базы данных (--db-timeout)
Тайм-аут запроса к базе данных.
Задаёт тайм-аут запросов к базе данных в секундах. Он распространяется и на функции начала и завершения резервного копирования, каждая из которых может выполняться довольно долго. Поэтому следует задавать большой тайм-аут, если нет уверенности, что эти функции завершатся быстро (то есть если задано start-fast=y и известно, что кластер базы данных не создаст много сегментов WAL во время резервного копирования).
ПРИМЕЧАНИЕ: параметр
db-timeoutдолжен быть меньшеprotocol-timeout.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры stanza
Параметр базы данных PostgreSQL (--pg-database)
База данных PostgreSQL.
Имя базы данных для соединения с PostgreSQL. Обычно лучше оставить значение по умолчанию, но в некоторых установках такой базы может не быть.
По историческим причинам значение переменной окружения PGDATABASE игнорируется.
Параметр сервера PostgreSQL (--pg-host)
Сервер PostgreSQL для удалённой работы.
Используется при резервном копировании, когда сервер PostgreSQL отличается от сервера репозитория.
Устаревшее имя: db-host
Параметр файла центра сертификации сервера PostgreSQL (--pg-host-ca-file)
Файл центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера PostgreSQL (--pg-host-ca-path)
Каталог центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера PostgreSQL (--pg-host-cert-file)
Файл сертификата для сервера PostgreSQL.
Отправляется серверу PostgreSQL для подтверждения личности клиента.
Параметр команды на сервере PostgreSQL (--pg-host-cmd)
Команда pgBackRest на сервере PostgreSQL.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере PostgreSQL различается. Если параметр не задан, команда на сервере PostgreSQL будет той же, что и локальная команда.
Устаревшее имя: db-cmd
Параметр файла конфигурации сервера PostgreSQL (--pg-host-config)
Файл конфигурации pgBackRest на сервере базы данных.
Задаёт расположение файла конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: db-config
Параметр каталога включаемых конфигураций сервера PostgreSQL (--pg-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере базы данных.
Задаёт расположение каталога включаемых конфигураций на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера PostgreSQL (--pg-host-config-path)
Каталог конфигурации pgBackRest на сервере базы данных.
Задаёт расположение каталога конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера PostgreSQL (--pg-host-key-file)
Файл ключа для сервера PostgreSQL.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера PostgreSQL (--pg-host-port)
Порт сервера PostgreSQL при заданном pg-host.
Позволяет указать нестандартный порт для протокола сервера PostgreSQL.
ПРИМЕЧАНИЕ: при
pg-host-type=sshдляpg-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: db-ssh-port
Параметр типа протокола сервера PostgreSQL (--pg-host-type)
Тип протокола сервера PostgreSQL.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера PostgreSQL (--pg-host-user)
Пользователь для входа на сервер PostgreSQL при заданном pg-host.
Этот пользователь также будет владельцем удалённого процесса pgBackRest и будет устанавливать соединения с PostgreSQL. Для правильной работы следует использовать владельца кластера базы данных PostgreSQL, обычно это пользователь postgres, выбранный по умолчанию.
Устаревшее имя: db-user
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
Параметр порта PostgreSQL (--pg-port)
Порт PostgreSQL.
Порт, на котором работает PostgreSQL. Обычно его не требуется указывать, поскольку большинство кластеров PostgreSQL работают на порту по умолчанию.
Устаревшее имя: db-port
Параметр каталога сокета PostgreSQL (--pg-socket-path)
Каталог Unix-сокета PostgreSQL.
Каталог Unix-сокета, указанный при запуске PostgreSQL. pgBackRest автоматически проверяет стандартное расположение для используемой ОС, поэтому обычно этот параметр не требуется, если каталог сокета не был явно изменён настройкой unix_socket_directories в postgresql.conf.
Устаревшее имя: db-socket-path
Параметр пользователя базы данных PostgreSQL (--pg-user)
Пользователь базы данных PostgreSQL.
Имя пользователя базы данных для соединения с PostgreSQL. Если оно не указано, pgBackRest использует локального пользователя ОС или PGUSER.
4.17 - Команда разрешения запуска (start)
start.Если процессы pgBackRest ранее были остановлены командой stop, командой start можно снова разрешить их запуск. Сама команда не запускает процессы pgBackRest немедленно, а лишь разрешает их выполнение. Дополнительные сведения и примеры приведены в разделе Запуск и остановка
.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
4.18 - Команда остановки (stop)
stop.Запрещает запуск новых процессов pgBackRest. По умолчанию работающим процессам разрешается успешно завершиться. Для завершения работающих процессов используйте параметр --force.
Процессы pgBackRest, запущенные после завершения команды stop, возвращают ошибку. Дополнительные сведения и примеры приведены в разделе Запуск и остановка .
Параметры команды
Параметр принудительного выполнения (--force)
Принудительная остановка всех процессов pgBackRest.
Этот параметр отправляет сигналы TERM всем работающим процессам pgBackRest для корректного, но немедленного завершения. Это также останавливает процессы, запущенные на другой системе, если их удалённые процессы работают на текущей. Например, если резервное копирование запущено на сервере резервного копирования, команда stop --force на сервере базы данных остановит процесс резервного копирования на сервере резервного копирования.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
4.19 - Команда проверки данных (verify)
verify.Команда verify определяет, корректны ли резервные копии и архивы в репозитории.
Параметры команды
Параметр вывода (--output)
Тип вывода.
Поддерживаются следующие типы вывода:
none- Не выводить результаты проверки.text- Выводить сведения о проверке в stdout.
Параметр набора резервной копии (--set)
Набор резервной копии для проверки.
Проверка всех файлов базы данных и архива, связанных с указанным набором резервной копии.
Параметр подробного вывода (--verbose)
Подробный вывод.
По умолчанию verbose равен false: выводится краткий ответ с важными сведениями об ошибках в репозитории. Значение true добавляет сведения о том, что было успешно проверено.
Общие параметры
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды pgBackRest (--cmd)
Команда pgBackRest.
pgBackRest может формировать командную строку, например когда команда restore создаёт настройку restore_command. В этом случае используется команда, которой был запущен процесс pgBackRest, если не задан параметр cmd.
ОСТОРОЖНО:
Использование обёртки для команды pgBackRest может привести к непредсказуемому поведению и не рекомендуется.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр файла конфигурации (--config)
Конфигурационный файл pgBackRest.
Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.
Параметр каталога включаемых конфигураций (--config-include-path)
Путь к дополнительным файлам конфигурации pgBackRest.
Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.
Параметр каталога конфигурации (--config-path)
Базовый путь файлов конфигурации pgBackRest.
Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.
Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр максимального числа процессов (--process-max)
Максимальное число процессов для сжатия и передачи данных.
Каждый процесс выполняет сжатие и передачу, ускоряя выполнение команды, однако не следует задавать process-max настолько большим, чтобы это ухудшало производительность базы данных.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ: параметр
protocol-timeoutдолжен быть большеdb-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр stanza (--stanza)
Определение stanza.
Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.
Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Параметр выбора репозитория (--repo)
Выбор репозитория.
Задаёт репозиторий, с которым работает команда.
Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ: при
repo-host-type=sshдляrepo-host-portнет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной вcmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр целевого времени репозитория (--repo-target-time)
Целевое время репозитория.
Целевое время определяет момент, на который команды читают репозиторий в хранилище с версионированием. Это позволяет прочитать состояние репозитория на определённый момент времени и восстановить данные, удалённые или повреждённые по ошибке пользователя либо вредоносным ПО.
S3, GCS и Azure поддерживают версионирование, но обычно оно отключено по умолчанию. Помимо включения версионирования, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
Если указан параметр repo-target-time, необходимо также указать repo. Версионирование, вероятно, поддерживается не всеми типами репозиториев, и в целом при восстановлении разумно обращаться к одному конкретному репозиторию.
Временные метки хранилища сравниваются с указанной по условию <=; миллисекунды, если они указаны, отбрасываются.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
4.20 - Команда версии (version)
version.Отображает установленную версию pgBackRest.
Параметры команды
Параметр вывода (--output)
Тип вывода.
Поддерживаются следующие типы вывода:
text- Отображает установленную версию pgBackRest в виде текста.num- Отображает установленную версию pgBackRest в виде целого числа.
5 - Справочник по конфигурации
Введение
pgBackRest может работать исключительно с параметрами командной строки, однако для сложных установок или большого числа параметров практичнее использовать файл конфигурации. По умолчанию он расположен в /etc/pgbackrest/pgbackrest.conf. Если файла там нет, проверяется прежнее расположение по умолчанию: /etc/pgbackrest.conf.
Используются следующие типы параметров:
Строка: текстовая строка, обычно идентификатор, пароль и т. п.
Пример командной строки: --stanza=demo
Пример файла конфигурации: repo1-cipher-pass=zWaf6XtpjIVZC5444yXB...
Путь: однозначно определяет расположение в структуре каталогов. Путь должен начинаться с /; двойной // не допускается, завершающий / не ожидается.
Пример командной строки: --repo1-path=/var/lib/pgbackrest
Пример файла конфигурации: repo1-path=/var/lib/pgbackrest
Логическое значение: включает или отключает параметр. Допустимы только значения аргумента y/n.
Примеры командной строки: --start-fast, --no-start-fast, --start-fast=y, --start-fast=n
Примеры файла конфигурации: start-fast=y, start-fast=n
Целое число: используется для портов, количества хранимых копий или повторных попыток, допустимого числа параллельных процессов и т. п.
Пример командной строки: --compress-level=3
Пример файла конфигурации: pg1-port=5432
Размер: используется для размеров буферов, объёма дискового пространства и т. п. Размер можно указать в байтах (по умолчанию) либо в KiB, MiB, GiB, TiB или PiB, где множитель равен степени 1024. Например, вместо 5368709120 можно использовать значение 5GiB (или 5GB, 5g) без учёта регистра. Дробные значения, такие как 2.5GiB, не допускаются; вместо них следует использовать 2560MiB.
Пример командной строки: --archive-get-queue-max=1GiB
Пример файла конфигурации: buffer-size=2MiB
Время: время в секундах.
Пример командной строки: --io-timeout=90
Пример файла конфигурации: db-timeout=600
Список: параметр можно указать несколько раз.
Пример командной строки: --db-exclude=db1 --db-exclude=db2 --db-exclude=db5
Пример файла конфигурации, каждое значение на отдельной строке:
Ключ/значение: параметр можно указать несколько раз в форме key=value.
Пример командной строки: --tablespace-map=ts_01=/db/ts_01 --tablespace-map=ts_02=/db/ts_02
Пример файла конфигурации, каждое значение на отдельной строке:
Параметры архивирования
Секция archive определяет параметры команд archive-push и archive-get.
Параметр асинхронного архивирования (--archive-async)
Асинхронная отправка и получение сегментов WAL.
Включает асинхронный режим работы команд archive-push и archive-get.
Асинхронный режим эффективнее, поскольку позволяет повторно использовать соединения и выполнять операции параллельно. Дополнительные сведения приведены в описании параметров spool-path, archive-get-queue-max и archive-push-queue-max.
Параметр максимального размера очереди получения из архива (--archive-get-queue-max)
Максимальный размер очереди archive-get в pgBackRest.
Задаёт максимальный размер очереди archive-get при включённом archive-async. Очередь хранится в spool-path и ускоряет передачу WAL в PostgreSQL.
Параметр повторного запроса отсутствующего сегмента WAL (--archive-missing-retry)
Повторный запрос отсутствующего сегмента WAL
Повторно запрашивает сегмент WAL, об отсутствии которого ранее сообщила команда archive-get в асинхронном режиме. Это предотвращает использование уведомлений в каталоге очереди, оставшихся от предыдущего восстановления, которые могли бы привести к сбою восстановления, если согласованность ещё не достигнута.
Отключение этого параметра позволяет PostgreSQL надёжнее определять достижение конца WAL в архиве и переключаться на потоковую передачу с первичного сервера. Если повторные запросы включены, непрерывное поступление WAL в архив заставляет PostgreSQL продолжать получать WAL из архива вместо переключения на потоковую передачу.
При отключении этого параметра важно убедиться, что каталог очереди для stanza пуст. Команда restore очищает его автоматически, если каталог очереди настроен на момент восстановления. В противном случае пользователь должен самостоятельно обеспечить его очистку.
Параметр размера пакета отправки в архив (--archive-push-batch-size)
Максимальный объём WAL, отправляемый за один асинхронный запуск.
В асинхронном режиме процесс archive-push отправляет все готовые сегменты WAL за один запуск. Поскольку archive-push-queue-max проверяется только в начале каждого запуска, при обработке очень большого числа сегментов очередь может значительно превысить предел до следующей проверки.
Этот параметр ограничивает объём WAL, обрабатываемый за один запуск, после чего процесс завершается и вновь запускается следующим вызовом archive-push, который повторно проверяет очередь. Меньшие значения позволяют проверять очередь чаще, но требуют более частого запуска асинхронного процесса. Значение округляется вниз до целого числа сегментов WAL, однако всегда обрабатывается хотя бы один сегмент.
Параметр максимального размера очереди отправки в архив (--archive-push-queue-max)
Максимальный размер очереди архивирования PostgreSQL.
При достижении предела произойдёт следующее:
- pgBackRest сообщит PostgreSQL об успешном архивировании WAL, а затем УДАЛИТ ЕГО.
- В журнал PostgreSQL будет выведено предупреждение.
В этом случае поток архивного журнала прервётся, и PITR за этой точкой станет невозможен. Чтобы вновь обеспечить полные возможности восстановления, потребуется новая резервная копия.
В асинхронном режиме удаляется вся очередь, чтобы отдельные сегменты WAL не успевали попадать в архив до повторного превышения предела очереди.
В асинхронном режиме этот предел проверяется только в начале каждого запуска archive-push, поэтому за один запуск очередь может превысить его. Уменьшите archive-push-batch-size, чтобы проверять очередь чаще.
Эта возможность предотвращает заполнение тома с журналом, при котором PostgreSQL полностью остановится. Лучше потерять резервную копию, чем допустить остановку PostgreSQL.
Устаревшее имя: archive-queue-max
Параметр тайм-аута архивирования (--archive-timeout)
Тайм-аут архивирования.
Задаёт максимальное время в секундах, в течение которого ожидается поступление каждого сегмента WAL в архивный репозиторий pgBackRest. Тайм-аут применяется к командам check и backup, когда они ожидают архивирования сегментов WAL, необходимых для согласованности резервной копии.
Параметры резервного копирования
Секция backup определяет параметры резервного копирования.
Параметр аннотации резервной копии (--annotation)
Добавление к резервной копии пользовательских пар «ключ — значение».
Пользователи могут добавлять к резервной копии информационные пары «ключ — значение». Этот параметр можно указывать несколько раз для добавления нескольких аннотаций.
Аннотации включаются в текстовый вывод команды info, если резервная копия указана через --set, и всегда присутствуют в выводе JSON.
Параметр проверки архива (--archive-check)
Проверка наличия сегментов WAL в архиве перед завершением резервного копирования.
Проверяет, что все сегменты WAL, необходимые для согласованности резервной копии, присутствуют в архиве WAL. Рекомендуется оставить значение по умолчанию, если не используется другой способ архивирования.
Этот параметр должен быть включён, если включён archive-copy.
Параметр копирования архива (--archive-copy)
Копирование в резервную копию сегментов WAL, необходимых для согласованности.
Этот параметр обеспечивает дополнительную предосторожность: он защищает от повреждения архива сегментов WAL, сохраняя сегменты, необходимые для согласованности, непосредственно в резервной копии. Сегменты WAL по-прежнему сохраняются и в архиве, поэтому параметр увеличивает расход места.
При использовании этого параметра желательно, чтобы команды archive-push и backup имели одинаковый compress-type (например, lz4). Иначе сегменты WAL потребуется повторно сжать с compress-type, используемым резервной копией, что может потребовать значительных ресурсов в зависимости от объёма WAL, созданного во время резервного копирования.
При восстановлении сегменты WAL будут находиться в pg_xlog/pg_wal, и PostgreSQL предпочтёт использовать их, а не вызывать restore_command.
Параметр archive-check должен быть включён, если включён archive-copy.
Параметр проверки режима архивирования (--archive-mode-check)
Проверка настройки PostgreSQL archive_mode.
Этот параметр включён по умолчанию и запрещает использовать в PostgreSQL archive_mode=always.
Сегменты WAL, отправляемые с резервного сервера, могут логически совпадать с сегментами WAL с первичного сервера, но иметь другие контрольные суммы. Во избежание конфликтов рекомендуется отключить архивирование из нескольких источников.
ОСТОРОЖНО:
Если этот параметр отключён, крайне важно обеспечить, чтобы в репозиторий через команду archive-push писал только один процесс архивирования.
Параметр резервного копирования с резервного сервера (--backup-standby)
Резервное копирование с резервного кластера.
Включает резервное копирование с резервного сервера для снижения нагрузки на первичный кластер. Этот параметр требует настройки как первичного, так и резервного сервера.
Поддерживаются следующие режимы:
y- Для резервного копирования необходим резервный сервер.prefer- Копирование с резервного сервера, если он доступен; иначе с первичного.n- Копирование только с первичного сервера.
Параметр контрольных сумм страниц (--checksum-page)
Проверка контрольных сумм страниц данных.
Указывает pgBackRest проверять контрольные суммы всех страниц данных при резервном копировании кластера. Этот параметр включается автоматически, если в кластере включены контрольные суммы страниц данных.
Ошибки проверки контрольных сумм не прерывают резервное копирование. Вместо этого в журнал выводятся предупреждения (а при настройках по умолчанию — и в консоль), а список некорректных страниц сохраняется в манифесте резервной копии.
Параметр исключения путей и файлов (--exclude)
Исключение путей и файлов из резервной копии.
Все исключения задаются относительно $PGDATA. Если исключение заканчивается на /, исключаются только файлы в указанном каталоге: например, --exclude=junk/ исключит все файлы в каталоге $PGDATA/junk, но сохранит сам каталог. Если исключение не заканчивается на /, файл может либо точно совпадать с исключением, либо соответствовать исключению с добавленным /: например, --exclude=junk исключит каталог $PGDATA/junk и все содержащиеся в нём файлы.
Используйте эту возможность осторожно: очень легко исключить важные данные и нарушить согласованность резервной копии. Обязательно проверяйте восстановление!
Все исключённые файлы записываются в журнал на уровне info вместе с правилом исключения. Обязательно проверяйте список исключённых файлов, чтобы убедиться, что ничего не исключено случайно.
ПРИМЕЧАНИЕ:
При дельта-восстановлении исключения не учитываются. Все файлы и каталоги, исключённые при резервном копировании, будут удалены при дельта-восстановлении.
Этот параметр не следует использовать для исключения журналов PostgreSQL из резервной копии. Журналы можно вынести за пределы каталога PGDATA с помощью настройки PostgreSQL log_directory; при этом они также сохранятся после восстановления.
В командной строке или файле конфигурации можно задать несколько исключений.
Параметр автоматического удаления устаревших копий (--expire-auto)
Автоматический запуск команды expire после успешного резервного копирования.
Этот параметр включён по умолчанию. Отключать его следует с осторожностью: в этом случае все резервные копии и архивы будут храниться бессрочно, что может привести к исчерпанию места в репозитории. Чтобы избежать этого, необходимо регулярно запускать команду expire.
При автоматическом запуске после успешного резервного копирования expire использует конфигурацию команды backup, поэтому параметры, заданные только в секции команды expire (например, [global:expire]), не применяются. Чтобы применялась конфигурация, специфичная для expire, отключите этот параметр и запускайте команду expire отдельно.
Параметр порога сохранения манифеста (--manifest-save-threshold)
Порог сохранения манифеста при резервном копировании.
Определяет, как часто манифест сохраняется во время резервного копирования. Сохранять его важно, поскольку он содержит контрольные суммы и обеспечивает эффективное возобновление. Фактический порог равен большему из двух значений: 1% размера резервной копии или manifest-save-threshold.
Параметр возобновления (--resume)
Разрешение возобновления неудавшегося резервного копирования.
Определяет, включена ли возможность возобновления. Она может значительно сократить время резервного копирования после сбоя предыдущей попытки того же типа. Однако она усложняет работу, поэтому в средах, где она не нужна, может быть желательно её отключить.
Параметр быстрого запуска (--start-fast)
Принудительная контрольная точка для быстрого начала резервного копирования.
Принудительно выполняет контрольную точку, передавая y в параметр fast функции начала резервного копирования, чтобы копирование началось немедленно. Иначе резервное копирование начнётся после следующей плановой контрольной точки.
Общие параметры
Секция general определяет параметры, общие для многих команд.
Параметр разрешения запуска от root (--allow-root)
Разрешение запуска команды от пользователя root.
По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.
Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.
Параметр размера буфера (--buffer-size)
Размер буфера для операций ввода-вывода.
Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.
Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.
Параметр команды pgBackRest (--cmd)
Команда pgBackRest.
pgBackRest может формировать командную строку, например когда команда restore создаёт настройку restore_command. В этом случае используется команда, которой был запущен процесс pgBackRest, если не задан параметр cmd.
ОСТОРОЖНО:
Использование обёртки для команды pgBackRest может привести к непредсказуемому поведению и не рекомендуется.
Параметр команды SSH-клиента (--cmd-ssh)
Команда SSH-клиента.
Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.
Параметр сжатия (--compress)
Сжатие файлов.
Файлы резервных копий совместимы с утилитами сжатия командной строки.
Этот параметр устарел. Вместо него следует использовать compress-type.
Параметр уровня сжатия (--compress-level)
Уровень сжатия файлов.
Задаёт уровень сжатия файлов, когда compress-type не равен none или задано compress=y (устаревший вариант).
Параметр уровня сжатия для сети (--compress-level-network)
Уровень сжатия для передачи по сети.
Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.
Параметр типа сжатия (--compress-type)
Тип сжатия файлов.
Поддерживаются следующие типы сжатия:
none- без сжатияbz2- формат сжатия bzip2gz- формат сжатия gziplz4- формат сжатия lz4 (доступен не на всех платформах)zst- формат сжатия Zstandard (доступен не на всех платформах)
Параметр тайм-аута базы данных (--db-timeout)
Тайм-аут запроса к базе данных.
Задаёт тайм-аут запросов к базе данных в секундах. Он распространяется и на функции начала и завершения резервного копирования, каждая из которых может выполняться довольно долго. Поэтому следует задавать большой тайм-аут, если нет уверенности, что эти функции завершатся быстро (то есть если задано start-fast=y и известно, что кластер базы данных не создаст много сегментов WAL во время резервного копирования).
ПРИМЕЧАНИЕ:
Параметр db-timeout должен быть меньше protocol-timeout.
Параметр дельта-восстановления и копирования (--delta)
Восстановление или резервное копирование с использованием контрольных сумм.
При восстановлении по умолчанию предполагается, что каталоги данных и табличных пространств PostgreSQL существуют, но пусты. Этот параметр выполняет дельта-восстановление с использованием контрольных сумм.
При резервном копировании этот параметр использует контрольные суммы вместо временных меток, чтобы определить, нужно ли копировать файлы.
Параметр тайм-аута ввода-вывода (--io-timeout)
Тайм-аут ввода-вывода.
Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.
Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.
Параметр каталога блокировок (--lock-path)
Путь для хранения файлов блокировок.
В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.
Параметр нейтральной маски umask (--neutral-umask)
Использование нейтральной маски umask.
Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.
Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.
Параметр приоритета процесса (--priority)
Установка приоритета процесса.
Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.
Параметр максимального числа процессов (--process-max)
Максимальное число процессов для сжатия и передачи данных.
Каждый процесс выполняет сжатие и передачу, ускоряя выполнение команды, однако не следует задавать process-max настолько большим, чтобы это ухудшало производительность базы данных.
Параметр тайм-аута протокола (--protocol-timeout)
Тайм-аут протокола.
Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.
ПРИМЕЧАНИЕ:
Параметр protocol-timeout должен быть больше db-timeout.
Параметр поддержания соединения (--sck-keep-alive)
Включение поддержания соединения.
Включает сообщения keep-alive для сокетных соединений.
Параметр каталога очереди (--spool-path)
Путь для хранения промежуточных данных.
Этот каталог используется для хранения данных асинхронных команд archive-push и archive-get.
Асинхронная команда archive-push записывает подтверждения в каталог очереди после успешного сохранения WAL в архиве (а при сбое — сообщения об ошибках), чтобы процесс переднего плана мог быстро уведомить PostgreSQL. Файлы подтверждений очень малы: нулевого размера при успехе и несколько сотен байтов при ошибке.
Асинхронная команда archive-get помещает WAL в очередь в каталоге очереди, чтобы быстро передавать его по запросу PostgreSQL. Перемещение файлов в PostgreSQL наиболее эффективно, когда каталог очереди находится в той же файловой системе, что и pg_xlog/pg_wal. Однако не рекомендуется размещать каталог очереди внутри pg_xlog/pg_wal, поскольку это может вызвать проблемы у утилит PostgreSQL, таких как pg_rewind.
Данные в каталоге очереди нельзя считать строго временными: они могут сохраняться после перезагрузки, и их следует сохранять. Однако их потеря не представляет проблемы. pgBackRest просто повторно проверит каждый сегмент WAL, чтобы убедиться в его надёжном архивировании для archive-push, и заново построит очередь для archive-get.
Каталог очереди предназначен для размещения в локальной файловой системе, совместимой с Posix, а не в удалённой файловой системе, такой как NFS или CIFS.
Параметр числа сообщений keep-alive (--tcp-keep-alive-count)
Число сообщений keep-alive.
Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.
Параметр времени простоя keep-alive (--tcp-keep-alive-idle)
Время простоя перед отправкой keep-alive.
Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.
Параметр интервала keep-alive (--tcp-keep-alive-interval)
Интервал сообщений keep-alive.
Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.
Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.
Параметр наборов шифров TLSv1.2 (--tls-cipher-12)
Допустимые наборы шифров TLSv1.2.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ:
Абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметр наборов шифров TLSv1.3 (--tls-cipher-13)
Допустимые наборы шифров TLSv1.3.
Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).
ПРИМЕЧАНИЕ:
Абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.
При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.
Параметры журналирования
Секция log определяет параметры ведения журнала.
ОСТОРОЖНО:
Журналирование на уровне trace может раскрыть секретные данные, такие как ключи и пароли. Используйте его осторожно!
Параметр уровня журналирования в консоль (--log-level-console)
Уровень журналирования в консоль.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в файл (--log-level-file)
Уровень журналирования в файл.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)
Уровень ведения журнала для stderr.
Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.
Поддерживаются следующие уровни журналирования:
off- Журналирование отключено (не рекомендуется)error- Только ошибкиwarn- Предупреждения и ошибкиinfo- Информационные сообщения, предупреждения и ошибкиdetail- Подробные и информационные сообщения, предупреждения и ошибкиdebug- Отладочные, подробные и информационные сообщения, предупреждения и ошибкиtrace- Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
Параметр каталога журналов (--log-path)
Путь, по которому хранятся файлы журналов.
Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.
Параметр журналирования подпроцессов (--log-subprocess)
Включение журналирования в подпроцессах.
Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.
Параметр временных меток журнала (--log-timestamp)
Включение временных меток в журнале.
Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.
Параметры для сопровождающих
Параметры для сопровождающих предназначены для поддержки форков PostgreSQL. Сопровождающему форка следует определить подходящие значения и затем сообщить их пользователям форка.
ПРЕДУПРЕЖДЕНИЕ:
Неправильное использование этих параметров может привести к неожиданному поведению или повреждению данных.
Сопровождающий форка отвечает за тестирование pgBackRest с требуемыми параметрами. pgBackRest не гарантирует совместимость ни с одним форком.
Параметр проверки заголовков WAL (--archive-header-check)
Проверка версии и идентификатора PostgreSQL в заголовках WAL.
Этот параметр включён по умолчанию и проверяет соответствие заголовка WAL версии PostgreSQL и системному идентификатору, чтобы убедиться, что WAL копируется в правильную stanza. Эта проверка дополняет проверку соответствия pg_control stanza и проверку того, что WAL копируется из того же каталога данных PostgreSQL, где находится pg_control.
Поэтому отключение этой проверки достаточно безопасно, но делать это следует только при необходимости, например если WAL зашифрован.
Параметр проверки заголовков страниц (--page-header-check)
Проверка заголовков страниц PostgreSQL.
Этот параметр включён по умолчанию и добавляет проверки заголовков страниц.
Следует избегать отключения этого параметра, кроме случаев, когда оно необходимо, например если страницы зашифрованы.
Параметр принудительного задания версии PostgreSQL (--pg-version-force)
Принудительное задание версии PostgreSQL.
Указанная версия PostgreSQL будет использоваться вместо версии, автоматически определённой по pg_control или заголовкам WAL. Это полезно главным образом для форков PostgreSQL или версий в разработке, в которых эти значения отличаются от версии выпуска. Версия, которую PostgreSQL сообщает через server_version_num, должна совпадать с принудительно заданной.
ПРЕДУПРЕЖДЕНИЕ:
Используйте этот параметр осторожно: pg_control и заголовки WAL всё равно будут читаться в формате, ожидаемом для указанной версии, то есть в формате официальной версии PostgreSQL с открытым исходным кодом. Если форк или версия в разработке меняет формат полей, от которых зависит pgBackRest, это приведёт к неожиданному поведению. В общем случае параметр будет работать как ожидается только тогда, когда форк добавляет все собственные поля структур после стандартных полей PostgreSQL.
Параметры репозитория
Секция repository определяет параметры настройки репозитория.
Индексация: все параметры repo- имеют индексы, что позволяет настраивать несколько репозиториев. Например, один репозиторий настраивается параметрами repo1-path, repo1-host и т. п. Если настроено несколько репозиториев и для команды не указан параметр --repo, действия с репозиториями выполняются в порядке убывания приоритета (например, сначала repo1, затем repo2).
Параметры repo-retention-* определяют срок хранения резервных копий. Удаление происходит только тогда, когда число завершённых резервных копий превышает заданное число хранимых копий. Иными словами, если repo1-retention-full-type равен count (по умолчанию), а repo1-retention-full равен 2, то для удаления самой старой копии должны существовать 3 завершённые копии. Если repo1-retention-full-type равен time, значение repo1-retention-full задаётся в днях, поэтому до удаления должны накопиться полные резервные копии хотя бы за указанное число дней. Убедитесь, что места всегда хватает для числа копий, заданного сроком хранения, + 1 резервной копии.
Параметр учётной записи репозитория Azure (--repo-azure-account)
Учётная запись репозитория Azure.
Учётная запись Azure для хранения репозитория.
Параметр контейнера репозитория Azure (--repo-azure-container)
Контейнер репозитория Azure.
Контейнер Azure для хранения репозитория.
Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.
Параметр конечной точки репозитория Azure (--repo-azure-endpoint)
Конечная точка репозитория Azure.
Конечная точка для соединения со службой BLOB-объектов. Значение по умолчанию обычно подходит, если не используется Azure Government.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр ключа репозитория Azure (--repo-azure-key)
Ключ репозитория Azure.
Общий ключ или подпись общего доступа в зависимости от параметра repo-azure-key-type.
Параметр типа ключа репозитория Azure (--repo-azure-key-type)
Тип ключа репозитория Azure.
Для авторизации поддерживаются следующие типы:
shared- Общий ключsas- Подпись общего доступаauto- Автоматическая авторизация с использованием управляемых удостоверений Azure
Параметр стиля URI репозитория Azure (--repo-azure-uri-style)
Стиль URI Azure.
Поддерживаются следующие стили URI:
host- Соединение с узломaccount.endpoint.path- Соединение с узломendpointс добавлением учётной записи в начало URI.
Параметр поблочного инкрементного резервного копирования (--repo-block)
Включение поблочного инкрементного резервного копирования.
Поблочное инкрементное копирование позволяет создавать более детальные резервные копии, разбивая файлы на блоки, которые можно копировать независимо. Это экономит место в репозитории и может ускорить дельта-восстановление, поскольку отдельные блоки можно получать без чтения всего файла из репозитория.
ПРИМЕЧАНИЕ:
Прежде чем включить repo-block, необходимо включить параметр repo-bundle.
Размер блока определяется размером и возрастом файла. Как правило, для более старых или крупных файлов выбираются более крупные блоки. Если файл достаточно старый, поблочное инкрементное копирование для него не используется.
Поблочное инкрементное копирование наиболее эффективно, когда включено для всех типов резервных копий, в том числе полных. Полная копия при этом становится немного больше, зато последующие дифференциальные и инкрементные копии могут использовать созданные ею карты блоков для экономии места.
Параметр пакетирования файлов в репозитории (--repo-bundle)
Пакетирование файлов в репозитории.
Объединяет небольшие файлы в пакеты, уменьшая общее число файлов, записываемых в репозиторий. Записывать меньше файлов обычно эффективнее, особенно в объектные хранилища, такие как S3. Кроме того, файлы нулевого размера не сохраняются (кроме записей в манифесте), что экономит время и место.
Параметр предельного размера файла в пакете репозитория (--repo-bundle-limit)
Предельный размер файлов для пакетирования.
Максимальный размер файлов, включаемых в пакеты. Файлы большего размера хранятся отдельно.
Файлы в пакетах нельзя использовать повторно при возобновлении резервного копирования, поэтому этот параметр определяет, какие файлы можно использовать при возобновлении: чем больше значение, тем меньше таких файлов.
Параметр размера пакета репозитория (--repo-bundle-size)
Целевой размер пакета файлов.
Определяет целевой суммарный размер файлов, добавляемых в один пакет. Несжатый пакет может достигать размера repo-bundle-size + repo-bundle-limit, поэтому не следует задавать этому параметру максимальный размер, допустимый файловой системой.
Как правило, слишком большое значение нежелательно: при повторной попытке потребуется заново обработать весь пакет.
Параметр парольной фразы шифрования репозитория (--repo-cipher-pass)
Парольная фраза шифрования репозитория.
Парольная фраза для шифрования и расшифрования файлов репозитория.
ПРИМЕЧАНИЕ:
При запуске без параметра stanza команда info читает настройки шифрования только из секции global. Если настройки шифрования заданы отдельно для каждой stanza, для чтения зашифрованной stanza следует запускать команду info с параметром stanza.
Параметр типа шифрования репозитория (--repo-cipher-type)
Шифр для шифрования репозитория.
Поддерживаются следующие типы шифрования:
none- Репозиторий не зашифрованaes-256-cbc- Advanced Encryption Standard с длиной ключа 256 бит
Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.
Параметр бакета репозитория GCS (--repo-gcs-bucket)
Бакет репозитория GCS.
Бакет GCS для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.
Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)
Конечная точка репозитория GCS.
Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.
Параметр ключа репозитория GCS (--repo-gcs-key)
Ключ репозитория GCS.
Токен или файл ключа служебной учётной записи в зависимости от параметра repo-gcs-key-type.
Параметр типа ключа репозитория GCS (--repo-gcs-key-type)
Тип ключа репозитория GCS.
Для авторизации поддерживаются следующие типы:
auto- Авторизация с помощью служебной учётной записи экземпляра.service- Служебная учётная запись из локально сохранённого ключа.token- Для локального тестирования, например сfakegcs.
При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.
Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)
Идентификатор проекта GCS.
Идентификатор проекта GCS, определяющий оплату запросов.
Параметр жёстких ссылок в репозитории (--repo-hardlink)
Жёсткие ссылки между файлами резервных копий в репозитории.
Включает создание жёстких ссылок из дифференциальных и инкрементных копий на файлы соответствующих полных копий. На уровне файловой системы каждая копия при этом выглядит полной. Однако следует соблюдать осторожность: изменение файлов с жёсткими ссылками может затронуть все резервные копии в наборе.
Устаревшее имя: hardlink
Параметр сервера репозитория (--repo-host)
Сервер репозитория при удалённой работе.
При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.
Устаревшее имя: backup-host
Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)
Файл центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)
Каталог центра сертификации сервера репозитория.
Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера репозитория (--repo-host-cert-file)
Файл сертификата для сервера репозитория.
Отправляется серверу репозитория для подтверждения личности клиента.
Параметр команды на сервере репозитория (--repo-host-cmd)
Команда pgBackRest на сервере репозитория.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.
Устаревшее имя: backup-cmd
Параметр файла конфигурации сервера репозитория (--repo-host-config)
Файл конфигурации pgBackRest на сервере репозитория.
Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: backup-config
Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере репозитория.
Задаёт расположение каталога включаемых конфигураций на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)
Каталог конфигурации pgBackRest на сервере репозитория.
Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера репозитория (--repo-host-key-file)
Файл ключа для сервера репозитория.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера репозитория (--repo-host-port)
Порт сервера репозитория при заданном repo-host.
Позволяет указать нестандартный порт для протокола сервера репозитория.
ПРИМЕЧАНИЕ:
При repo-host-type=ssh для repo-host-port нет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной в cmd-ssh.
Устаревшее имя: backup-ssh-port
Параметр типа протокола сервера репозитория (--repo-host-type)
Тип протокола сервера репозитория.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера репозитория (--repo-host-user)
Пользователь сервера репозитория при заданном repo-host.
Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.
Устаревшее имя: backup-user
Параметр пути репозитория (--repo-path)
Путь для хранения резервных копий и архива.
В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.
Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.
Параметр хранения архива (--repo-retention-archive)
Число резервных копий, для которых сохраняется непрерывный WAL.
ПРИМЕЧАНИЕ:
Сегменты WAL, необходимые для согласованности резервной копии, всегда сохраняются до удаления этой копии независимо от настройки данного параметра.
Если значение не задано, а repo-retention-full-type равен count (по умолчанию), то для удаления архива по умолчанию используется значение repo-retention-full (или repo-retention-diff), соответствующее repo-retention-archive-type, заданному как full (или diff). Это гарантирует, что WAL удаляется только для уже удалённых резервных копий. Если repo-retention-full-type равен time, по умолчанию удаляются архивы, предшествующие самой старой полной копии, оставшейся после применения настройки repo-retention-full.
Этот параметр должен быть задан, если repo-retention-archive-type равен incr. При острой нехватке дискового пространства он вместе с repo-retention-archive-type позволяет агрессивнее удалять сегменты WAL. Однако это исключает возможность PITR из копий с удалённым WAL и потому не рекомендуется.
Устаревшее имя: retention-archive
Параметр типа хранения архива (--repo-retention-archive-type)
Тип резервных копий для хранения WAL.
При значении full pgBackRest сохраняет архивные журналы для числа полных резервных копий, заданного repo-retention-archive. При значении diff (дифференциальные) pgBackRest сохраняет архивные журналы для числа полных и дифференциальных копий, заданного repo-retention-archive: если последняя копия полная, для целей хранения в репозитории она учитывается как дифференциальная. При значении incr (инкрементные) pgBackRest сохраняет архивные журналы для числа полных, дифференциальных и инкрементных копий, заданного repo-retention-archive. Рекомендуется оставить значение по умолчанию, при котором WAL удаляется только вместе с полными резервными копиями.
Устаревшее имя: retention-archive-type
Параметр хранения дифференциальных копий (--repo-retention-diff)
Число сохраняемых дифференциальных резервных копий.
При удалении дифференциальной копии также удаляются все связанные с ней инкрементные копии. Если параметр не задан, все дифференциальные копии сохраняются до удаления полных копий, от которых они зависят.
При определении копий для удаления полные копии учитываются в числе дифференциальных. В большинстве случаев это немного уменьшает число дифференциальных копий, которые необходимо хранить.
Устаревшее имя: retention-diff
Параметр хранения полных копий (--repo-retention-full)
Число или срок хранения полных резервных копий.
При удалении полной копии также удаляются все связанные с ней дифференциальные и инкрементные копии. Если параметр не задан, выводится предупреждение. Для бессрочного хранения задайте максимальное значение.
Устаревшее имя: retention-full
Параметр типа хранения полных копий (--repo-retention-full-type)
Тип срока хранения полных резервных копий.
Определяет, означает ли настройка repo-retention-full период времени (в днях) или число полных копий, которые нужно сохранять.
При значении time полные копии старше repo-retention-full удаляются из репозитория, если существует хотя бы ещё одна копия, возраст которой не меньше значения repo-retention-full. Например, если repo-retention-full равен 30 (дней) и есть 2 полные копии возрастом 25 и 35 дней, ни одна не будет удалена: после удаления копии возрастом 35 дней останется только копия возрастом 25 дней, что нарушит политику хранения за 30 дней. Эта политика требует наличия хотя бы одной копии возрастом 30 дней перед удалением более старой. Архивный WAL, предшествующий самой старой оставшейся полной копии, удаляется автоматически, если repo-retention-archive-type и repo-retention-archive не заданы явно.
При значении count полные копии сверх числа repo-retention-full удаляются. Например, если repo-retention-full равен 4 и завершается пятая полная копия, самая старая полная копия будет удалена, чтобы их число осталось равным 4.
Резервная копия учитывается при применении политики хранения только после успешного завершения. Например, если repo-retention-full-type равен count, а repo-retention-full равен 2, для удаления самой старой копии должны существовать 3 завершённые полные копии.
Параметр хранения истории резервных копий (--repo-retention-history)
Число дней хранения манифестов истории резервных копий.
После завершения резервного копирования копия манифеста сохраняется в каталоге backup.history. По умолчанию эти файлы никогда не удаляются, поскольку полезны для анализа данных, например для измерения роста резервных копий и WAL со временем.
Параметр repo-retention-history задаёт число дней хранения манифестов истории резервных копий. Неудалённые резервные копии всегда сохраняются в истории. Укажите repo-retention-history=0, чтобы хранить историю только для неудалённых резервных копий.
При удалении манифеста истории полной резервной копии также удаляются манифесты истории всех связанных с ней дифференциальных и инкрементных копий.
Параметр бакета репозитория S3 (--repo-s3-bucket)
Бакет репозитория S3.
Бакет S3 для хранения репозитория.
Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.
Параметр конечной точки репозитория S3 (--repo-s3-endpoint)
Конечная точка репозитория S3.
Следует использовать конечную точку AWS, допустимую для выбранного региона.
Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.
Параметр ключа доступа к репозиторию S3 (--repo-s3-key)
Ключ доступа к репозиторию S3.
Ключ AWS для доступа к этому бакету.
Параметр секретного ключа доступа к репозиторию S3 (--repo-s3-key-secret)
Секретный ключ доступа к репозиторию S3.
Секретный ключ AWS для доступа к этому бакету.
Параметр типа ключа репозитория S3 (--repo-s3-key-type)
Тип ключа репозитория S3.
Поддерживаются следующие типы:
shared- Общие ключиauto- Автоматическое получение временных учётных данныхweb-id- Автоматическое получение учётных данных веб-идентификацииpod-id- Автоматическое получение учётных данных EKS Pod Identityprocess- Получение учётных данных запуском процесса
Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)
Ключ KMS репозитория S3.
Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.
Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)
Команда процесса аутентификации S3.
Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.
Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс
.
Параметр региона репозитория S3 (--repo-s3-region)
Регион репозитория S3.
Регион AWS, в котором создан бакет.
Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)
Оплата запросов отправителем в репозитории S3.
Включает в S3 оплату запросов отправителем.
Параметр роли репозитория S3 (--repo-s3-role)
Роль репозитория S3.
Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.
Параметр службы репозитория S3 (--repo-s3-service)
Служба подписывания S3.
Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.
Параметр клиентского ключа SSE репозитория S3 (--repo-s3-sse-customer-key)
Клиентский ключ SSE репозитория S3.
Включает шифрование на стороне сервера S3 с указанным клиентским ключом.
Параметр конечной точки STS репозитория S3 (--repo-s3-sts-host)
Конечная точка STS репозитория S3.
Конечная точка STS для получения временных учётных данных при repo-s3-key-type=web-id. Укажите региональную конечную точку (например, sts.us-east-1.amazonaws.com) для использования регионального STS; это может требоваться для GovCloud, китайских регионов или снижения задержки.
Параметр токена безопасности репозитория S3 (--repo-s3-token)
Токен безопасности репозитория S3.
Токен безопасности AWS, используемый с временными учётными данными.
Параметр стиля URI репозитория S3 (--repo-s3-uri-style)
Стиль URI S3.
Поддерживаются следующие стили URI:
host- Соединение с узломbucket.endpoint.path- Соединение с узломendpointс добавлением бакета в начало URI.
Параметр сервера репозитория SFTP (--repo-sftp-host)
Сервер репозитория SFTP.
Сервер SFTP, на котором расположен репозиторий.
Параметр отпечатка сервера репозитория SFTP (--repo-sftp-host-fingerprint)
Отпечаток сервера репозитория SFTP.
Способ формирования отпечатка сервера репозитория SFTP следует выбирать в соответствии с repo-sftp-host-key-hash-type. Отпечаток можно получить командой awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b. Ключи сервера ssh обычно находятся в каталоге /etc/ssh.
Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)
Тип проверки ключа сервера SFTP.
Поддерживаются следующие типы проверки ключа сервера SFTP:
strict- pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.accept-new- pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.fingerprint- pgBackRest сравнивает ключ сервера с отпечатком, заданным параметромrepo-sftp-host-fingerprint.none- Ключ сервера не проверяется.
Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)
Тип хеша ключа сервера репозитория SFTP.
Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.
Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)
Порт сервера репозитория SFTP.
Порт сервера репозитория SFTP.
Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)
Пользователь сервера репозитория SFTP.
Пользователь на сервере, используемом для хранения репозитория.
Параметр файла известных серверов SFTP (--repo-sftp-known-host)
Файл известных серверов SFTP.
Файл известных серверов, в котором при аутентификации ищется совпадение с сервером SFTP. Если параметр не задан, pgBackRest по умолчанию проверяет ~/.ssh/known_hosts, ~/.ssh/known_hosts2, /etc/ssh/ssh_known_hosts и /etc/ssh/ssh_known_hosts2. Если заданы один или несколько путей к файлам, поиск выполняется в них. Пути должны быть абсолютными или начинаться с тильды. Параметр repo-sftp-known-host можно указывать несколько раз для поиска в нескольких файлах известных серверов. Чтобы использовать проверку по этим файлам, repo-sftp-host-fingerprint не должен быть задан. См. также параметр repo-sftp-host-check-type.
Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)
Файл закрытого ключа SFTP.
Файл закрытого ключа SFTP для аутентификации.
Параметр парольной фразы закрытого ключа репозитория SFTP (--repo-sftp-private-key-passphrase)
Парольная фраза закрытого ключа SFTP.
Парольная фраза для доступа к закрытому ключу. Её можно задать при создании пары открытого и закрытого ключей SSH.
Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)
Файл открытого ключа SFTP.
Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.
Параметр файла CA хранилища репозитория (--repo-storage-ca-file)
Файл CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.
Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file
Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)
Каталог CA хранилища репозитория.
Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.
Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path
Параметр сервера хранилища репозитория (--repo-storage-host)
Сервер хранилища репозитория.
Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.
Устаревшие имена: repo-azure-host, repo-s3-host
Параметр порта хранилища репозитория (--repo-storage-port)
Порт хранилища репозитория.
Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.
Устаревшие имена: repo-azure-port, repo-s3-port
Параметр тегов хранилища репозитория (--repo-storage-tag)
Теги хранилища репозитория.
Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.
В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.
Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)
Размер части загрузки в хранилище репозитория.
Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.
Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.
Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.
Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.
Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)
Проверка сертификата хранилища репозитория.
Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.
Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
Параметр символических ссылок в репозитории (--repo-symlink)
Создание символических ссылок внутри репозитория.
Включает создание символических ссылок latest и ссылок табличных пространств. Эти ссылки наиболее полезны при использовании снимков для восстановления непосредственно в репозитории, что встречается редко.
Хотя подавляющему большинству пользователей эта возможность, вероятно, не нужна, она остаётся включённой по умолчанию ради совместимости. Однако для Posix-подобных хранилищ, не поддерживающих символические ссылки, может быть полезно отключить их.
Параметр целевого времени репозитория (--repo-target-time)
Целевое время репозитория.
Целевое время определяет момент, на который команды читают репозиторий в хранилище с версионированием. Это позволяет прочитать состояние репозитория на определённый момент времени и восстановить данные, удалённые или повреждённые по ошибке пользователя либо вредоносным ПО.
S3, GCS и Azure поддерживают версионирование, но обычно оно отключено по умолчанию. Помимо включения версионирования, может быть полезно включить блокировку объектов в S3 и обратимое удаление в GCS или Azure.
Если указан параметр repo-target-time, необходимо также указать repo. Версионирование, вероятно, поддерживается не всеми типами репозиториев, и в целом при восстановлении разумно обращаться к одному конкретному репозиторию.
Временные метки хранилища сравниваются с указанной по условию <=; миллисекунды, если они указаны, отбрасываются.
Параметр типа репозитория (--repo-type)
Тип хранилища репозитория.
Поддерживаются следующие типы репозиториев:
azure- Azure Blob Storage Servicecifs- Аналогиченposix, но отключает ссылки и fsync каталоговgcs- Google Cloud Storageposix- Файловые системы, совместимые с Posixs3- AWS Simple Storage Servicesftp- Secure File Transfer Protocol
При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы
.
Параметры восстановления
Секция restore определяет параметры восстановления резервных копий.
Параметр режима архивирования (--archive-mode)
Сохранение или отключение архивирования на восстановленном кластере.
Позволяет сохранить или отключить архивирование на восстановленном кластере. Это полезно, когда для выполнения определённой работы кластер необходимо повысить до первичного, но использовать его как новый первичный сервер не планируется. В таком случае отправлять WAL этого кластера в репозиторий нежелательно.
Поддерживаются следующие режимы:
off- Отключает архивирование, задаваяarchive_mode=off.preserve- Сохраняет текущее значениеarchive_mode.
ПРИМЕЧАНИЕ: этот параметр недоступен в PostgreSQL < 12.
Параметр исключения баз данных (--db-exclude)
Восстановление с исключением указанных баз данных.
Исключённые базы данных восстанавливаются в виде разреженных файлов, заполненных нулями: это экономит место, сохраняя возможность восстановления PostgreSQL. После восстановления эти базы будут недоступны, но их можно удалить командой drop database. Параметр --db-exclude можно передать несколько раз, чтобы исключить несколько баз данных.
В сочетании с параметром --db-include параметр --db-exclude применяется только к стандартным системным базам данных (template0, template1 и postgres).
Параметр включения баз данных (--db-include)
Восстановление только указанных баз данных.
Эта возможность позволяет восстановить только выбранные базы данных. Базы, не включённые явно, восстанавливаются в виде разреженных файлов, заполненных нулями: это экономит место, сохраняя возможность восстановления PostgreSQL. После восстановления базы, которые не были включены, будут недоступны, но их можно удалить командой drop database.
ПРИМЕЧАНИЕ:
Встроенные базы данных (template0, template1 и postgres) всегда восстанавливаются, если они не исключены явно.
Параметр --db-include можно передать несколько раз, чтобы включить несколько баз данных.
Дополнительные сведения и ограничения приведены в разделе Восстановление выбранных баз данных .
Параметр восстановления всех ссылок (--link-all)
Восстановление всех символических ссылок.
По умолчанию каталоги и файлы, на которые указывают символические ссылки, восстанавливаются как обычные каталоги и файлы в $PGDATA. Причина в том, что восстанавливать ссылки на исходные цели в другой системе, отличной от той, где выполнялось резервное копирование, может быть небезопасно. Этот параметр восстанавливает все символические ссылки в том виде, в каком они были в исходной системе при резервном копировании.
Параметр переназначения ссылок (--link-map)
Изменение цели символической ссылки.
Позволяет при восстановлении изменить целевой файл или путь символической ссылки. Это полезно при восстановлении в системах, где организация хранилища отличается от исходной системы, в которой была создана резервная копия.
Параметр настройки восстановления (--recovery-option)
Установка параметра в postgresql.auto.conf или recovery.conf.
Сведения о параметрах postgresql.auto.conf и recovery.conf приведены в разделе Конфигурация сервера
(обязательно выберите свою версию PostgreSQL). Этот параметр можно указывать несколько раз.
Для PostgreSQL >= 12 параметры записываются в postgresql.auto.conf. Для всех остальных версий — в recovery.conf.
ПРИМЕЧАНИЕ:
Параметр restore_command создаётся автоматически, но его можно переопределить этим параметром. Собственный restore_command следует задавать осторожно, поскольку pgBackRest рассчитан на автоматическое управление им. Параметры цели восстановления (recovery_target_name, recovery_target_time и т. п.) pgBackRest формирует автоматически, и их не следует задавать таким способом.
Поскольку после записи файла postgresql.auto.conf или recovery.conf pgBackRest не запускает PostgreSQL, перед ручным перезапуском всегда можно проверить или отредактировать postgresql.auto.conf или recovery.conf.
Параметр переназначения табличного пространства (--tablespace-map)
Восстановление табличного пространства в указанный каталог.
Перемещает табличное пространство в новое расположение при восстановлении. Это полезно, когда расположения табличных пространств на реплике отличаются или после обновления системы изменились точки монтирования.
Расположения табличных пространств не хранятся в pg_tablespace, поэтому их можно свободно перемещать. Однако переносить табличное пространство в data_directory не рекомендуется: это может вызвать проблемы. Дополнительные сведения о перемещении табличных пространств приведены на http://www.databasesoup.com/2013/11/moving-tablespaces.html
.
Параметр переназначения всех табличных пространств (--tablespace-map-all)
Восстановление всех табличных пространств в указанный каталог.
По умолчанию табличные пространства восстанавливаются в исходные расположения. Для каждого пространства это можно изменить параметром tablespace-map, но иногда удобнее сразу переназначить все пространства в новый каталог. Это особенно полезно в системах разработки или предварительного тестирования, где организация хранилища может отличаться от исходной системы, в которой была создана резервная копия.
Указанный путь будет родительским каталогом, в котором создаются все табличные пространства из резервной копии.
ОСТОРОЖНО:
Табличные пространства, созданные после начала резервного копирования, не переназначаются. Если требуется переназначение, после создания табличного пространства следует сделать новую резервную копию.
Параметры сервера
Секция server определяет параметры настройки TLS-сервера.
Параметр адреса TLS-сервера (--tls-server-address)
Адрес TLS-сервера.
IP-адрес, на котором сервер будет слушать запросы клиентов.
Параметр авторизованных клиентов TLS-сервера (--tls-server-auth)
Авторизованные клиенты TLS-сервера.
Сервер авторизует клиентов, проверяя их сертификаты и сверяя CN (общее имя) сертификата со списком, заданным на сервере параметром tls-server-auth.
Клиентский CN можно авторизовать для любого количества stanza, передав в параметре tls-server-auth список через запятую, либо для всех stanza, указав tls-server-auth=client-cn=*. Для клиентского CN нельзя указывать подстановочные символы.
Параметр центров сертификации TLS-сервера (--tls-server-ca-file)
Центры сертификации TLS-сервера.
Проверяет, что сертификаты клиентов подписаны доверенным центром сертификации.
Параметр сертификата TLS-сервера (--tls-server-cert-file)
Файл сертификата TLS-сервера.
Отправляется клиенту для подтверждения личности сервера.
Параметр ключа TLS-сервера (--tls-server-key-file)
Файл ключа TLS-сервера.
Подтверждает, что сертификат сервера отправлен его владельцем.
Параметр порта TLS-сервера (--tls-server-port)
Порт сервера TLS.
Порт, на котором сервер будет слушать запросы клиентов.
Параметры stanza
Stanza определяет конфигурацию резервного копирования конкретного кластера баз данных PostgreSQL. В секции stanza должен быть задан путь к кластеру, а для удалённого кластера — также сервер и пользователь. Кроме того, любые глобальные секции конфигурации можно переопределить, задав настройки для конкретной stanza.
Индексация: все параметры pg- имеют индексы, что позволяет настраивать несколько серверов PostgreSQL. Например, один первичный сервер настраивается параметрами pg1-path, pg1-port и т. п. Если настроен резервный сервер, укажите на сервере репозитория его параметры pg- с индексом pg2- (например, pg2-host, pg2-path и т. п.).
Параметр базы данных PostgreSQL (--pg-database)
База данных PostgreSQL.
Имя базы данных для соединения с PostgreSQL. Обычно лучше оставить значение по умолчанию, но в некоторых установках такой базы может не быть.
По историческим причинам значение переменной окружения PGDATABASE игнорируется.
Параметр сервера PostgreSQL (--pg-host)
Сервер PostgreSQL для удалённой работы.
Используется при резервном копировании, когда сервер PostgreSQL отличается от сервера репозитория.
Устаревшее имя: db-host
Параметр файла центра сертификации сервера PostgreSQL (--pg-host-ca-file)
Файл центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL файл CA, отличный от системного файла по умолчанию.
Параметр каталога центра сертификации сервера PostgreSQL (--pg-host-ca-path)
Каталог центра сертификации сервера PostgreSQL.
Позволяет использовать для соединения с сервером PostgreSQL каталог CA, отличный от системного каталога по умолчанию.
Параметр файла сертификата сервера PostgreSQL (--pg-host-cert-file)
Файл сертификата для сервера PostgreSQL.
Отправляется серверу PostgreSQL для подтверждения личности клиента.
Параметр команды на сервере PostgreSQL (--pg-host-cmd)
Команда pgBackRest на сервере PostgreSQL.
Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере PostgreSQL различается. Если параметр не задан, команда на сервере PostgreSQL будет той же, что и локальная команда.
Устаревшее имя: db-cmd
Параметр файла конфигурации сервера PostgreSQL (--pg-host-config)
Файл конфигурации pgBackRest на сервере базы данных.
Задаёт расположение файла конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.
Устаревшее имя: db-config
Параметр каталога включаемых конфигураций сервера PostgreSQL (--pg-host-config-include-path)
Каталог включаемых конфигураций pgBackRest на сервере базы данных.
Задаёт расположение каталога включаемых конфигураций на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога включаемых конфигураций.
Параметр каталога конфигурации сервера PostgreSQL (--pg-host-config-path)
Каталог конфигурации pgBackRest на сервере базы данных.
Задаёт расположение каталога конфигурации на сервере PostgreSQL. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.
Параметр файла ключа для сервера PostgreSQL (--pg-host-key-file)
Файл ключа для сервера PostgreSQL.
Подтверждает, что сертификат клиента отправлен его владельцем.
Параметр порта сервера PostgreSQL (--pg-host-port)
Порт сервера PostgreSQL при заданном pg-host.
Позволяет указать нестандартный порт для протокола сервера PostgreSQL.
ПРИМЕЧАНИЕ:
При pg-host-type=ssh для pg-host-port нет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной в cmd-ssh.
Устаревшее имя: db-ssh-port
Параметр типа протокола сервера PostgreSQL (--pg-host-type)
Тип протокола сервера PostgreSQL.
Поддерживаются следующие типы протоколов:
ssh- Secure Shell.tls- TLS-сервер pgBackRest.
Параметр пользователя сервера PostgreSQL (--pg-host-user)
Пользователь для входа на сервер PostgreSQL при заданном pg-host.
Этот пользователь также будет владельцем удалённого процесса pgBackRest и будет устанавливать соединения с PostgreSQL. Для правильной работы следует использовать владельца кластера базы данных PostgreSQL, обычно это пользователь postgres, выбранный по умолчанию.
Устаревшее имя: db-user
Параметр пути PostgreSQL (--pg-path)
Каталог данных PostgreSQL.
Следует указать значение data_directory, сообщаемое PostgreSQL. Хотя его можно получить из разных источников, разумно задать его явно на случай, если эти источники будут недоступны при восстановлении или резервном копировании остановленного кластера.
При каждом резервном копировании работающего кластера параметр pg-path сверяется со значением, сообщаемым PostgreSQL, поэтому его следует всегда поддерживать актуальным.
Устаревшее имя: db-path
Параметр порта PostgreSQL (--pg-port)
Порт PostgreSQL.
Порт, на котором работает PostgreSQL. Обычно его не требуется указывать, поскольку большинство кластеров PostgreSQL работают на порту по умолчанию.
Устаревшее имя: db-port
Параметр каталога сокета PostgreSQL (--pg-socket-path)
Каталог Unix-сокета PostgreSQL.
Каталог Unix-сокета, указанный при запуске PostgreSQL. pgBackRest автоматически проверяет стандартное расположение для используемой ОС, поэтому обычно этот параметр не требуется, если каталог сокета не был явно изменён настройкой unix_socket_directories в postgresql.conf.
Устаревшее имя: db-socket-path
Параметр пользователя базы данных PostgreSQL (--pg-user)
Пользователь базы данных PostgreSQL.
Имя пользователя базы данных для соединения с PostgreSQL. Если оно не указано, pgBackRest использует локального пользователя ОС или PGUSER.
6 - Примечания к выпускам
Введение
Номер выпуска 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.) - Документирована настройка директивы
sulogrotate для выделенного пользователя. (Рецензирование: 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, что значительно ускоряет PostgreSQLarchive_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, по-видимому, плохо работает с большими файлами. Хотелось бы сохранять манифесты как читаемый человеком текст.
Дополнения к документации:
- Документации вне кода нет совсем. Если не считать этих примечаний к выпускам.
7 - Часто задаваемые вопросы
Введение
В этом разделе приведены подробные ответы на отдельные вопросы, которые могут быть рассмотрены в руководстве пользователя, справочнике по конфигурации или справочнике команд, а могут и не входить в них. Если здесь нет ответа на конкретный вопрос, полезным источником информации также может стать список проблем pgBackRest на GitHub .
Что делать при ошибке «could not find WAL segment»?
У этой ошибки может быть множество причин, в том числе:
- неверно настроенная команда
archive_command - ошибки в файлах конфигурации pgBackRest
- проблемы с сетью или правами доступа
- ошибки в настройке стороннего продукта (например, S3, Swift или Minio)
- большая очередь WAL, ожидающих архивирования
Рекомендуется:
- проверить
archive_commandв PostgreSQL - проверить настройки pgBackRest на каждом сервере (например, параметры
pg*задаются на сервере репозитория, а параметрыrepo*— на сервере PostgreSQL) - выполнить команду
check, задав для--archive-timeoutзначение больше указанного в файле конфигурации pgBackRest (или значения по умолчанию), чтобы проверить, не требуется ли больше времени для обработки очереди WAL. Если система генерирует большой объём WAL, стоит настроить асинхронное архивирование
Как вручную удалить набор резервной копии?
Полный набор резервной копии можно удалить с помощью параметра --set, как описано в разделе Справочник команд: Expire
.
Как задать отдельные настройки для каждой команды?
pgBackRest позволяет задавать параметры в файле конфигурации отдельно для каждой команды. Эта возможность и приоритет параметров описаны в разделе Настройка stanza кластера .
Например, параметр process-max можно настроить для каждой команды:
Можно ли использовать точки в имени бакета S3?
RFC-2818 не допускает, чтобы подстановочные знаки соответствовали точке (.), поэтому имена бакетов S3 не должны содержать точек. Если в имени бакета S3 есть точки, возникает ошибка вида «unable to find hostname ‘my.backup.bucket.s3.amazonaws.com’ in certificate common name or subject alternative names».
Исключение — repo-s3-uri-style=path: при такой настройке имя бакета добавляется в начало URI, а не имени узла. Поскольку бакет не является частью имени узла, сертификат проверяется только по имени конечной точки, и точки в имени бакета не создают проблем. Следует учитывать, что не все объектные хранилища, совместимые с S3, поддерживают URI в стиле path.
Где найти пакеты старых версий pgBackRest?
Репозиторий apt.postgresql.org содержит архив старых версий . Debian также хранит снимки всех тестовых сборок.
Почему резервное копирование завершается ошибкой, если задано backup-standby=y, а резервная база данных недоступна?
Резервное копирование с резервного сервера обычно настраивают для снижения нагрузки на первичный сервер, поэтому перенос копирования на первичный сервер при недоступности резервного часто противоречит этой цели. Увеличивать нагрузку на первичный сервер, когда в системе уже есть сбои, не рекомендуется. Если уже имеется достаточно свежая резервная копия, создание новой не критично: главное — своевременно архивировать WAL. После стабилизации системы времени для создания резервной копии будет достаточно.
Если резервная копия всё же необходима, можно добавить резервные серверы или убрать backup-standby. Этот параметр можно переопределить в командной строке с помощью --no-backup-standby, поэтому для разового резервного копирования менять конфигурацию не требуется.
Следует ли размещать репозиторий на резервном сервере?
Нет. Если настроены первичная и резервная базы данных, файлы конфигурации pgBackRest следует сделать симметричными, чтобы переключение при отказе происходило беспрепятственно. В противном случае при переключении придётся изменять конфигурацию, иначе могут возникнуть дополнительные проблемы.
Подробности приведены в разделе Выделенный сервер репозитория руководства пользователя.
Почему не работает восстановление на заданный момент времени?
Самая распространённая ошибка при восстановлении на заданный момент времени — выбор резервной копии, завершённой после целевого времени. При --type=time, если параметр --set не указан, pgBackRest ищет в настроенных репозиториях копию, завершённую до времени, заданного через --target=. Если подходящая копия не найдена, pgBackRest выдаёт ошибку, а не восстанавливает последнюю резервную копию. Копия, завершённая после целевого времени, не позволяет вернуться к этому более раннему моменту путём воспроизведения WAL.
Чтобы воспользоваться параметром --set, выполните команду info и выберите набор резервной копии, время завершения которой предшествует целевому времени. Затем при восстановлении укажите --set=BACKUP_LABEL, где BACKUP_LABEL — выбранный набор резервной копии.
Подробности приведены в разделе Восстановление на заданный момент времени руководства пользователя.
Что означает суффикс файла в архиве WAL?
Суффикс — это контрольная сумма SHA1, используемая для проверки целостности файла. Убрать её нельзя.
Занимает ли восстановление отдельных типов резервных копий (полных, дифференциальных, инкрементных) больше времени?
Восстановление разных типов резервных копий занимает одинаковое время. При восстановлении файлы извлекаются на основе манифеста резервной копии, который в случае инкрементной или дифференциальной копии может ссылаться на файлы из предыдущей копии. Хотя время создания резервной копии может различаться в зависимости от её типа, время восстановления определяется размером базы данных (при одинаковой производительности дискового и сетевого ввода-вывода и прочих равных условиях).
Как экспортировать резервную копию для использования в среде, изолированной от сети?
pgBackRest использует репозиторий не только для хранения резервных копий и архивов WAL, но и для ведения необходимых метаданных, обеспечивающих сжатие, шифрование и пакетирование файлов. Поэтому простое копирование резервной копии вместе с частью файлов WAL обычно не работает, кроме случаев, когда соблюдены очень строгие и специфические условия.
Однако есть обходной способ, если нужно получить самодостаточную копию базы данных для переноса, например, на USB-накопителе. Можно создать резервную копию с включённым параметром --archive-copy
, чтобы необходимые сегменты WAL сохранялись вместе с ней. Затем следует восстановить её с параметрами --type=none
--pg1-path=/your/target/path. В результате получится восстановленный каталог данных PostgreSQL со всеми необходимыми файлами WAL уже в pg_wal, аналогичный создаваемому командой pg_basebackup.
Этот каталог затем можно скопировать в другую систему; ожидается, что PostgreSQL сможет восстановиться из него без доступа к репозиторию pgBackRest.
Следует учитывать, что восстановление этой копии не приведёт к переключению временной шкалы, поэтому такому кластеру не следует отправлять WAL в исходный репозиторий, из которого он был экспортирован. В среде, изолированной от сети, это не должно создавать проблем.
8 - Метрики проекта
Покрытие кода тестами
pgBackRest стремится обеспечить полное покрытие тестами функций, ветвей и строк основного кода на C в /src.
Функции и строки покрыты полностью, без исключений.
При оценке покрытия ветвей не учитываются ветви внутри макросов и вызовов assert(). У макросов есть собственные модульные тесты, поэтому проверять их в каждом месте использования не требуется. Полное покрытие ветвей в утверждениях не предполагается, поскольку они проверяют условия, для которых ожидается, что они всегда истинны.
| Каталог | Функции | Ветви | Строки |
|---|---|---|---|
| build/common | 32/32 (100.00%) | 72/72 (100.00%) | 268/268 (100.00%) |
| build/config | 39/39 (100.00%) | 564/564 (100.00%) | 1142/1142 (100.00%) |
| build/error | 6/6 (100.00%) | 22/22 (100.00%) | 71/71 (100.00%) |
| build/help | 13/13 (100.00%) | 138/138 (100.00%) | 265/265 (100.00%) |
| build/postgres | 8/8 (100.00%) | 58/58 (100.00%) | 149/149 (100.00%) |
| command | 17/17 (100.00%) | 104/104 (100.00%) | 210/210 (100.00%) |
| command/annotate | 1/1 (100.00%) | 12/12 (100.00%) | 31/31 (100.00%) |
| command/archive | 14/14 (100.00%) | 98/98 (100.00%) | 189/189 (100.00%) |
| command/archive/get | 10/10 (100.00%) | 208/208 (100.00%) | 447/447 (100.00%) |
| command/archive/push | 12/12 (100.00%) | 148/148 (100.00%) | 365/365 (100.00%) |
| command/backup | 50/50 (100.00%) | 790/790 (100.00%) | 1641/1641 (100.00%) |
| command/check | 13/13 (100.00%) | 106/106 (100.00%) | 214/214 (100.00%) |
| command/control | 4/4 (100.00%) | 34/34 (100.00%) | 48/48 (100.00%) |
| command/expire | 11/11 (100.00%) | 274/274 (100.00%) | 392/392 (100.00%) |
| command/help | 8/8 (100.00%) | 178/178 (100.00%) | 283/283 (100.00%) |
| command/info | 16/16 (100.00%) | 430/430 (100.00%) | 748/748 (100.00%) |
| command/local | 1/1 (100.00%) | — | 4/4 (100.00%) |
| command/remote | 1/1 (100.00%) | 6/6 (100.00%) | 18/18 (100.00%) |
| command/repo | 9/9 (100.00%) | 110/110 (100.00%) | 195/195 (100.00%) |
| command/restore | 37/37 (100.00%) | 726/726 (100.00%) | 1350/1350 (100.00%) |
| command/server | 6/6 (100.00%) | 24/24 (100.00%) | 81/81 (100.00%) |
| command/stanza | 5/5 (100.00%) | 106/106 (100.00%) | 125/125 (100.00%) |
| command/verify | 22/22 (100.00%) | 366/366 (100.00%) | 733/733 (100.00%) |
| common | 146/146 (100.00%) | 624/624 (100.00%) | 1350/1350 (100.00%) |
| common/compress | 12/12 (100.00%) | 24/24 (100.00%) | 80/80 (100.00%) |
| common/compress/bz2 | 13/13 (100.00%) | 20/20 (100.00%) | 123/123 (100.00%) |
| common/compress/gz | 13/13 (100.00%) | 26/26 (100.00%) | 118/118 (100.00%) |
| common/compress/lz4 | 15/15 (100.00%) | 24/24 (100.00%) | 116/116 (100.00%) |
| common/compress/zst | 13/13 (100.00%) | 12/12 (100.00%) | 96/96 (100.00%) |
| common/crypto | 32/32 (100.00%) | 88/88 (100.00%) | 424/424 (100.00%) |
| common/error | 33/33 (100.00%) | 66/66 (100.00%) | 179/179 (100.00%) |
| common/io | 61/61 (100.00%) | 182/182 (100.00%) | 523/523 (100.00%) |
| common/io/filter | 31/31 (100.00%) | 92/92 (100.00%) | 276/276 (100.00%) |
| common/io/http | 58/58 (100.00%) | 292/292 (100.00%) | 685/685 (100.00%) |
| common/io/socket | 28/28 (100.00%) | 110/110 (100.00%) | 339/339 (100.00%) |
| common/io/tls | 37/37 (100.00%) | 122/122 (100.00%) | 409/409 (100.00%) |
| common/type | 335/335 (100.00%) | 922/922 (100.00%) | 3123/3123 (100.00%) |
| config | 93/93 (100.00%) | 1025/1026 (99.90%) | 1649/1649 (100.00%) |
| db | 23/23 (100.00%) | 94/94 (100.00%) | 301/301 (100.00%) |
| info | 48/48 (100.00%) | 240/240 (100.00%) | 712/712 (100.00%) |
| info/manifest | 10/10 (100.00%) | 132/132 (100.00%) | 303/303 (100.00%) |
| postgres | 36/36 (100.00%) | 128/128 (100.00%) | 333/333 (100.00%) |
| postgres/interface | 4/4 (100.00%) | 10/10 (100.00%) | 35/35 (100.00%) |
| protocol | 60/60 (100.00%) | 266/266 (100.00%) | 860/860 (100.00%) |
| storage | 68/68 (100.00%) | 304/304 (100.00%) | 759/759 (100.00%) |
| storage/azure | 26/26 (100.00%) | 162/162 (100.00%) | 487/487 (100.00%) |
| storage/cifs | 2/2 (100.00%) | — | 6/6 (100.00%) |
| storage/gcs | 34/34 (100.00%) | 176/176 (100.00%) | 574/574 (100.00%) |
| storage/posix | 29/29 (100.00%) | 165/166 (99.40%) | 328/328 (100.00%) |
| storage/remote | 40/40 (100.00%) | 128/128 (100.00%) | 568/568 (100.00%) |
| storage/s3 | 31/31 (100.00%) | 200/200 (100.00%) | 661/661 (100.00%) |
| storage/sftp | 39/39 (100.00%) | 408/408 (100.00%) | 762/762 (100.00%) |
| ИТОГО | 1705/1705 (100.00%) | 10616/10618 (99.98%) | 25148/25148 (100.00%) |
Модули тестов на C в /test/src/module также имеют полное покрытие функций и строк, но в этот отчёт не включены.