С помощью pg_probackup3 вы можете управлять резервными копиями в командной строке:
Используйте команду show для просмотра информации о резервной копии. За подробностями обратитесь к разделу Просмотр информации о резервных копиях.
Для просмотра информации об архиве WAL выполните команду show с параметром --archive. Подробнее об этом рассказывается в разделе Просмотр оглавления архива WAL.
В зависимости от того, требуется ли объединить инкрементальную резервную копию с её родительской полной копией или цепочку инкрементальных копий, можно использовать команду merge с параметром --backup-id(-i) либо --backup-id вместе с --merge-from-id/--merge-interval соответственно. За подробностями обратитесь к разделу Объединение резервных копий.
Для удаления ненужных резервных копий выполните команду delete. Подробнее о процессе рассказывается в разделе Удаление резервных копий.
Чтобы просмотреть список существующих копий для каждого экземпляра, выполните команду:
pg_probackup3 show -B каталог_копийpg_probackup3 выводит список всех имеющихся резервных копий. Например:
BACKUP INSTANCE 'dev', version 3 ================================================================================================================================= Instance Version ID End time Mode WAL Mode TLI Duration Data WAL Zalg Zratio Start LSN Stop LSN Status ================================================================================================================================= dev 17 1-full 2024-12-10 14:51:34+0000 FULL STREAM 1 1s 38MB - none 1.00 0/A000028 0/A000138 OK dev 17 1-delta 2024-12-10 14:52:02+0000 DELTA STREAM 1 11MB - none 1.00 0/D000028 0/D000180 OK dev 17 2-delta 2024-12-10 14:52:28+0000 DELTA STREAM 1 22MB - none 1.00 0/10000028 0/10000138 OK dev 17 1a-full 2024-12-10 14:54:10+0000 FULL ARCHIVE 1 1s 75MB - none 1.00 0/12000028 0/12000138 OK dev 17 1a-delta 2024-12-10 14:54:32+0000 DELTA ARCHIVE 1 17MB - none 1.00 0/14000028 0/14000138 OK
Для каждой копии выдаются следующие сведения:
Instance — имя экземпляра.
Version — базовая версия Postgres Pro.
ID — идентификатор резервной копии.
End time — время окончания резервного копирования.
Mode — режим, в котором была сделана копия. Возможные значения: FULL (полная), DELTA (инкрементальная), PTRACK (копирование изменений).
WAL Mode — режим доставки WAL. Возможные значения: STREAM (потоковый) и ARCHIVE (архивный).
TLI — идентификаторы линии времени текущей копии и её родителя.
Duration — время, за которое была выполнена данная копия.
Data — объём файлов данных в этой копии. Это значение не включает в себя размер файлов WAL. Для копий, сделанных в режиме STREAM, общий размер можно рассчитать, сложив значения Data и WAL.
WAL — размер несжатых файлов WAL, которые должны быть применены в процессе восстановления копии для достижения согласованного состояния.
compress-alg — алгоритм сжатия, используемый при получении резервной копии. Возможные значения: zlib, lz4, zstd и none (сжатие не производилось).
Zratio — коэффициент сжатия, вычисленный как отношение «uncompressed-bytes» (объём несжатых данных в байтах) к «data-bytes» (итоговый объём данных).
Start LSN — последовательный номер в журнале WAL, соответствующий началу процесса копирования. С этой позиции накатываются изменения (REDO) в процессе восстановления Postgres Pro.
Stop LSN — последовательный номер в журнале WAL, соответствующий окончанию процесса копирования. Это позиция точки согласованности при восстановлении Postgres Pro.
Status — состояние резервной копии. Возможные варианты:
OK — резервная копия сделана и пригодна к использованию.
DONE — резервная копия сделана, но не проверена.
RUNNING — резервное копирование выполняется.
MERGING — резервная копия объединяется.
MERGED — файлы резервной копии были успешно обработаны в процессе объединения копий, но её метаданные ещё изменяются. Это состояние могут иметь только полные резервные копии.
DELETING — файлы резервной копии удаляются.
CORRUPT — некоторые файлы резервной копии повреждены.
ERROR — резервное копирование было прервано из-за неожиданной ошибки.
ORPHAN — резервная копия непригодна к использованию, так как её родительская копия испорчена или отсутствует.
HIDDEN_FOR_TEST — скрипт теста пометил копию как несуществующую. (Собственно pg_probackup3 никогда не устанавливает это состояние.)
Восстановить кластер из копии можно только для копий с состоянием OK или DONE.
Чтобы получить более подробную информацию о копии, укажите в команде show её идентификатор:
pg_probackup show -Bкаталог_копий--instance=имя_экземпляра-iид_резервной_копии
Пример вывода:
# Backup 2-delta information. backup_id=2-delta parent_backup_id=1-delta backup_mode=delta tli=1 start_lsn=268435496 stop_lsn=268435768 # start-time 2024-12-10 14:52:28+0000 start_time=1733842348 # end-time 2024-12-10 14:52:28+0000 end_time=1733842348 recovery-time=0 data-bytes=22986632 uncompressed-bytes=22986632 compress-alg=none compress-level=1 server-version=170001 min_xid=0 min_multixact=0 backup_source=pro primary_conninfo=user=garbuz reusepass=1 channel_binding=prefer host=localhost port=5432 sslmode=prefer sslcompression=0 sslcertmode=allow sslsni=1 ssl_min_protocol_version=TLSv1.2 gssencmode=disable krbsrvname=postgres gssdelegation=0 target_session_attrs=any target_server_type=any hostorder=sequential load_balance_hosts=disable stream=true program-version=3.0.0 block-size=8192 xlog-block-size=8192 status = OK
В расширенном выводе представлены дополнительные атрибуты:
compress-alg — алгоритм сжатия, используемый при получении резервной копии. Возможные значения: zlib, lz4, zstd и none (сжатие не производилось).
compress-level — уровень сжатия, применяемый в процессе резервного копирования.
block-size — значение параметра block_size, установленное в кластере Postgres Pro в начале копирования.
checksum-version — признак включения параметра data_checksums в исходном кластере Postgres Pro. Возможные значения: 1, 0.
program-version — полная версия программы pg_probackup3, которая создала эту копию.
start-time — время начала резервного копирования.
end-time — время окончания резервного копирования.
end-validation-time — время окончания проверки резервной копии.
expire-time — время, когда закреплённая копия может быть ликвидирована в соответствии с политикой хранения. Этот атрибут имеется только у закреплённых копий.
uncompressed-bytes — размер файлов данных до добавления заголовков страниц и сжатия. В случае использования сжатия оценить его эффективность можно, сопоставив объём uncompressed-bytes (байтов несжатых данных) с data-bytes (байтов данных).
data-bytes — размер файлов данных Postgres Pro на момент копирования. Эффективность инкрементального метода копирования можно оценить, сопоставив объём data-bytes (байтов в PGDATA) с uncompressed-bytes (байтов несжатых данных).
recovery-xid — идентификатор транзакции, соответствующей моменту окончания резервного копирования.
parent-backup-id — идентификатор родительской копии. Определён только для инкрементальных копий.
primary_conninfo — параметры подключения libpq, с использованием которых производилось подключение к кластеру Postgres Pro для получения этой резервной копии. Пароль в эти параметры не включается.
note — текстовое примечание, связанное с копией.
content-crc — контрольная сумма файла backup_content.control, рассчитанная по алгоритму CRC32. Она позволяет выявить повреждение метаданных копии.
Можно использовать параметр --format=tree, чтобы посмотреть список резервных копий в виде дерева:
pg_probackup3 show -B каталог_копий --format=treeВывод будет выглядеть вот так:
BACKUP INSTANCE 'dev', version 3
├── 1-full
│ └── 1-delta
│ └── 2-delta
└── 1a-full
└── 1a-deltaВы также можете получить подробную информацию о резервной копии в формате JSON:
pg_probackup3 show -Bкаталог_копий--instance=имя_экземпляра--format=json -i backup_id
Пример вывода:
[
{
"instance": "dev",
"backups": [
{
"id": "2-delta",
"parent-backup-id": "1-delta",
"status": "OK",
"start-time": "2024-12-10 14:52:28+0000",
"end-time": "2024-12-10 14:52:28+0000",
"backup-mode": "DELTA",
"wal": "STREAM",
"block-size": 8192,
"xlog-block-size": 8192,
"program-version": "3.0.0",
"server-version": 17,
"current-tli": 1,
"start-lsn": "0/10000028",
"stop-lsn": "0/10000138",
"data-bytes": 22986632,
"uncompressed-bytes": 22986632,
"wal-bytes": 0,
"compress-alg": "none",
"compress-level": 1,
"min-xid": 0,
"min-multixact": 0,
"backup-source": "pro"
}
]
}
]Чтобы получить информацию об архиве WAL для каждого экземпляра, выполните команду:
pg_probackup3 show -Bкаталог_копий[--instance=имя_экземпляра] --archive
pg_probackup3 выводит список всех имеющихся файлов WAL, сгруппированных по линиям времени. Например:
BACKUP INSTANCE 'dev', version 3 ===================================================================================================================== TLI Parent TLI Switchpoint Min Segno Max Segno N segments Size Zratio N backups Status ===================================================================================================================== 1 0/0 000000010000000000000001 000000010000000000000006 6 96MB 1.17 1 OK
Для каждой линии времени выдаются следующие сведения:
TLI — идентификатор линии времени.
Parent TLI — идентификатор линии времени, от которой была ответвлена данная.
Switchpoint — LSN момента, когда эта линия времени ответвилась от родительской.
Min Segno — первый сегмент WAL, относящийся к этой линии времени.
Max Segno — последний сегмент WAL, относящийся к этой линии времени.
N segments — количество сегментов WAL, относящихся к этой линии времени.
Size — объём, который занимают файлы на диске.
Zalg — алгоритм сжатия, используемый при получении резервной копии. Возможные значения: zlib, lz4, zstd, none(сжатие не производилось).
Zratio — коэффициент сжатия, вычисляемый по формуле N segments * wal_segment_size * wal_block_size / Size.
N backups — число копий, относящихся к этой линии времени. Для получения подробных сведений об этих копиях воспользуйтесь форматом JSON.
Status — состояние архива WAL для этой линии времени. Возможные значения:
OK — в архиве присутствуют все сегменты WAL между Min Segno и Max Segno.
DEGRADED — отсутствуют некоторые сегменты WAL между Min Segno и Max Segno. Понять, какие файлы утрачены, можно, посмотрев этот отчёт в формате JSON. Такой статус может возникать, если несколько файлов WAL (в середине последовательности) были удалены командой delete с параметром --delete-wal в соответствии с политикой хранения. Данный статус не влияет на корректность восстановления, но восстановить кластер до некоторых точек восстановления может быть невозможно.
Чтобы получить более подробную информацию об архиве WAL в формате JSON, выполните команду:
pg_probackup3 show -Bкаталог_копий[--instance=имя_экземпляра] --archive --format=json
Пример вывода:
[
{
"instance": "dev",
"version": "3",
"timelines": [
{
"tli": 1,
"parent-tli": 0,
"switchpoint": "0/0",
"min-segno": "000000010000000000000001",
"max-segno": "000000010000000000000006",
"n-segments": 6,
"size": 100663615,
"zratio": 1.17,
"status": "OK",
"backups": [
{
"id": "1-full",
"status": "OK",
"start-time": "2025-02-11 14:22:16+0000",
"end-time": "2025-02-11 14:22:16+0000",
"backup-mode": "FULL",
"wal": "STREAM",
"block-size": 8192,
"xlog-block-size": 8192,
"program-version": "3.0.0",
"server-version": 17,
"current-tli": 1,
"start-lsn": "0/5000028",
"stop-lsn": "0/5000128",
"data-bytes": 60748163,
"uncompressed-bytes": 60748163,
"wal-bytes": 0,
"compress-alg": "none",
"compress-level": 1,
"min-xid": 0,
"min-multixact": 0,
"backup-source": "pro"
}
]
}
]
}
]В основном в этом формате представлены те же поля, что и в текстовом формате, с некоторыми исключениями:
Размер выражается в байтах.
Атрибут closest-backup-id содержит идентификатор самой последней доступной копии, принадлежащей к одной из предыдущих линий времени. Вы можете использовать эту копию для восстановления на момент, относящийся к этой линии времени. Если такой копии не существует, данный атрибут будет пустым.
В массиве lost-segments представлены интервалы отсутствующих сегментов на линиях времени в непригодном состоянии (DEGRADED). На линиях времени в целостном состоянии OK массив lost-segments пуст.
В массиве backups перечисляются все резервные копии, относящиеся к данной линии времени. Если к линии времени не относятся резервные копии, этот массив пуст.
По мере того как вы будете делать новые и новые инкрементальные копии, общий размер каталога резервных копий может существенно увеличиться. Для экономии места на диске вы можете объединить инкрементальные копии с родительскими полными копиями или объединить цепочки инкрементальных копий.
Во время объединения создаётся новая резервная копия, в которую затем войдут все объединяемые копии. Все лишние копии будут удалены только после того, как объединение успешно завершено. Такой процесс требует дополнительного места на диске, но помогает избежать потери данных в случае ошибок или системного сбоя.
Если несколько резервных копий относятся к одной и той же родительской, такие копии не удаляются после объединения, и место на диске не освобождается.
Чтобы объединить инкрементальную копию с полной родительской, выполните команду merge, передав ей идентификатор копии самой последней резервной копии, подлежащей объединению:
pg_probackup3 merge -Bкаталог_копий--instance=имя_экземпляра-iид_резервной_копии
Эта команда объединяет копии, относящиеся к одной цепочке инкрементальных копий. Если выбирается полная копия, она будет объединена с первой инкрементальной копией после неё. Если выбрана инкрементальная копия, она будет объединена с родительской полной копией, включая все инкрементальные копии между ними. После выполнения команды полная копия содержит все объединённые данные, а инкрементальные копии удаляются как ненужные. Таким образом, операция объединения по сути равнозначна созданию новой полной копии с удалением всех устаревших копий, но выполняется она быстрее, особенно с большими объёмами данных, и не нагружает подсистему ввода-вывода и сеть (если pg_probackup3 работает в удалённом режиме).
Чтобы объединить цепочку инкрементальных копий, не включающую полную резервную копию, укажите идентификаторы первой и последней копий в цепочке:
pg_probackup3 merge -Bкаталог_копий--instance=имя_экземпляра--merge-from-id=объединить_от-iид_резервной_копии
Или задайте идентификатор первой копии, а также интервал времени (в часах), чтобы объединить все копии, созданные за это время:
pg_probackup3 merge -Bкаталог_копий--instance=имя_экземпляра-iид_резервной_копии--merge-interval=интервал_объединения
Перед объединением pg_probackup3 проверяет все задействуемые резервные копии, чтобы удостовериться в их целостности. Вы можете проверить текущее состояние резервной копии, передав её идентификатор команде show.
pg_probackup show -Bкаталог_копий--instance=имя_экземпляра-iид_резервной_копии
Если процесс объединения ещё не закончен, вы увидите состояние MERGING. Для полных копий также можно увидеть состояние MERGED в процессе изменения метаданных на последнем этапе объединения. В случае прерывания операции объединения она может быть перезапущена.
Не рекомендуется принудительно завершать операции объединения — это может нарушить дальнейшую работу команды merge и проверку резервных копий.
Для удаления резервной копии, ставшей ненужной, выполните команду:
pg_probackup3 delete -Bкаталог_копий--instance=имя_экземпляра-iид_резервной_копии
Эта команда удалит резервную копию с заданным ид_резервной_копии вместе со всеми инкрементальными копиями, которые от неё зависят (если таковые найдутся). Таким образом вы можете удалить некоторые последние инкрементальные копии, сохранив предыдущую полную копию и некоторые следующие за ней инкрементальные копии.
Прежде чем удалять резервные копии, вы можете выполнить команду delete с параметром --dry-run и получить в результате состояние всех имеющихся копий в соответствии с текущей политикой хранения; никакие необратимые действия при этом выполняться не будут.
Для удаления всех копий с определённым состоянием, воспользуйтесь параметром --status:
pg_probackup delete3 -Bкаталог_копий--instance=имя_экземпляра--status=ERROR
При удалении копий по критерию состояния установленные политики сохранения не учитываются.