pg_combinebackup

pg_combinebackup — восстановить полную резервную копию из инкрементальной и зависимых резервных копий

Синтаксис

pg_combinebackup [параметр...] [каталог_резервных_копий...]

Описание

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

Укажите в командной строке все необходимые резервные копии — от самой старой к самой новой. То есть первый каталог резервных копий должен быть путём к полной копии, а последний — путём к последней инкрементальной копии, которую нужно восстановить. Восстановленная копия будет записана в выходной каталог, указанный в параметре -o.

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

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

Параметры

-d
--debug

Выводить подробные отладочные сообщения в stderr.

-n
--dry-run

Параметр -n/--dry-run даёт указание pg_combinebackup выяснить, что будет сделано без фактического создания целевого каталога или каких-либо выходных файлов. Он особенно полезен в сочетании с --debug.

-N
--no-sync

По умолчанию pg_combinebackup ожидает безопасной записи файлов на диск. Этот параметр заставляет pg_combinebackup возвращать результат без ожидания, что быстрее, но означает, что последующий сбой операционной системы может повредить получившуюся резервную копию. Как правило, этот параметр полезен для тестирования, но его не следует использовать в производственной среде.

-o выходной_каталог
--output=выходной_каталог

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

-T старый_каталог=новый_каталог
--tablespace-mapping=старый_каталог=новый_каталог

Перемещает табличное пространство из старого_каталога в новый_каталог во время резервного копирования. старый_каталог — это абсолютный путь табличного пространства в том виде, в котором оно существует в последней резервной копии, указанной в командной строке, а новый_каталог — это абсолютный путь для использования табличного пространства в восстановленной резервной копии. Если какой-либо из путей должен содержать знак равенства (=), поставьте перед ним обратную косую черту. Этот параметр можно указывать несколько раз для нескольких табличных пространств.

--clone

Использовать эффективное клонирование файлов (в ряде систем это называется «reflink») вместо копирования файлов в новый каталог. В результате файлы данных могут копироваться практически мгновенно.

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

Клонирование файлов поддерживается только в некоторых операционных и файловых системах. Если оно выбрано, но не поддерживается, запуск pg_combinebackup приведёт к ошибке. В настоящее время клонирование поддерживается в Linux (ядро 4.5 или более поздней версии) с Btrfs и XFS (в файловых системах, созданных с поддержкой reflink), а также в macOS с APFS.

--copy

Выполнять обычное копирование файлов. Это значение по умолчанию. (См. также --copy-file-range и --clone.)

--copy-file-range

Использовать системный вызов copy_file_range для эффективного копирования. В некоторых файловых системах результаты будут схожи с --clone, позволяя совместное использование физических дисковых блоков, в то время как на других могут копироваться блоки, но по оптимизированному пути. В настоящее время параметр поддерживается в Linux и FreeBSD.

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

--manifest-checksums=алгоритм

Как и pg_basebackup, pg_combinebackup записывает манифест копии в выходной каталог. В этом параметре указывается алгоритм подсчёта контрольных сумм, который следует применять к каждому файлу, включённому в манифест. В настоящее время доступны следующие алгоритмы: NONE, CRC32C, SHA224, SHA256, SHA384 и SHA512. Значение по умолчанию — CRC32C.

--no-manifest

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

--sync-method=метод

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

В Linux вместо этого можно использовать syncfs, чтобы дать указание ОС синхронизировать всю файловую систему, содержащую каталог резервных копий. При использовании простого формата pg_combinebackup также синхронизирует файловые системы, содержащие файлы WAL и каждое табличное пространство. Для получения дополнительной информации об особенностях, которые необходимо учитывать при использовании syncfs, обратитесь к recovery_init_sync_method.

В режиме --no-sync этот параметр не оказывает никакого влияния.

-V
--version

Вывести версию pg_combinebackup и завершиться.

-?
--help

Вывести справку по аргументам командной строки pg_combinebackup и завершиться.

Ограничения

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

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

Переменные окружения

Как и большинство других утилит PostgreSQL, приложение также использует переменные окружения, поддерживаемые libpq (см. Раздел 32.15).

Переменная окружения PG_COLOR выбирает вариант использования цвета в диагностических сообщениях. Возможные значения: always (всегда), auto (автоматически) и never (никогда).

См. также

pg_basebackup