pg_combinebackup
pg_combinebackup — восстановить полную резервную копию из инкрементальной и зависимых резервных копий
Синтаксис
pg_combinebackup [параметр...] [каталог_резервных_копий...]
Описание
pg_combinebackup используется для восстановления синтетической полной резервной копии из инкрементальной резервной копии и более ранних копий, от которых она зависит.
Укажите в командной строке все необходимые резервные копии — от самой старой к самой новой. То есть первый каталог резервных копий должен быть путём к полной копии, а последний — путём к последней инкрементальной копии, которую нужно восстановить. Восстановленная копия будет записана в выходной каталог, указанный в параметре -o.
Приложение pg_combinebackup попытается проверить, что указанные резервные копии образуют допустимую цепочку, из которой может быть восстановлена корректная полная резервная копия. Однако в нём не предусмотрена функциональность, помогающая отслеживать зависимости между копиями. Если будет удалена одна или несколько предыдущих резервных копий, от которых зависит инкрементальная копия, вы не сможете её восстановить. Более того, pg_combinebackup пытается проверить только корректность связей между копиями, а не целостность каждой из них. Чтобы проверить целостность, используйте pg_verifybackup.
Поскольку вывод pg_combinebackup представляет собой синтетическую полную резервную копию, её можно использовать в качестве входных данных для следующего вызова pg_combinebackup. Синтетическая полная резервная копия будет указана в командной строке вместо цепочки резервных копий, из которых она была восстановлена.
Параметры
-d--debugВыводить подробные отладочные сообщения в
stderr.-k--linkИспользовать жёсткие ссылки вместо копирования файлов в синтетическую резервную копию. Восстановление синтетической резервной копии может быть быстрее (так как нет копирования файлов) и требует меньше места на диске, но нужно соблюдать осторожность при использовании выходного каталога, потому что любые изменения в этом каталоге (например, запуск сервера) могут также повлиять на входные каталоги. Подобным образом, изменения во входных каталогах (например, запуск сервера из полной резервной копии) могут повлиять на выходной каталог. Таким образом, лучше всего использовать этот параметр, когда входные каталоги представляют собой только копии, которые будут удалены после завершения pg_combinebackup.
Необходимо, чтобы входные резервные копии и выходной каталог находились в одной файловой системе.
Если манифест копии недоступен или не содержит контрольную сумму нужного типа, жёсткие ссылки всё равно будут созданы, но файл также будет прочитан по блокам для расчёта контрольной суммы.
-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и-k/--link.)--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 (см. Раздел 36.15).
Переменная окружения PG_COLOR выбирает вариант использования цвета в диагностических сообщениях. Возможные значения: always (всегда), auto (автоматически) и never (никогда).
См. также
pg_basebackuppg_combinebackup
pg_combinebackup — reconstruct a full backup from an incremental backup and dependent backups
Synopsis
pg_combinebackup [option...] [backup_directory...]
Description
pg_combinebackup is used to reconstruct a synthetic full backup from an incremental backup and the earlier backups upon which it depends.
Specify all of the required backups on the command line from oldest to newest. That is, the first backup directory should be the path to the full backup, and the last should be the path to the final incremental backup that you wish to restore. The reconstructed backup will be written to the output directory specified by the -o option.
pg_combinebackup will attempt to verify that the backups you specify form a legal backup chain from which a correct full backup can be reconstructed. However, it is not designed to help you keep track of which backups depend on which other backups. If you remove one or more of the previous backups upon which your incremental backup relies, you will not be able to restore it. Moreover, pg_combinebackup only attempts to verify that the backups have the correct relationship to each other, not that each individual backup is intact; for that, use pg_verifybackup.
Since the output of pg_combinebackup is a synthetic full backup, it can be used as an input to a future invocation of pg_combinebackup. The synthetic full backup would be specified on the command line in lieu of the chain of backups from which it was reconstructed.
Options
-d--debugPrint lots of debug logging output on
stderr.-k--linkUse hard links instead of copying files to the synthetic backup. Reconstruction of the synthetic backup might be faster (no file copying) and use less disk space, but care must be taken when using the output directory, because any modifications to that directory (for example, starting the server) can also affect the input directories. Likewise, changes to the input directories (for example, starting the server on the full backup) could affect the output directory. Thus, this option is best used when the input directories are only copies that will be removed after pg_combinebackup has completed.
Requires that the input backups and the output directory are in the same file system.
If a backup manifest is not available or does not contain checksum of the right type, hard links will still be created, but the file will be also read block-by-block for the checksum calculation.
-n--dry-runThe
-n/--dry-runoption instructspg_combinebackupto figure out what would be done without actually creating the target directory or any output files. It is particularly useful in combination with--debug.-N--no-syncBy default,
pg_combinebackupwill wait for all files to be written safely to disk. This option causespg_combinebackupto return without waiting, which is faster, but means that a subsequent operating system crash can leave the output backup corrupt. Generally, this option is useful for testing but should not be used when creating a production installation.-ooutputdir--output=outputdirSpecifies the output directory to which the synthetic full backup should be written. Currently, this argument is required.
-Tolddir=newdir--tablespace-mapping=olddir=newdirRelocates the tablespace in directory
olddirtonewdirduring the backup.olddiris the absolute path of the tablespace as it exists in the final backup specified on the command line, andnewdiris the absolute path to use for the tablespace in the reconstructed backup. If either path needs to contain an equal sign (=), precede that with a backslash. This option can be specified multiple times for multiple tablespaces.--cloneUse efficient file cloning (also known as “reflinks” on some systems) instead of copying files to the new data directory, which can result in near-instantaneous copying of the data files.
If a backup manifest is not available or does not contain checksum of the right type, file cloning will be used to copy the file, but the file will be also read block-by-block for the checksum calculation.
File cloning is only supported on some operating systems and file systems. If it is selected but not supported, the pg_combinebackup run will error. At present, it is supported on Linux (kernel 4.5 or later) with Btrfs and XFS (on file systems created with reflink support), and on macOS with APFS.
--copyPerform regular file copy. This is the default. (See also
--copy-file-range,--clone, and-k/--link.)--copy-file-rangeUse the
copy_file_rangesystem call for efficient copying. On some file systems this gives results similar to--clone, sharing physical disk blocks, while on others it may still copy blocks, but do so via an optimized path. At present, it is supported on Linux and FreeBSD.If a backup manifest is not available or does not contain checksum of the right type,
copy_file_rangewill be used to copy the file, but the file will be also read block-by-block for the checksum calculation.--manifest-checksums=algorithmLike pg_basebackup, pg_combinebackup writes a backup manifest in the output directory. This option specifies the checksum algorithm that should be applied to each file included in the backup manifest. Currently, the available algorithms are
NONE,CRC32C,SHA224,SHA256,SHA384, andSHA512. The default isCRC32C.--no-manifestDisables generation of a backup manifest. If this option is not specified, a backup manifest for the reconstructed backup will be written to the output directory.
--sync-method=methodWhen set to
fsync, which is the default,pg_combinebackupwill recursively open and synchronize all files in the backup directory. When the plain format is used, the search for files will follow symbolic links for the WAL directory and each configured tablespace.On Linux,
syncfsmay be used instead to ask the operating system to synchronize the whole file system that contains the backup directory. When the plain format is used,pg_combinebackupwill also synchronize the file systems that contain the WAL files and each tablespace. See recovery_init_sync_method for information about the caveats to be aware of when usingsyncfs.This option has no effect when
--no-syncis used.-V--versionPrints the pg_combinebackup version and exits.
-?--helpShows help about pg_combinebackup command line arguments, and exits.
Limitations #
pg_combinebackup does not recompute page checksums when writing the output directory. Therefore, if any of the backups used for reconstruction were taken with checksums disabled, but the final backup was taken with checksums enabled, the resulting directory may contain pages with invalid checksums.
To avoid this problem, taking a new full backup after changing the checksum state of the cluster using pg_checksums is recommended. Otherwise, you can disable and then optionally reenable checksums on the directory produced by pg_combinebackup in order to correct the problem.
Environment
This utility, like most other PostgreSQL utilities, uses the environment variables supported by libpq (see Section 36.15).
The environment variable PG_COLOR specifies whether to use color in diagnostic messages. Possible values are always, auto and never.