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

Команда удаления устаревших копий (expire)

Справочник по параметрам и поведению команды pgBackRest expire.

pgBackRest выполняет ротацию полных резервных копий в зависимости от типа срока хранения: по числу копий или по периоду времени. Если задано число, удаление зависит не от времени создания копий, а от количества, которое необходимо сохранить. Дифференциальные копии хранятся по числу, но всегда удаляются вместе с полной копией, от которой зависят. Инкрементные копии не удаляются независимо по сроку хранения: они всегда удаляются вместе со связанной полной или дифференциальной копией. Подробности и примеры приведены в разделах Хранение полных резервных копий и Хранение дифференциальных резервных копий .

По умолчанию архивный WAL сохраняется для ещё не удалённых резервных копий. Хотя это не рекомендуется, правила можно изменить для каждого репозитория параметрами retention-archive. Подробности и примеры приведены в разделе Хранение архива .

Команда expire автоматически запускается после каждого успешного резервного копирования; пользователь также может запустить её вручную. При ручном запуске удаление выполняется согласно настройкам хранения каждого настроенного репозитория. Если указан --repo, удаление выполняется только в этом репозитории. Пользователь также может ограничить удаление конкретным набором резервной копии с помощью --set: если не указан --repo, поиск выполняется во всех репозиториях и удаляются наборы, соответствующие критериям. При каждом запуске expire правила хранения архива также проверяются и применяются.

Параметры команды

Параметр удаления архива до указанного сегмента (--archive-expire-before)

Удаление архива WAL, предшествующего указанному сегменту WAL.

Удаляет сегменты WAL, предшествующие указанному, но только те, которые не нужны сохраняемым резервным копиям: то есть сегменты старше самой ранней сохраняемой копии либо любые сегменты, если в репозитории нет копий. Указанный сегмент и всё после него сохраняются. Это соответствует значению, которое PostgreSQL передаёт archive_cleanup_command как %r.

Этот параметр предназначен прежде всего для репозиториев только с архивом, в которых не хранятся резервные копии. Его также можно использовать для освобождения места за счёт удаления WAL, предшествующего первой резервной копии, когда условия хранения полных копий ещё не выполнены и не запускают удаление архива.

example: --archive-expire-before=000000010000000000000010

Параметр самой старой копии (--oldest)

Удаление самого старого набора резервной копии, допустимого к удалению.

Удаляет самый старый набор полной резервной копии, который можно удалить (то есть остаётся хотя бы одна более новая полная копия). Это эквивалентно ручному уменьшению числа хранимых копий на одну, но вычисляется автоматически. Все копии, связанные с удаляемым полным набором (дифференциальные и инкрементные), также удаляются.

При использовании этого параметра правила хранения архива также временно корректируются, чтобы WAL удаляемых копий можно было удалить за тот же запуск.

Если хранение полных копий настроено по времени (через --repo-retention-full-type=time), --oldest для этого запуска использует удаление по числу копий.

ПРЕДУПРЕЖДЕНИЕ:

Этот параметр нельзя сочетать с --set.

default: n
example: --oldest

Параметр набора резервной копии (--set)

Набор резервной копии для удаления.

Указанный набор (то есть копия с заданной меткой и все зависимые от неё копии, если они есть) удаляется независимо от правил хранения, но в репозитории должна остаться хотя бы одна полная резервная копия.

ПРЕДУПРЕЖДЕНИЕ:

Используйте этот параметр крайне осторожно: он безвозвратно удаляет из репозитория pgBackRest все копии указанного набора и все архивы, не требуемые для согласованности резервной копии. Это может исключить возможность PITR. Если настроены --repo-retention-full и/или --repo-retention-archive, при таком разовом удалении рекомендуется переопределить их максимальными значениями, чтобы избежать непреднамеренного удаления архивов.

example: --set=20150131-153358F_20150131-153401I

Общие параметры

Параметр разрешения запуска от root (--allow-root)

Разрешение запуска команды от пользователя root.

По умолчанию только команда restore может выполняться от пользователя root, поскольку она предназначена для тщательного управления принадлежностью файлов. Выполнение других команд от пользователя root может привести к созданию файлов (например, в репозитории), принадлежащих root, и, как следствие, недоступных для пользователя PostgreSQL, что вызовет сбой последующих команд.

Включите этот параметр, чтобы запустить команду от имени root. Однако гораздо лучше запускать pgBackRest от пользователя, владеющего репозиторием и кластером PostgreSQL.

default: n
example: --allow-root

Параметр размера буфера (--buffer-size)

Размер буфера для операций ввода-вывода.

Размер буфера, используемый для копирования, сжатия, шифрования и других операций. Количество используемых буферов зависит от параметров, и каждая операция может использовать дополнительную память, например, сжатие gz может потребовать дополнительно 256KiB памяти.

Допустимые значения: 16KiB, 32KiB, 64KiB, 128KiB, 256KiB, 512KiB, 1MiB, 2MiB, 4MiB, 8MiB и 16MiB.

default: 1MiB
example: --buffer-size=2MiB

Параметр команды SSH-клиента (--cmd-ssh)

Команда SSH-клиента.

Позволяет задать конкретную команду SSH-клиента, если нужен другой клиент или команда ssh отсутствует в $PATH.

default: ssh
example: --cmd-ssh=/usr/bin/ssh

Параметр уровня сжатия для сети (--compress-level-network)

Уровень сжатия для передачи по сети.

Задаёт уровень сетевого сжатия, когда compress-type=none и команда выполняется на другом сервере, чем репозиторий. Сжатие уменьшает сетевой трафик. Когда compress-type не равен none, настройка compress-level-network игнорируется и вместо неё используется compress-level, чтобы файл сжимался только один раз.

default: 1
allowed: [-5, 12]
example: --compress-level-network=1

Параметр файла конфигурации (--config)

Конфигурационный файл pgBackRest.

Используйте этот параметр для указания другого файла конфигурации, отличного от файла по умолчанию.

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf

Параметр каталога включаемых конфигураций (--config-include-path)

Путь к дополнительным файлам конфигурации pgBackRest.

Файлы конфигурации с расширением .conf, находящиеся в указанном каталоге, объединяются с файлом конфигурации pgBackRest в единый файл конфигурации.

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d

Параметр каталога конфигурации (--config-path)

Базовый путь файлов конфигурации pgBackRest.

Эта настройка переопределяет базовый каталог по умолчанию для параметров --config и --config-include-path, если они не заданы явно в командной строке.

Например, передача только --config-path=/conf/pgbackrest приводит к установке значения по умолчанию для --config в /conf/pgbackrest/pgbackrest.conf и значения по умолчанию для --config-include-path в /conf/pgbackrest/conf.d.

default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest

Параметр пробного запуска (--dry-run)

Пробный запуск команды.

Параметр --dry-run доступен только в командной строке. Его можно передать, чтобы определить, какие изменения выполнит команда, без фактического внесения изменений.

default: n
example: --dry-run

Параметр тайм-аута ввода-вывода (--io-timeout)

Тайм-аут ввода-вывода.

Тайм-аут, в секундах, используемый для соединений и операций чтения/записи.

Операция чтения или записи не обязана полностью завершиться за это время, но какое-то продвижение должно произойти, хотя бы на один байт.

default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120

Параметр каталога блокировок (--lock-path)

Путь для хранения файлов блокировок.

В каталоге блокировок pgBackRest создаёт файлы блокировок, предотвращающие одновременное выполнение конфликтующих операций.

default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock

Параметр нейтральной маски umask (--neutral-umask)

Использование нейтральной маски umask.

Устанавливает umask в 0000, чтобы объекты в репозитории создавались с подходящими правами. По умолчанию права каталогов — 0750, файлов — 0640.

Чтобы вместо этого использовать umask пользователя, выполняющего команду, укажите neutral-umask=n в файле конфигурации или --no-neutral-umask в командной строке.

default: y
example: --no-neutral-umask

Параметр приоритета процесса (--priority)

Установка приоритета процесса.

Определяет приоритет процесса (то есть значение nice) для планировщика ядра. Положительные значения понижают приоритет, отрицательные — повышают. В большинстве случаев процессы не имеют права повышать свой приоритет.

allowed: [-20, 19]
example: --priority=19

Параметр тайм-аута протокола (--protocol-timeout)

Тайм-аут протокола.

Задаёт тайм-аут, в секундах, на который локальный или удалённый процесс будет ждать получения нового сообщения на уровне протокола. Это предотвращает бесконечное ожидание сообщения процессами.

ПРИМЕЧАНИЕ: параметр protocol-timeout должен быть больше db-timeout.

default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630

Параметр поддержания соединения (--sck-keep-alive)

Включение поддержания соединения.

Включает сообщения keep-alive для сокетных соединений.

default: y
example: --no-sck-keep-alive

Параметр stanza (--stanza)

Определение stanza.

Stanza — конфигурация кластера баз данных PostgreSQL, которая определяет его расположение, способ резервного копирования, параметры архивирования и т. п. Большинство серверов баз данных содержат только один кластер PostgreSQL и, соответственно, одну stanza, тогда как на серверах резервного копирования есть stanza для каждого кластера, требующего резервного копирования.

Может возникнуть желание назвать stanza по имени первичного кластера, но лучше выбрать имя, описывающее базы данных в нём. Поскольку имя stanza используется для первичного сервера и всех реплик, уместнее выбрать имя, отражающее назначение кластера, например app или dw, а не локальное имя кластера, такое как main или prod.

example: --stanza=main

Параметр числа сообщений keep-alive (--tcp-keep-alive-count)

Число сообщений keep-alive.

Задаёт число сообщений TCP keep-alive, которые могут быть потеряны, прежде чем соединение будет считаться неработающим.

Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPCNT.

allowed: [1, 32]
example: --tcp-keep-alive-count=3

Параметр времени простоя keep-alive (--tcp-keep-alive-idle)

Время простоя перед отправкой keep-alive.

Задаёт время отсутствия сетевой активности в секундах, по истечении которого операционной системе следует отправить сообщение TCP keep-alive.

Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPIDLE.

allowed: [1, 3600]
example: --tcp-keep-alive-idle=60

Параметр интервала keep-alive (--tcp-keep-alive-interval)

Интервал сообщений keep-alive.

Задаёт время в секундах, после которого следует повторно отправить сообщение TCP keep-alive, не получившее подтверждения.

Этот параметр доступен на системах, которые поддерживают опцию сокета TCP_KEEPINTVL.

allowed: [1, 900]
example: --tcp-keep-alive-interval=30

Параметр наборов шифров TLSv1.2 (--tls-cipher-12)

Допустимые наборы шифров TLSv1.2.

Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).

ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.

При необходимости допустимые наборы шифров можно изменить. Приведённый пример подходит, если нет особых требований к безопасности. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.

example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL

Параметр наборов шифров TLSv1.3 (--tls-cipher-13)

Допустимые наборы шифров TLSv1.3.

Все соединения TLS между клиентом pgBackRest и сервером зашифрованы. По умолчанию также зашифрованы соединения с объектными хранилищами (например, S3).

ПРИМЕЧАНИЕ: абсолютный минимальный уровень безопасности для любого транспортного соединения — TLSv1.2.

При необходимости допустимые наборы шифров можно изменить. Если параметр не задан (по умолчанию), применяется значение по умолчанию используемой библиотеки OpenSSL.

example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

Параметры журналирования

Параметр уровня журналирования в консоль (--log-level-console)

Уровень журналирования в консоль.

Поддерживаются следующие уровни журналирования:

  • off - Журналирование отключено (не рекомендуется)
  • error - Только ошибки
  • warn - Предупреждения и ошибки
  • info - Информационные сообщения, предупреждения и ошибки
  • detail - Подробные и информационные сообщения, предупреждения и ошибки
  • debug - Отладочные, подробные и информационные сообщения, предупреждения и ошибки
  • trace - Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
default: warn
example: --log-level-console=error

Параметр уровня журналирования в файл (--log-level-file)

Уровень журналирования в файл.

Поддерживаются следующие уровни журналирования:

  • off - Журналирование отключено (не рекомендуется)
  • error - Только ошибки
  • warn - Предупреждения и ошибки
  • info - Информационные сообщения, предупреждения и ошибки
  • detail - Подробные и информационные сообщения, предупреждения и ошибки
  • debug - Отладочные, подробные и информационные сообщения, предупреждения и ошибки
  • trace - Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
default: info
example: --log-level-file=debug

Параметр уровня журналирования в стандартный поток ошибок (--log-level-stderr)

Уровень ведения журнала для stderr.

Задаёт уровни журнала, сообщения которых выводятся в stderr, а не в stdout (задаваемый параметром log-level-console). Временная метка и процесс в stderr не выводятся.

Поддерживаются следующие уровни журналирования:

  • off - Журналирование отключено (не рекомендуется)
  • error - Только ошибки
  • warn - Предупреждения и ошибки
  • info - Информационные сообщения, предупреждения и ошибки
  • detail - Подробные и информационные сообщения, предупреждения и ошибки
  • debug - Отладочные, подробные и информационные сообщения, предупреждения и ошибки
  • trace - Трассировка (очень подробная отладка), отладочные и информационные сообщения, предупреждения и ошибки
default: off
example: --log-level-stderr=error

Параметр каталога журналов (--log-path)

Путь, по которому хранятся файлы журналов.

Путь к журналу задаёт местоположение для хранения файлов журналов pgBackRest. Примечание: если log-level-file=off, то путь к журналу не требуется.

default: /var/log/pgbackrest
example: --log-path=/backup/db/log

Параметр журналирования подпроцессов (--log-subprocess)

Включение журналирования в подпроцессах.

Включает запись журнала в файл для всех подпроцессов, создаваемых этим процессом, с уровнем, заданным параметром log-level-file.

default: n
example: --log-subprocess

Параметр временных меток журнала (--log-timestamp)

Включение временных меток в журнале.

Включает временные метки при выводе журнала в консоль и в файл. Этот параметр отключается в особых случаях, например при генерации документации.

default: y
example: --no-log-timestamp

Параметры репозитория

Параметр выбора репозитория (--repo)

Выбор репозитория.

Задаёт репозиторий, с которым работает команда.

Например, позволяет выполнить восстановление из конкретного репозитория, не предоставляя выбор pgBackRest.

allowed: [1, 256]
example: --repo=1

Параметр контейнера репозитория Azure (--repo-azure-container)

Контейнер репозитория Azure.

Контейнер Azure для хранения репозитория.

Репозитории pgBackRest можно хранить в корне контейнера, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в контейнере также можно было хранить журналы и другие данные, создаваемые Azure.

example: --repo1-azure-container=pg-backup

Параметр типа ключа репозитория Azure (--repo-azure-key-type)

Тип ключа репозитория Azure.

Для авторизации поддерживаются следующие типы:

  • shared - Общий ключ
  • sas - Подпись общего доступа
  • auto - Автоматическая авторизация с использованием управляемых удостоверений Azure
default: shared
example: --repo1-azure-key-type=sas

Параметр стиля URI репозитория Azure (--repo-azure-uri-style)

Стиль URI Azure.

Поддерживаются следующие стили URI:

  • host - Соединение с узлом account.endpoint.
  • path - Соединение с узлом endpoint с добавлением учётной записи в начало URI.
default: host
example: --repo1-azure-uri-style=path

Параметр типа шифрования репозитория (--repo-cipher-type)

Шифр для шифрования репозитория.

Поддерживаются следующие типы шифрования:

  • none - Репозиторий не зашифрован
  • aes-256-cbc - Advanced Encryption Standard с длиной ключа 256 бит

Шифрование всегда выполняется на стороне клиента, даже если тип репозитория (например, S3) поддерживает шифрование.

default: none
example: --repo1-cipher-type=aes-256-cbc

Параметр бакета репозитория GCS (--repo-gcs-bucket)

Бакет репозитория GCS.

Бакет GCS для хранения репозитория.

Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые GCS.

example: --repo1-gcs-bucket=/pg-backup

Параметр конечной точки репозитория GCS (--repo-gcs-endpoint)

Конечная точка репозитория GCS.

Конечная точка для соединения со службой хранения. Её можно изменить для использования локального сервера GCS или другой конечной точки.

default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost

Параметр типа ключа репозитория GCS (--repo-gcs-key-type)

Тип ключа репозитория GCS.

Для авторизации поддерживаются следующие типы:

  • auto - Авторизация с помощью служебной учётной записи экземпляра.
  • service - Служебная учётная запись из локально сохранённого ключа.
  • token - Для локального тестирования, например с fakegcs.

При repo-gcs-key-type=service учётные данные повторно загружаются при обновлении токена аутентификации.

default: service
example: --repo1-gcs-key-type=auto

Параметр идентификатора проекта репозитория GCS (--repo-gcs-user-project)

Идентификатор проекта GCS.

Идентификатор проекта GCS, определяющий оплату запросов.

example: --repo1-gcs-user-project=my-project

Параметр сервера репозитория (--repo-host)

Сервер репозитория при удалённой работе.

При резервном копировании и архивировании в локально смонтированную файловую систему эта настройка не требуется.

example: --repo1-host=repo1.domain.com

Устаревшее имя: backup-host

Параметр файла центра сертификации сервера репозитория (--repo-host-ca-file)

Файл центра сертификации сервера репозитория.

Позволяет использовать для соединения с сервером репозитория файл CA, отличный от системного файла по умолчанию.

example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt

Параметр каталога центра сертификации сервера репозитория (--repo-host-ca-path)

Каталог центра сертификации сервера репозитория.

Позволяет использовать для соединения с сервером репозитория каталог CA, отличный от системного каталога по умолчанию.

example: --repo1-host-ca-path=/etc/pki/tls/certs

Параметр файла сертификата сервера репозитория (--repo-host-cert-file)

Файл сертификата для сервера репозитория.

Отправляется серверу репозитория для подтверждения личности клиента.

example: --repo1-host-cert-file=/path/to/client.crt

Параметр команды на сервере репозитория (--repo-host-cmd)

Команда pgBackRest на сервере репозитория.

Требуется только тогда, когда путь к команде pgBackRest на локальном сервере и сервере репозитория различается. Если параметр не задан, команда на сервере репозитория будет той же, что и локальная команда.

default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest

Устаревшее имя: backup-cmd

Параметр файла конфигурации сервера репозитория (--repo-host-config)

Файл конфигурации pgBackRest на сервере репозитория.

Задаёт расположение файла конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального файла конфигурации.

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf

Устаревшее имя: backup-config

Параметр каталога включаемых конфигураций сервера репозитория (--repo-host-config-include-path)

Каталог включаемых конфигураций pgBackRest на сервере репозитория.

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

default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d

Параметр каталога конфигурации сервера репозитория (--repo-host-config-path)

Каталог конфигурации pgBackRest на сервере репозитория.

Задаёт расположение каталога конфигурации на сервере репозитория. Требуется только тогда, когда оно отличается от расположения локального каталога конфигурации.

default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest

Параметр файла ключа для сервера репозитория (--repo-host-key-file)

Файл ключа для сервера репозитория.

Подтверждает, что сертификат клиента отправлен его владельцем.

example: --repo1-host-key-file=/path/to/client.key

Параметр порта сервера репозитория (--repo-host-port)

Порт сервера репозитория при заданном repo-host.

Позволяет указать нестандартный порт для протокола сервера репозитория.

ПРИМЕЧАНИЕ: при repo-host-type=ssh для repo-host-port нет значения по умолчанию. В этом случае используется порт, настроенный для команды, указанной в cmd-ssh.

default (depending on repo-host-type):
    tls - 8432

allowed: [0, 65535]
example: --repo1-host-port=25

Устаревшее имя: backup-ssh-port

Параметр типа протокола сервера репозитория (--repo-host-type)

Тип протокола сервера репозитория.

Поддерживаются следующие типы протоколов:

  • ssh - Secure Shell.
  • tls - TLS-сервер pgBackRest.
default: ssh
example: --repo1-host-type=tls

Параметр пользователя сервера репозитория (--repo-host-user)

Пользователь сервера репозитория при заданном repo-host.

Определяет пользователя, от имени которого выполняются операции на сервере репозитория. Предпочтительно использовать не postgres, а другого пользователя, например pgbackrest. Если PostgreSQL работает на сервере репозитория, пользователя postgres можно включить в группу pgbackrest, чтобы предоставить ему право чтения репозитория без возможности случайно повредить его содержимое.

default: pgbackrest
example: --repo1-host-user=repo-user

Устаревшее имя: backup-user

Параметр пути репозитория (--repo-path)

Путь для хранения резервных копий и архива.

В репозитории pgBackRest хранит резервные копии и архивирует сегменты WAL.

Заранее оценить требуемое место бывает сложно. Лучше создать несколько резервных копий, записать размеры копий разных типов (full/incr/diff) и измерить объём WAL, создаваемый за день. Это даст общее представление о необходимом месте, хотя со временем по мере развития базы данных требования, скорее всего, изменятся.

default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest

Параметр хранения архива (--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 и потому не рекомендуется.

allowed: [1, 9999999]
example: --repo1-retention-archive=2

Устаревшее имя: retention-archive

Параметр типа хранения архива (--repo-retention-archive-type)

Тип резервных копий для хранения WAL.

При значении full pgBackRest сохраняет архивные журналы для числа полных резервных копий, заданного repo-retention-archive. При значении diff (дифференциальные) pgBackRest сохраняет архивные журналы для числа полных и дифференциальных копий, заданного repo-retention-archive: если последняя копия полная, для целей хранения в репозитории она учитывается как дифференциальная. При значении incr (инкрементные) pgBackRest сохраняет архивные журналы для числа полных, дифференциальных и инкрементных копий, заданного repo-retention-archive. Рекомендуется оставить значение по умолчанию, при котором WAL удаляется только вместе с полными резервными копиями.

default: full
example: --repo1-retention-archive-type=diff

Устаревшее имя: retention-archive-type

Параметр хранения дифференциальных копий (--repo-retention-diff)

Число сохраняемых дифференциальных резервных копий.

При удалении дифференциальной копии также удаляются все связанные с ней инкрементные копии. Если параметр не задан, все дифференциальные копии сохраняются до удаления полных копий, от которых они зависят.

При определении копий для удаления полные копии учитываются в числе дифференциальных. В большинстве случаев это немного уменьшает число дифференциальных копий, которые необходимо хранить.

allowed: [1, 9999999]
example: --repo1-retention-diff=3

Устаревшее имя: retention-diff

Параметр хранения полных копий (--repo-retention-full)

Число или срок хранения полных резервных копий.

При удалении полной копии также удаляются все связанные с ней дифференциальные и инкрементные копии. Если параметр не задан, выводится предупреждение. Для бессрочного хранения задайте максимальное значение.

allowed: [1, 9999999]
example: --repo1-retention-full=2

Устаревшее имя: 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 завершённые полные копии.

default: count
example: --repo1-retention-full-type=time

Параметр хранения истории резервных копий (--repo-retention-history)

Число дней хранения манифестов истории резервных копий.

После завершения резервного копирования копия манифеста сохраняется в каталоге backup.history. По умолчанию эти файлы никогда не удаляются, поскольку полезны для анализа данных, например для измерения роста резервных копий и WAL со временем.

Параметр repo-retention-history задаёт число дней хранения манифестов истории резервных копий. Неудалённые резервные копии всегда сохраняются в истории. Укажите repo-retention-history=0, чтобы хранить историю только для неудалённых резервных копий.

При удалении манифеста истории полной резервной копии также удаляются манифесты истории всех связанных с ней дифференциальных и инкрементных копий.

allowed: [0, 9999999]
example: --repo1-retention-history=365

Параметр бакета репозитория S3 (--repo-s3-bucket)

Бакет репозитория S3.

Бакет S3 для хранения репозитория.

Репозитории pgBackRest можно хранить в корне бакета, задав repo-path=/, но обычно лучше указать префикс, например /repo, чтобы в бакете также можно было хранить журналы и другие данные, создаваемые AWS.

example: --repo1-s3-bucket=pg-backup

Параметр конечной точки репозитория S3 (--repo-s3-endpoint)

Конечная точка репозитория S3.

Следует использовать конечную точку AWS, допустимую для выбранного региона.

Для нестандартных или тестовых конфигураций могут быть полезны параметры repo-storage-ca-file, repo-storage-ca-path, repo-storage-host, repo-storage-port и repo-storage-verify-tls.

example: --repo1-s3-endpoint=s3.amazonaws.com

Параметр типа ключа репозитория S3 (--repo-s3-key-type)

Тип ключа репозитория S3.

Поддерживаются следующие типы:

  • shared - Общие ключи
  • auto - Автоматическое получение временных учётных данных
  • web-id - Автоматическое получение учётных данных веб-идентификации
  • pod-id - Автоматическое получение учётных данных EKS Pod Identity
  • process - Получение учётных данных запуском процесса
default: shared
example: --repo1-s3-key-type=auto

Параметр идентификатора ключа KMS репозитория S3 (--repo-s3-kms-key-id)

Ключ KMS репозитория S3.

Включает шифрование на стороне сервера S3 с указанным ключом AWS Key Management Service.

example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7

Параметр команды процесса аутентификации S3 (--repo-s3-process-cmd)

Команда процесса аутентификации S3.

Команда (и необязательные аргументы), выполняемая для получения временных учётных данных S3. Первый элемент списка — команда, остальные передаются ей как параметры.

Процесс должен вывести JSON с полями AccessKeyId, SecretAccessKey, SessionToken и Expiration. Учётные данные автоматически обновляются до истечения срока действия. Формат описан в разделе Поставщик учётных данных через процесс .

example: --repo1-s3-process-cmd=/usr/local/bin/get-credentials --repo1-s3-process-cmd=--role --repo1-s3-process-cmd=my-role

Параметр региона репозитория S3 (--repo-s3-region)

Регион репозитория S3.

Регион AWS, в котором создан бакет.

example: --repo1-s3-region=us-east-1

Параметр оплаты запросов отправителем в репозитории S3 (--repo-s3-requester-pays)

Оплата запросов отправителем в репозитории S3.

Включает в S3 оплату запросов отправителем.

default: n
example: --no-repo1-s3-requester-pays

Параметр роли репозитория S3 (--repo-s3-role)

Роль репозитория S3.

Имя роли AWS (не полный ARN), используемой для получения временных учётных данных при repo-s3-key-type=auto.

example: --repo1-s3-role=authrole

Параметр службы репозитория S3 (--repo-s3-service)

Служба подписывания S3.

Служба подписывания S3, используемая при аутентификации SigV4. Для стандартных конечных точек S3 по умолчанию используется s3. При использовании конечной точки S3 Outposts задайте s3-outposts.

default: s3
example: --repo1-s3-service=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, китайских регионов или снижения задержки.

default: sts.amazonaws.com
example: --repo1-s3-sts-host=sts.us-east-1.amazonaws.com

Параметр стиля URI репозитория S3 (--repo-s3-uri-style)

Стиль URI S3.

Поддерживаются следующие стили URI:

  • host - Соединение с узлом bucket.endpoint.
  • path - Соединение с узлом endpoint с добавлением бакета в начало URI.
default: host
example: --repo1-s3-uri-style=path

Параметр сервера репозитория SFTP (--repo-sftp-host)

Сервер репозитория SFTP.

Сервер SFTP, на котором расположен репозиторий.

example: --repo1-sftp-host=sftprepo.domain

Параметр отпечатка сервера репозитория 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.

example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf

Параметр типа проверки ключа сервера SFTP (--repo-sftp-host-key-check-type)

Тип проверки ключа сервера SFTP.

Поддерживаются следующие типы проверки ключа сервера SFTP:

  • strict - pgBackRest никогда не добавляет ключи серверов в файл ~/.ssh/known_hosts автоматически и отказывается соединяться с серверами, ключ которых изменился или отсутствует в файлах известных серверов. При этом пользователь должен вручную добавлять все новые серверы.
  • accept-new - pgBackRest автоматически добавляет новые ключи серверов в пользовательский файл известных серверов, но не разрешает соединения с серверами, ключи которых изменились.
  • fingerprint - pgBackRest сравнивает ключ сервера с отпечатком, заданным параметром repo-sftp-host-fingerprint.
  • none - Ключ сервера не проверяется.
default: strict
example: --repo1-sftp-host-key-check-type=accept-new

Параметр типа хеша ключа сервера репозитория SFTP (--repo-sftp-host-key-hash-type)

Тип хеша ключа сервера репозитория SFTP.

Тип хеша ключа сервера репозитория SFTP. Задаёт тип хеша для вычисления дайджеста ключа удалённой системы при установлении SSH-соединения. Новые версии libssh2 поддерживают sha256 в дополнение к md5 и sha1.

example: --repo1-sftp-host-key-hash-type=sha256

Параметр порта сервера репозитория SFTP (--repo-sftp-host-port)

Порт сервера репозитория SFTP.

Порт сервера репозитория SFTP.

default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22

Параметр пользователя сервера репозитория SFTP (--repo-sftp-host-user)

Пользователь сервера репозитория SFTP.

Пользователь на сервере, используемом для хранения репозитория.

example: --repo1-sftp-host-user=pg-backup

Параметр файла известных серверов 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.

example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts

Параметр файла закрытого ключа репозитория SFTP (--repo-sftp-private-key-file)

Файл закрытого ключа SFTP.

Файл закрытого ключа SFTP для аутентификации.

example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519

Параметр файла открытого ключа репозитория SFTP (--repo-sftp-public-key-file)

Файл открытого ключа SFTP.

Файл открытого ключа SFTP для аутентификации. Необязателен при сборке с OpenSSL и обязателен при сборке с другой библиотекой.

example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub

Параметр файла CA хранилища репозитория (--repo-storage-ca-file)

Файл CA хранилища репозитория.

Позволяет использовать для сертификатов хранилища (например, S3 или Azure) файл CA, отличный от системного файла по умолчанию.

example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt

Устаревшие имена: repo-azure-ca-file, repo-s3-ca-file

Параметр каталога CA для TLS хранилища репозитория (--repo-storage-ca-path)

Каталог CA хранилища репозитория.

Позволяет использовать для сертификатов хранилища (например, S3 или Azure) каталог CA, отличный от системного каталога по умолчанию.

example: --repo1-storage-ca-path=/etc/pki/tls/certs

Устаревшие имена: repo-azure-ca-path, repo-s3-ca-path

Параметр сервера хранилища репозитория (--repo-storage-host)

Сервер хранилища репозитория.

Устанавливает соединение с сервером, отличным от конечной точки хранилища (например, S3 или Azure). Обычно используется для тестирования.

example: --repo1-storage-host=127.0.0.1

Устаревшие имена: repo-azure-host, repo-s3-host

Параметр порта хранилища репозитория (--repo-storage-port)

Порт хранилища репозитория.

Порт для соединения с конечной точкой хранилища (например, S3 или Azure) либо с сервером, если он указан.

default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000

Устаревшие имена: repo-azure-port, repo-s3-port

Параметр тегов хранилища репозитория (--repo-storage-tag)

Теги хранилища репозитория.

Задаёт теги, добавляемые к объектам, если репозиторий расположен в объектном хранилище (например, S3). Параметр можно повторять для добавления нескольких тегов.

В pgBackRest нет возможности изменять эти теги, поэтому их следует правильно задать до запуска stanza-create, чтобы теги были одинаковыми во всём репозитории.

example: --repo1-storage-tag=key1=value1

Параметр размера части загрузки в хранилище репозитория (--repo-storage-upload-chunk-size)

Размер части загрузки в хранилище репозитория.

Объектные хранилища, такие как S3, позволяют загружать файлы частями, если файл слишком велик для размещения в памяти. Даже если он помещается в память, ограничение объёма памяти для загрузок позволяет использовать её экономнее.

Больший размер части обычно повышает производительность, поскольку уменьшает число запросов загрузки и позволяет загружать больше файлов одним запросом, а не частями. Недостаток — повышенное потребление памяти. Поскольку буфер части выделяется каждому процессу, большие значения process-max увеличивают общий расход памяти.

Допустимые размеры частей зависят от типа хранилища и платформы. Например, минимальный размер части в AWS S3 — 5MiB. Терминология также различается: при поиске минимальных и максимальных значений используйте «part size» для AWS S3, «chunk size» для GCS и «block size» для Azure.

Если файл больше 1GiB (максимального размера, который PostgreSQL создаёт по умолчанию), размер части постепенно увеличивается вплоть до максимально допустимого, чтобы завершить загрузку файла.

default (depending on repo-type):
    azure - 4MiB
    gcs - 4MiB
    s3 - 5MiB

allow range (depending on repo-type):
    azure - [4MiB, 1GiB]
    gcs - [4MiB, 1GiB]
    s3 - [5MiB, 1GiB]

example: --repo1-storage-upload-chunk-size=16MiB

Параметр проверки сертификата хранилища репозитория (--repo-storage-verify-tls)

Проверка сертификата хранилища репозитория.

Позволяет включать и отключать проверку TLS-сертификата сервера хранилища (например, S3 или Azure). Отключать проверку следует только при тестировании или в других случаях использования самоподписанного сертификата.

default: y
example: --no-repo1-storage-verify-tls

Устаревшие имена: repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls

Создание символических ссылок внутри репозитория.

Включает создание символических ссылок latest и ссылок табличных пространств. Эти ссылки наиболее полезны при использовании снимков для восстановления непосредственно в репозитории, что встречается редко.

Хотя подавляющему большинству пользователей эта возможность, вероятно, не нужна, она остаётся включённой по умолчанию ради совместимости. Однако для Posix-подобных хранилищ, не поддерживающих символические ссылки, может быть полезно отключить их.

default: y
example: --no-repo1-symlink

Параметр типа репозитория (--repo-type)

Тип хранилища репозитория.

Поддерживаются следующие типы репозиториев:

  • azure - Azure Blob Storage Service
  • cifs - Аналогичен posix, но отключает ссылки и fsync каталогов
  • gcs - Google Cloud Storage
  • posix - Файловые системы, совместимые с Posix
  • s3 - AWS Simple Storage Service
  • sftp - Secure File Transfer Protocol

При использовании смонтированной NFS в качестве репозитория posix к pgBackRest применяются те же правила, что описаны в документации PostgreSQL: Создание кластера баз данных — файловые системы .

default: posix
example: --repo1-type=cifs