pg_combinebackup
Эта страница переведена при помощи нейросети GigaChat.
pg_combinebackup
– восстанавливает полную резервную копию из инкрементальной резервной копии и зависимых копий.
Синтаксис
pg_combinebackup [option...] [backup_directory...]
Описание
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
outputdir
--output=
outputdir
: Задает выходной каталог, куда должна быть записана синтетическая полная резервная копия. На данный момент этот аргумент обязателен.
-T
olddir
=
newdir
--tablespace-mapping=
olddir
=
newdir
: Перемещает табличное пространство в каталоге olddir
в newdir
во время резервного копирования. olddir
– это абсолютный путь табличного пространства, существующего в конечной резервной копии, указанной в командной строке, а newdir
– абсолютный путь, который нужно использовать для табличного пространства в реконструированной резервной копии. Если какому-либо пути необходимо содержать знак равенства (=
), предваряйте его обратным слешем. Эту опцию можно указывать несколько раз для нескольких табличных пространств.
--clone
: Использует эффективное клонирование файлов (также известное как «reflinks» на некоторых системах) вместо копирования файлов в новый каталог данных, что позволяет почти мгновенно скопировать файлы данных.
Если манифест резервной копии недоступен или не содержит контрольную сумму нужного типа, файл будет скопирован методом клонирования файла, однако сам файл также будет прочитан блок за блоком для вычисления контрольной суммы.
Клонирование файлов поддерживается не всеми операционными системами и файловыми системами. Если оно выбрано, но не поддерживается, выполнение команды 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=
algorithm
: Как и pg_basebackup, pg_combinebackup
записывает манифест резервной копии в выходной каталог. Эта опция определяет алгоритм контрольной суммы, который должен применяться к каждому файлу, включенному в манифест резервной копии. В настоящее время доступны алгоритмы NONE
, CRC32C
, SHA224
, SHA256
, SHA384
, и SHA512
. Значение по умолчанию – CRC32C
.
--no-manifest
: Отключает генерацию манифеста резервной копии. Если эта опция не указана, манифест резервной копии для восстановленной резервной копии будет записан в выходной каталог.
--sync-method=
method
: При значении fsync
, которое является значением по умолчанию, pg_combinebackup
рекурсивно открывает и синхронизирует все файлы в каталоге резервной копии. При использовании формата plain поиск файлов будет следовать символическим ссылкам для каталога WAL и каждого настроенного табличного пространства.
На Linux syncfs
можно использовать вместо этого, чтобы попросить операционную систему синхронизировать всю файловую систему, содержащую каталог резервной копии. Когда используется формат plain, pg_combinebackup
также синхронизирует файловые системы, содержащие файлы WAL и каждое табличное пространство. См. раздел recovery_init_sync_method для получения информации о предостережениях, связанных с использованием syncfs
.
Эта опция не оказывает влияния при использовании --no-sync
.
-V
--version
: Печатает версию программы pg_combinebackup
и завершает работу.
-?
--help
: Показывает справку по аргументам командной строки утилиты pg_combinebackup
и завершает работу.
Ограничения
pg_combinebackup
при записи в выходной каталог не пересчитывает контрольные суммы страниц. Поэтому, если какие-либо из резервных копий, использованных для восстановления, были сделаны с отключенными контрольными суммами, а последняя резервная копия была сделана с включенными контрольными суммами, результирующий каталог может содержать страницы с недействительными контрольными суммами.
Чтобы избежать этой проблемы, рекомендуется сделать новую полную резервную копию после изменения состояния контрольных сумм кластера с помощью pg_checksums. В противном случае можно отключить, а затем по желанию снова включить контрольные суммы в каталоге, созданном программой pg_combinebackup
, чтобы исправить проблему.
Окружение
Эта утилита, как и большинство других утилит PostgreSQL, использует переменные окружения, поддерживаемые библиотекой libpq (см. раздел «Переменные окружения»).
Переменная окружения PG_COLOR
указывает, следует ли использовать цвет в диагностических сообщениях. Возможные значения: always
, auto
и never
.