Перейти к основному содержимому

Утилита резервного копирования pg_probackup

Предупреждение!

Начиная с версии 8.1.0 утилитаpg_probackup нежелательна к использованию (считается deprecated). Рекомендуется перейти на использование утилиты CopyWala.

Поддержка утилиты будет прекращена c версии 9.x.x.

Описание

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

Утилита pg_probackup поставляется в пакете компонента Pangolin Backup Tools в рамках дистрибутива продукта.

Внимание!

При включенном TDE выполнение резервного копирования с клиентского хоста требует дополнительной подготовки. На клиентском хосте должен быть обеспечен доступ к ключам кодирования и связанным параметрам, например через подключение к KMS-серверу или с помощью KMS-заменителя. Без такой подготовки использование pg_probackup на клиентском хосте невозможно.

Возможности

pg_probackup предоставляет ряд возможностей, упрощающих построение стратегий резервного копирования и работу с большими объемами данных:

Возможность

Описание

Инкрементное копирование

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

Инкрементное восстановление

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

Объединение (Merge)

Реализация стратегии «инкрементально обновляемых резервных копий», устраняющей необходимость в периодических полных копиях

Валидация

Автоматическая проверка согласованности данных и проверка резервных копий по запросу без фактического восстановления

Верификация

Проверка целостности экземпляра с помощью команды checkdb

Хранение (Retention)

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

Параллельная работа

Выполнение резервного копирования, восстановления, слияния, удаления, верификации и валидации в нескольких потоках

Сжатие

Хранение данных резервной копии в сжатом виде для экономии места

Дедупликация

Пропуск копирования неизмененных служебных файлов (например, _vm или _fsm)

Удаленные операции

Резервное копирование и восстановление экземпляра, расположенного на удаленном сервере

Резервная копия со standby-сервера

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

Внешние директории

Резервное копирование файлов и каталогов, находящихся за пределами PGDATA (скрипты, конфигурационные файлы, лог-файлы, SQL-выгрузки)

Каталог резервных копий

Список резервных копий и метаданных в формате plain text или JSON

Каталог архива

Список всех линий времени WAL и их метаданных в формате plain text или JSON

Частичное восстановление

Восстановление только указанных баз или исключение отдельных баз из восстановления

Фоновое резервное копирование

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

Каталог резервных копий

Утилита pg_probackup хранит резервные копии и WAL-файлы, необходимые для восстановления до заданной точки во времени (PITR), хранящиеся в каталоге резервных копий. Для разных экземпляров можно выделять отдельные подкаталоги внутри одного каталога.

Типы резервного копирования

pg_probackup поддерживает 2 вида резервного копирования:

  • Полное (Full) — содержит все файлы данных, необходимые для восстановления кластера с нуля.

  • Инкрементное (Incremental) — хранит только измененные с момента предыдущей копии данные, что уменьшает размер резервной копии и ускоряет его создание.

    Поддерживаются режимы:

    1. PAGE — анализируются все WAL-файлы с момента последней резервной копии, и копируются только страницы, упомянутые в WAL-записях. Требуется полный набор WAL-файлов с момента предыдущей копии.
    2. DELTA — читаются все файлы данных в PGDATA, но копируются только измененные страницы. Непрерывное архивирование не требуется, но нагрузка на диск сравнима с резервным копированием полного типа.
    3. PTRACK — СУБД Pangolin помечает измененные страницы в специальном битмапе. Требует расширение ptrack. Нагрузка на сервер минимальная, а резервные копии создаются быстрее.

Режим резервного копирования задается с помощью параметра -b <backup-mode>.

Независимо от типа резервного копирования, все копии поддерживают два варианта доставки WAL:

  • Автономная (stream) — необходимые WAL-файлы передаются через протокол репликации и включаются в резервную копию. Даже при отсутствии непрерывного архивирования восстановление возможно.
  • Архивная (archive) — используется механизм непрерывного архивирования. Для восстановления требуется полный набор WAL-файлов, сохраненных в архиве.

Параметры

Утилита pg_probackup поддерживает следующие параметры:

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

Общие параметры, которые могут использоваться с различными командами утилиты:

--dry-run

Выполняет тестовый запуск команды без внесения изменений (не создаются, не удаляются и не перемещаются файлы). Пропускается потоковая трансляция WAL.

-B <backup-path>

Задает путь к каталогу резервных копий. Можно установить один раз через переменную окружения BACKUP_PATH.

-D <pgdata-path>

Путь к каталогу данных кластера (обязателен только для add-instance). Остальные команды могут использовать переменную PGDATA или конфигурационный файл.

-i <backup-id>

Уникальный идентификатор резервной копии.

--instance=<instance_name>

Имя экземпляра СУБД Pangolin.

--backup-pg-log

Включение в резервную копию каталога log. Этот каталог обычно содержит журналы сообщений сервера. По умолчанию каталог log в копию не включается. Параметр используется только для команды backup.

-j <num-threads>

Количество параллельных потоков для команд backup, restore, merge, validate, checkdb и archive-push.

--progress

Отображение прогресса выполнения.

--help

Подробная справка по параметрам команды.

--format

Формат вывода для команды show (plain, json).

Параметры создания

Используются с командой backup:

-b <backup-mode>

Выбор режима резервного копирования. Поддерживаются следующие режимы: FULL, DELTA, PAGE и PTRACK.

Параметры точки восстановления

Используются с командами restore или validate при непрерывном архивировании WAL:

--recovery-target=<immediate|latest>

Момент завершения восстановления: сразу (immediate) или после применения всех сегментов WAL (latest).

--recovery-target-timeline=<timeline>

Линия времени: immediate, latest или числовое значение.

--recovery-target-lsn=<lsn>

LSN до точки восстановления.

--recovery-target-name=<target-name>

Именованная точка сохранения.

--recovery-target-time=<time>

Точка времени для восстановления.

--recovery-target-xid=<xid>

Идентификатор транзакции для восстановления.

--recovery-target-inclusive=<boolean>

Включить целевую точку (true) или остановиться перед ней (false).

--recovery-target-action=<pause|promote|shutdown>

Действие сервера при достижении цели:

  • pause — остановка и ожидание решения администратора (используется по умолчанию);
  • promote — переключение экземпляра в основную роль;
  • shutdown — завершение работы сервера.

Параметры сохранения

Применяются с командами backup и delete:

--retention-redundancy=<retention-redundancy>

Количество полных копий для хранения (0 — отключено).

--retention-window=<retention-window>

Окно восстановления в днях (0 — отсутствует).

--wal-depth=<wal-depth>

Количество копий WAL для восстановления PITR (0 — отключено).

--delete-wal

Удаление файлов WAL, которые не являются необходимыми для восстановления кластера из имеющихся резервных копий.

--delete-expired

Удаление резервной копии, не удовлетворяющей политике хранения.

--merge-expired

Объединение старых инкрементальных копий в одну, удовлетворяющую требованиям политики хранения, с ее родительскими, срок хранения которых истек.

Параметры закрепления

Используются с командами backup и set-backup:

--ttl=interval

Время закрепления копии (0 — отмена закрепления).

--expire-time=<wal-depth>

Момент окончания хранения (формат ISO-8601).

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

Могут применяться к любой команде:

--no-color

Отключение цветового выделения warning/error.

--log-level-console=<log-level-console>

Уровень сообщений для консоли (verbose, log, info, warning, error, off – по умолчанию).

--log-filename=<log-filename>

Шаблон имени файлов журнала.

--error-log-filename=<error-log-filename>

Отдельный файл для ошибок.

--log-directory=<log-directory>

Каталог для журналов (по умолчанию $BACKUP_PATH/log/).

--log-format-console=<log-format-console>

Формат журнала консоли (text или json).

--log-format-file=<log-format-file>

Формат файлов журнала (plain или json).

--log-rotation-size=<log-rotation-size>

Максимальный размер файла для ротации (0 — отключено).

--log-rotation-age=<log-rotation-age>

Максимальное время жизни файла для ротации (0 — отключено).

Параметры подключения

Используются с командами backup, catchup и checkdb.

-d <dbname> / PGDATABASE

База для подключения.

-h <host> / PGHOST

Узел сервера (по умолчанию localhost).

-p <port> / PGPORT

Порт подключения (по умолчанию 5432).

-U <username> / PGUSER

Имя пользователя.

-w / --no-password

Отсутствие запроса пароля.

-W / --password

Запрос пароля (устаревший параметр).

Параметры сжатия

Применяются с командами backup и archive-push:

--compress-algorithm=<compress-algorithm>

Алгоритм сжатия: zlib, lz4, zstd, pglz, none (по умолчанию none).

--compress-level=<compress-level>

Уровень сжатия, зависит от алгоритма (обычно 1–9, чем выше — тем сильнее сжатие, но медленнее).

--compress

Алгоритм по умолчанию с уровнем 1 (приоритет: zlib, pglz, lz4, zstd).

Параметры архивации

Используются с командами archive-push и archive-get:

--wal-file-path=<wal-file-path>

Путь к файлу WAL.

--wal-file-name=<wal-file-name>

Имя файла WAL.

--overwrite

Перезапись файлов WAL.

--batch-size=<batch_size>

Максимальное количество WAL-файлов, которое может копироваться за один раз при archive-push или archive-get. Ускоряет архивирование и восстановление.

--archive-timeout=<archive-timeout>

Интервал времени, после которого незавершенные .part файлы считаются потерянными. По умолчанию — 300 секунд. Используется только с archive-push.

--no-ready-rename

Параметр, запрещающий переименование файлов состояния в archive_status. Полезен при нескольких командах в archive_command. Только для archive-push.

--no-sync

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

--no-validate-wal

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

Параметры удаленного режима

Параметры, отвечающие за удаленное выполнение операций pg_probackup по SSH. Применяются с командами add-instance, set-config, backup, catchup, restore, archive-push и archive-get.

--remote-proto=<protocol>

Протокол удаленного выполнения операций. Поддерживается только SSH. Возможные значения:

  • ssh — включение удаленного режима через SSH (по умолчанию);
  • none — явное отключение удаленного режима.

Можно не задавать, если указан --remote-host.

--remote-host=<host>

Имя или IP-адрес удаленного сервера.

--remote-port=<port>

Порт на удаленном сервере. По умолчанию: 22.

--remote-user=<username>

Имя пользователя для SSH-соединения на удаленной системе. Если не указано, используется текущий пользователь.

--remote-path=<path>

Каталог установки pg_probackup на удаленной системе.

--ssh-options=ssh-options

Строка дополнительных параметров SSH.

Параметры потоковой передачи WAL

Применяются с командами backup и catchup:

--stream

Создание потоковой резервной копии (STREAM), включая в нее все необходимые файлы WAL, получаемые от сервера по протоколу репликации.

--temp-slot=<true|false|on|off>

Создание временного слота физической репликации для передачи WAL с архивируемого экземпляра. По умолчанию --temp-slot включен. Это гарантирует, что все нужные сегменты WAL будут доступны, если в процессе копирования произойдет переключение сегментов WAL. Этот параметр может использоваться только вместе с параметром --stream. По умолчанию имя слота — pg_probackup_slot. Чтобы его поменять, воспользуйтесь параметром --slot/-S и явно укажите --temp-slot или --temp-slot=<true|on>.

-S <slot_name> / --slot=<slot_name>

Указание слота репликации, к которому будет выполнено подключение для передачи WAL. Этот параметр можно указать только вместе с параметром --stream.

Параметры удаленного архива WAL

Параметры для настройки аргументов archive-get при восстановлении PITR или копий типа ARCHIVE в удаленном режиме.

--archive-host=<host>

Имя или IP-адрес сервера для команды archive-get.

--archive-port=<port>

Порт удаленного сервера для archive-get. По умолчанию: 22.

--archive-user=<username>

Имя пользователя для команды archive-get.

Параметры инкрементального восстановления

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

-I / --incremental-mode=<none|checksum|lsn>

Режим инкрементального восстановления. Возможные значения:

  • CHECKSUM — замена только страницы с неподходящей контрольной суммой и LSN;
  • LSN — замена только страницы с LSN больше точки расхождения;
  • NONE — обычное восстановление.

-R / --restore-as-replica

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

--primary-conninfo=<primary_conninfo>

Установка заданного значения для параметра primary_conninfo. Это значение учитывается только при использовании параметра -R.

-S / --primary-slot-name=<slot_name>

Установка заданного значения для параметра primary_slot_name. Это значение учитывается только при использовании параметра -R.

Параметры частичного восстановления

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

--db-exclude=<dbname>

База данных, исключаемая из восстановления. Можно указать несколько раз.

--db-include=<dbname>

База данных, включаемая в восстановление. Остальные базы не восстанавливаются (кроме template0 и template1). Можно указать несколько раз.

Установка

примечание

При установке СУБД Pangolin с помощью скриптов автоматизации утилита pg_probackup устанавливается автоматически.

  1. Установите пакет pangolin-backup-tools-venv (обязательная зависимость для pangolin-backup-tools):

    sudo dnf install pangolin-backup-tools-venv-{version_component}-{OS}.x86_64.rpm

    Пример заполненной команды:

    cd distributive/3rdparty/
    tar -xzf 3rdparty.tar.gz -C ./
    sudo dnf install -y pangolin-backup-tools-venv-2.1.1-sberlinux9.x86_64.rpm
  2. Установите пакет компонента:

    sudo dnf install pangolin-backup-tools-{version_component}-{OS}.x86_64.rpm

    Пример заполненной команды:

    cd distributive
    sudo dnf install -y pangolin-backup-tools-2.1.1-sberlinux9.x86_64.rpm
Подсказка

Путь к файлу настроек по умолчанию можно изменить используя переменную окружения BACKUP_TOOLS_CONFIG_PATH_FILE.

Настройка

Инициализация и конфигурация

Хранилище резервных копий уже проинициализировано и располагается в /pgarclogs/{version}/.

Создание нового каталога для хранения резервных копий

Для инициализации каталога резервных копий выполните команду:

pg_probackup init -B <backup-path>

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

Определение экземпляра

Для определения копируемого экземпляра, выполните команду:

pg_probackup add-instance -B <backup-path> -D <pgdata-path> --instance=<instance_name>
[--external-dirs=<external-directories-pathsh>]
[--remote-proto] [--remote-host]
[--remote-port] [--remote-path] [--remote-user]
[--ssh-options]

Ручная настройка конфигурации

Для задания или изменения конфигурационных параметров экземпляра резервного копирования, используйте команду:

pg_probackup set-config -B <backup-path> --instance=<instance_name>
[-D <pgdata-path>]
[--external-dirs=<external-directories-pathsh>]
[--log-level-console=<log-level-console>]
[--log-level-file=<log-level-file>]
[--log-format-file=<log-format-file>]
[--log-filename=<log-filename>]
[--error-log-filename=<error-log-filename>]
[--log-directory=<log-directory>]
[--log-rotation-size=<log-rotation-size>]
[--log-rotation-age=<log-rotation-age>]
[--retention-redundancy=<retention-redundancy>]
[--retention-window=<retention-window>]
[--wal-depth=<wal-depth>]
[--compress-algorithm=<compress-algorithm>]
[--compress-level=<compress-level>]
[--archive-timeout=timeout]
[-d <dbname>] [-h <host>] [-p <port>] [-U <username>]
[--remote-proto] [--remote-host]
[--remote-port] [--remote-path] [--remote-user]
[--ssh-options]
[--restore-command=cmdline] [--archive-host=destination]
[--archive-port=<port>] [--archive-user=<username>]

Команда добавляет заданные параметры соединения, сжатия, хранения, ведения журнала и указания внешних каталогов в конфигурационный файл pg_probackup.conf либо изменяет ранее заданные значения.

Редактировать pg_probackup.conf вручную не рекомендуется.

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

Настройка СУБД Pangolin для организации резервного копирования

При установке СУБД Pangolin автоматизированным способом инсталлятор автоматически устанавливает и настраивает все необходимые для организации резервного копирования, расширения и утилиты:

  1. Устанавливает утилиту pg_probackup.

  2. Инициализирует локальный каталог резервных копий:

    pg_probackup init -B $PGBACKUP
  3. Определяет копируемый экземпляр (по умолчанию) резервных копий:

    pg_probackup add-instance -B $PGBACKUP -D $PGDATA --instance=<instance_name>
  4. Устанавливает параметры БД:

    wal_level = replica
    hot_standby = on
    full_pages_writes = on
    archive_mode = always
    archive_command = 'pg_probackup archive-push -B <backup-path> --instance <instance_name> --wal-file-path=%p --wal-file-name=%f --compress --overwrite -j 4'
    archive_timeout = 180
  5. Добавляет параметры работы pg_probackup:

    pg_probackup set-config -B $PGBACKUP -D $PGDATA --instance <instance_name> -d <dbname> -h <host> -p <port> -U <username>

Просмотр конфигурации pg_probackup

Для просмотра текущей конфигурации резервной копии используйте команду:

pg_probackup show-config -B /pgarclogs/{version}/ --instance=clustername [--format=plain|json]

Пример вывода:

# Backup instance information
pgdata = /pgdata/08/data
system-identifier = 6900845675447083568
xlog-seg-size = 16777216
# Connection parameters
pgdatabase = postgres
pghost = <IP-Address>
pgport = 5433
pguser = backup_user
# Replica parameters
replica-timeout = 5min
# Archive parameters
archive-timeout = 5min
# Logging parameters
log-level-console = INFO
log-level-file = OFF
log-format-console = PLAIN
log-format-file = PLAIN
log-filename = pg_probackup.log
log-rotation-size = 0TB
log-rotation-age = 0d
# Retention parameters
retention-redundancy = 0
retention-window = 0
wal-depth = 0
# Compression parameters
compress-algorithm = none
compress-level = 1
# Remote access parameters
remote-proto = ssh

Управление

Создание резервной копии

Для создания резервной копии выполните следующую команду:

pg_probackup backup -B <backup-path> -b <backup-mode> --instance=<instance_name>
[-D <pgdata-path>] [-C]
[--stream [-S <slot-name>] [--temp-slot]]
[--backup-pg-log] [-j <num-threads>] [--progress]
[--no-validate] [--skip-block-validation]
[--external-dirs=<external-directories-pathsh>]
[--no-sync]
[--log-level-console=<log-level-console>]
[--log-level-file=<log-level-file>]
[--log-format-console=<log-format-console>]
[--log-format-file=<log-format-file>]
[--log-filename=<log-filename>]
[--error-log-filename=<error-log-filename>]
[--log-directory=<log-directory>]
[--log-rotation-size=<log-rotation-size>]
[--log-rotation-age=<log-rotation-age>] [--no-color]
[--delete-expired] [--delete-wal] [--merge-expired]
[--retention-redundancy=<retention-redundancy>]
[--retention-window=<retention-window>]
[--wal-depth=<wal-depth>]
[--compress]
[--compress-algorithm=<compress-algorithm>]
[--compress-level=<compress-level>]
[--archive-timeout=<archive-timeout>]
[-d <dbname>] [-h <host>] [-p <port>] [-U <username>]
[-w --no-password] [-W --password]
[--remote-proto] [--remote-host]
[--remote-port] [--remote-path] [--remote-user]
[--ssh-options]
[--ttl=interval] [--expire-time=<wal-depth>] [--note=text]

Примеры

Создание инкрементальной резервной копии для экземпляра с использованием 4 параллельных потоков, сжатием данных, добавлением потоковых файлов WAL и автоматическим удалением устаревших копий в соответствии с политикой хранения:

pg_probackup backup -B /pgarclogs/{version}/ --instance=<instance_name> -j4 --backup-mode=DELTA --compress --stream --delete-expired

Создание полной резервной копии для указанного экземпляра с использованием 4 параллельных потоков, сжатием данных, добавлением потоковых файлов WAL и автоматическим удалением устаревших копий в соответствии с политикой хранения:

pg_probackup backup -B /pgarclogs/{version}/ --instance=<instance_name> -j4 --backup-mode=FULL --compress --stream --delete-expired

Политика хранения

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

Настройка политики хранения выполняется через файл pg_probackup.conf с помощью команды set-config, где можно указать одну или несколько следующих переменных:

--retention-redundancy=<retention-redundancy>

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

--retention-window=<retention-window>

Задает минимальный временной диапазон, за который должна быть доступна хотя бы одна резервная копия. Значение указывается в днях. Например, при retention-window=7 сохраняется как минимум одна копия старше 7 дней вместе с необходимыми файлами WAL и всеми последующими копиями.

Если заданы оба параметра (--retention-redundancy и --retention-window), очистка каталога копий учитывает оба условия. Например, комбинация --retention-redundancy=2 и --retention-window=7 означает, что pg_probackup сохранит не менее двух полных копий, а также все копии, необходимые для восстановления за последние семь дней:

pg_probackup set-config -B <backup-path> --instance=<instance_name> --retention-redundancy=2 --retention-window=7

Очистку каталога в соответствии с политикой хранения можно выполнить с помощью команды delete с соответствующими параметрами или командой backup — в последнем случае ненужные копии будут удалены сразу после создания новой.

Чтобы удалить резервные копии, признанные устаревшими в рамках текущей политики хранения, используйте параметр --delete-expired:

pg_probackup delete -B <backup-path> --instance=<instance_name> --delete-expired

Для одновременного удаления файлов WAL, которые больше не требуются ни одной из копий, добавьте параметр --delete-wal:

pg_probackup delete -B <backup-path> --instance=<instance_name> --delete-expired --delete-wal

Кроме того, параметры --retention-redundancy и --retention-window можно указать напрямую при запуске команд delete или backup, чтобы установить или переопределить политику хранения:

pg_probackup delete -B <backup-path> --instance=<instance_name> --delete-expired --retention-window=7 --retention-redundancy=2

Восстановление из резервной копии

Чтобы восстановить кластер баз данных из резервной копии, выполните команду:

pg_probackup restore -B <backup-path> --instance=<instance_name>
[-D <pgdata-path>] [-i <backup-id>] [-j <num-threads>]
[--recovery-target-time=<time>|--recovery-target-xid=<xid>|--recovery-target-lsn=<lsn> [--recovery-target-inclusive=<boolean>]]
[--recovery-target-timeline=<timeline>]
[--recovery-target=<immediate|latest>]
[--recovery-target-name=<target-name>]
[--recovery-target-action=<pause|promote|shutdown>]
[--restore-command=cmdline]
[-R | --restore-as-replica] [--force]
[--primary-conninfo=<primary_conninfo>]
[-S | --primary-slot-name=<slot_name>]
[--no-validate] [--skip-block-validation]
[-T OLDDIR=NEWDIR] [--progress]
[--external-mapping=OLDDIR=NEWDIR]
[--skip-external-dirs] [--no-sync]
[-X WALDIR | --waldir=WALDIR]
[-I | --incremental-mode=<none|checksum|lsn>]
[--db-include | --db-exclude]
[--remote-proto] [--remote-host]
[--remote-port] [--remote-path] [--remote-user]
[--ssh-options]
[--archive-host=<host>]
[--archive-port=<port>] [--archive-user=<username>]
Внимание!

Восстановить кластер из копии можно только для копий с состоянием OK или DONE.

По умолчанию восстановление идет в оригинальные каталоги. Если восстановление выполняется на том же сервере и табличные пространства уже заняты, возникнет ошибка, так как данные должны быть восстановлены в те же директории. Чтобы перенаправить размещение табличных пространств, следует использовать параметр -T.

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

Для получения непрерывной резервной копии в конфигурации СУБД должны быть включены следующие параметры:

archive_command = 'pg_probackup archive-push -B /pgarclogs/{version} --instance=clustername --wal-file-path=%p --wal-file-name=%f --compress --overwrite -j 4 --batch-size=100'
archive_mode = 'on'
archive_timeout = '180'

Также при восстановлении в некоторых случаях (например, восстановление ведомого сервера) требуется установка дополнительного параметра:

restore_command = 'pg_probackup archive-get -B /pgarclogs/{version} --instance=clustername --wal-file-path=%p --wal-file-name=%f --compress --overwrite -j 4 --batch-size=100'

В случае кластерной конфигурации данные параметры меняются через /etc/pangolin-manager/postgres.yml. Для конфигурации standalone параметры меняются через /pgdata/{version}/data/postgresql.conf.

Параметр archive_mode требует перезапуска СУБД.

Примеры

Восстановление кластера из резервной копии с идентификатором QFEZBK в каталог данных /pgdata/{version}/data для указанного экземпляра, с использованием 4 параллельных потоков, немедленным завершением восстановления при достижении согласованного состояния и выводом информации о ходе выполнения операции:

pg_probackup restore  -B /pgarclogs/{version}/ --instance=<instance_name>  -D  /pgdata/{version}/data -i QFEZBK -j 4 --recovery-target='immediate'   --progress

Восстановление кластера из резервной копии с идентификатором QFEZBK в каталог данных /pgdata/{version}/data для указанного экземпляра, с использованием 4 параллельных потоков, с указанием целевого момента восстановления 2022-12-03 12:00:03-04 и выводом информации о ходе выполнения операции:

pg_probackup restore  -B /pgarclogs/{version}/ --instance=<instance_name>  -D  /pgdata/{version}/data -i QFEZBK -j 4 --recovery-target='2022-12-03 12:00:03-04'   --progress

Проверка резервной копии

Для проверки корректности и пригодности резервной копии для восстановления, выполните команду:

pg_probackup validate -B <backup-path> [--instance=<instance_name>]
[-i <backup-id>] [--progress] [-j <num-threads>]
[--recovery-target-time=<time>|--recovery-target-xid=<xid>|--recovery-target-lsn=<lsn> [--recovery-target-inclusive=<boolean>]]
[--recovery-target-timeline=<timeline>]
[--recovery-target-name=<target-name>]
[--skip-block-validation]

Например:

pg_probackup validate -B /pgarclogs/{version}/ --instance=clustername

Пример вывода:

INFO: Validate backups of the instance 'clustername'
INFO: Validating backup T1AI3F
INFO: Backup T1AI3F data files are valid
INFO: Backup T1AI3F WAL segments are valid
INFO: All backups are valid

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

Если проверка прошла успешно, выводится сообщение об успешной валидации.

В случае ошибки будет выведено сообщение с указанием:

  • точки времени;
  • идентификатора транзакции (XID);
  • значения LSN, до которых возможно восстановление.

Если указан параметр -i backup-id, проверяется только одна резервная копия с указанным идентификатором.

Если -i указан вместе с параметрами --recovery-target-*, проверяется возможность восстановления этой конкретной копии до заданной точки. Если backup-id относится к инкрементальной копии, дополнительно будут проверены все родительские копии, начиная с полной.

Если параметры не заданы, проверяются все резервные копии в каталоге.

Проверка базы данных

Чтобы убедиться в отсутствии повреждений в кластере, выполните следующую команду:

pg_probackup checkdb [-B <backup-path>] [--instance=<instance_name>]
[-D <pgdata-path>] [--progress] [-j <num-threads>]
[--amcheck] [--skip-block-validation]
[--heapallindexed] [--checkunique]

По умолчанию pg_probackup выполняет проверку страниц автоматически в процессе создания резервной копии.

Команда checkdb позволяет запускать проверку страниц в кластере отдельно, без создания резервной копии. Для ее выполнения не требуется предварительная настройка копирования кластера в pg_probackup.

Чтобы провести проверку, приложению pg_probackup необходимо подключиться к целевому кластеру:

  • Обычно достаточно указать экземпляр кластера, зарегистрированный в pg_probackup.
  • Если параметры -B и --instance не заданы, то параметры подключения и путь к каталогу данных необходимо указать явно в командной строке или через переменные окружения.

Можно отключить физическую проверку с помощью параметра --skip-block-validation. В этом случае указывать каталог копий и каталог данных не требуется, достаточно задать только параметры подключения.

Для более глубокой диагностики можно использовать расширение amcheck (параметр --amcheck), которое выполняет проверку всех индексов во всех базах данных. Дополнительный параметр --heapallindexed позволяет убедиться, что все кортежи таблиц действительно представлены в индексах.

Просмотр списка резервных копий

Чтобы посмотреть сведения о хранилище резервных копий, выполните:

pg_probackup show -B /pgarclogs/{version}/

Пример вывода:

BACKUP INSTANCE 'clustername'
============================================================================================================================================
Instance Version ID Recovery time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
============================================================================================================================================
clustername 06 PYSUE8 2020-12-21 15:51:48+03 FULL ARCHIVE 1/0 16s 9047kB 16MB 4.31 0/12000028 0/12000160 OK

Для каждой копии выдаются следующие сведения:

Параметр

Описание

Instance

Имя экземпляра СУБД Pangolin

Version

Базовая версия

ID

Идентификатор резервной копии

Recovery time

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

Mode

Режим, в котором была сделана копия. Возможные значения: FULL (полная), PAGE (страничная), DELTA (инкрементальная), PTRACK (копирование изменений)

WAL Mode

Режим доставки WAL. Возможные значения: STREAM (потоковый) и ARCHIVE (архивный)

TLI

Идентификаторы линии времени текущей копии и ее родителя

Time

Время, за которое была выполнена данная копия

Data

Объем файлов данных в этой копии. Значение не включает объем файлов WAL. Для копий в режиме STREAM общий размер = Data + WAL

WAL

Размер несжатых файлов WAL, которые должны быть применены для достижения согласованного состояния

Zratio

Коэффициент сжатия: отношение «uncompressed-bytes» к «data-bytes»

Start LSN

Последовательный номер в журнале WAL, соответствующий началу копирования. С этой позиции накатываются изменения (REDO)

Stop LSN

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

Status

Состояние резервной копии. Возможные варианты:

  • OK — резервная копия сделана и пригодна к использованию;
  • DONE — резервная копия сделана, но не проверена;
  • RUNNING — резервное копирование выполняется;
  • MERGING — резервная копия объединяется;
  • MERGED — файлы резервной копии были успешно обработаны в процессе объединения копий, но ее метаданные еще изменяются. Это состояние могут иметь только полные резервные копии;
  • DELETING — файлы резервной копии удаляются;
  • CORRUPT — некоторые файлы резервной копии повреждены;
  • ERROR — резервное копирование было прервано из-за неожиданной ошибки;
  • ORPHAN — резервная копия непригодна к использованию, так как ее родительская копия испорчена или отсутствует

Примеры

Чтобы получить более подробную информацию о копии, укажите в команде show ее идентификатор:

pg_probackup show -B /pgarclogs/{version}/ --instance=<instance_name> -i <backup-id>

Для получения сведений об архиве WAL файлов выполните следующую команду:

pg_probackup show -B /pgarclogs/{version}/ --instance=clustername --archive

Пример вывода:

ARCHIVE INSTANCE 'clustername'
================================================================================================================================
TLI Parent TLI Switchpoint Min Segno Max Segno N segments Size Zratio N backups Status
================================================================================================================================
10 0 0/0 0000000A00000017000000E6 0000000A00000017000000F9 20 13MB 25.52 0 OK
9 0 0/0 0000000900000017000000E3 0000000900000017000000E5 3 216kB 227.44 0 OK

Для каждой линии времени выдаются следующие сведения:

Параметр

Описание

TLI

Идентификатор линии времени

Parent TLI

Идентификатор линии времени, от которой была ответвлена данная

Switchpoint

LSN момента, когда эта линия времени ответвилась от родительской

Min Segno

Первый сегмент WAL, относящийся к этой линии времени

Max Segno

Последний сегмент WAL, относящийся к этой линии времени

N segments

Количество сегментов WAL, относящихся к этой линии времени

Size

Объем, который занимают файлы на диске

Zratio

Коэффициент сжатия, вычисляемый по формуле: N segments * wal_segment_size * wal_block_size / Size

N backups

Число копий, относящихся к этой линии времени. Для получения подробных сведений об этих копиях используйте формат JSON

Status

Состояние архива WAL для этой линии времени. Возможные значения:

  • OK — в архиве присутствуют все сегменты WAL между Min Segno и Max Segno;
  • DEGRADED — некоторые сегменты WAL в интервале отсутствуют. Чтобы понять, какие именно, получите отчет в формате JSON

Редактирование параметров резервной копии

Для изменения времени жизни или добавления заметки, выполните команду:

pg_probackup set-backup -B <backup-path> --instance=<instance_name>
-i <backup-id> [--ttl=interval] [--expire-time=<wal-depth>]
[--note=text]

Управление резервными копиями

Удаление

Для удаления ненужной резервной копии, выполните команду:

pg_probackup delete -B <backup-path> --instance=<instance_name>
[-j <num-threads>] [--progress]
[--retention-redundancy=<retention-redundancy>]
[--retention-window=<retention-window>]
[--wal-depth=<wal-depth>]
[-i <backup-id> | --delete-expired | --merge-expired | --status=backup_status]
[--delete-wal]
[--dry-run] [--no-validate] [--no-sync]

Команда delete позволяет удалять ненужные резервные копии и связанные с ними файлы. Если указать идентификатор копии через параметр -i <backup-id>, будет удалена сама резервная копия и все ее зависимые инкрементальные копии (если такие есть). Это позволяет, удалить несколько последних инкрементальных копий, при этом сохранив предыдущую полную копию и часть следующих за ней копий.

Для очистки устаревших файлов WAL, которые больше не требуются для восстановления оставшихся резервных копий, используйте параметр --delete-wal.

Команда delete позволяет удалять резервные копии, которые считаются ненужными согласно установленной политике хранения. Чтобы удалить копии с истекшим сроком хранения, используйте параметр --delete-expired.

примечание

Копии с истекшим сроком нельзя удалить, если на них базируется хотя бы одна инкрементальная копия, удовлетворяющая политике хранения.

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

В этом случае pg_probackup:

  • Находит самую старую инкрементальную копию, удовлетворяющую политике хранения.
  • Объединяет ее с базовой полной копией и всеми ее инкрементальными копиями, срок хранения которых истек.
  • После завершения объединения устаревшие копии удаляются.

Перед удалением или объединением копий можно выполнить команду delete --dry-run. Это позволит получить текущее состояние всех резервных копий по политике хранения без выполнения каких-либо необратимых действий.

Чтобы удалить все копии с конкретным состоянием, используйте параметр --status=<backup_status>. При этом установленная политика хранения не учитывается — будут удалены все копии с указанным статусом.

Объединение

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

pg_probackup merge -B <backup-path> --instance=<instance_name>
-i <backup-id> [--progress] [-j <num-threads>]
[--no-validate] [--no-sync]

Если выбран идентификатор полной копии, она объединяется с ближайшей последующей инкрементальной копией.

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

После выполнения операции:

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

Таким образом, результат объединения эквивалентен созданию новой полной копии, но операция выполняется значительно быстрее и эффективнее, чем обычное резервное копирование. Она не создает высокой нагрузки на подсистему ввода/вывода и сеть. Это важно при использовании pg_probackup в удаленном режиме.

Перед началом объединения, pg_probackup проверяет целостность всех копий, участвующих в операции.

Состояния операции:

  • MERGING — операция объединения в процессе;
  • MERGED — финальный этап объединения, когда изменяются метаданные полной копии.

Если операция объединения прерывается, ее можно безопасно перезапустить.

Архивация WAL

Отправка WAL

Для отправки файлов WAL в архив, выполните команду:

pg_probackup archive-push -B <backup-path> --instance=<instance_name>
--wal-file-name=<wal-file-name>
[--wal-file-path=<wal-file-path>]
[-j <num-threads>] [--batch-size=<batch_size>]
[--archive-timeout=timeout]
[--no-ready-rename] [--no-sync]
[--overwrite] [--compress]
[--compress-algorithm=<compress-algorithm>]
[--compress-level=<compress-level>]
[--remote-proto] [--remote-host]
[--remote-port] [--remote-path] [--remote-user]
[--ssh-options]

Получение WAL

Для извлечения файлов WAL из архива, выполните команду:

pg_probackup archive-get -B <backup-path> --instance=<instance_name>
--wal-file-path=<wal-file-path>
--wal-file-name=<wal-file-name>
[-j <num-threads>] [--batch-size=<batch_size>]
[--no-validate-wal]
[--remote-proto] [--remote-host]
[--remote-port] [--remote-path] [--remote-user]
[--ssh-options]

Удаленная синхронизация

В pg_probackup реализована команда catchup, которая позволяет создать копию экземпляра сервера СУБД Pangolin напрямую, не используя каталог резервных копий. Инициализация данных локального узла с удаленного сервера:

pg_probackup catchup -b catchup-mode
--source-pgdata=<path_to_pgdata_on_remote_server>
--destination-pgdata=<path_to_local_dir>
[--stream [-S <slot-name>] [--temp-slot | --perm-slot]]
[-j <num-threads>]
[-T OLDDIR=NEWDIR]
[--exclude-path=<path_prefix>]
[-d <dbname>] [-h <host>] [-p <port>] [-U <username>]
[-w --no-password] [-W --password]
[--remote-proto] [--remote-host]
[--remote-port] [--remote-path] [--remote-user]
[--ssh-options]
[--dry-run]

Операция catchup отличается от остальных команд pg_probackup следующими особенностями:

  • В отличие от обычных резервных копий, catchup работает напрямую с исходным и целевым экземплярами СУБД Pangolin.
  • Поддерживается только режим STREAM для передачи WAL-файлов.
  • Копирование внешних каталогов не поддерживается.
  • Файлы конфигурации (postgresql.conf, postgresql.auto.conf, pg_hba.conf) копируются с исходного сервера и заменяют соответствующие файлы на целевом сервере. Для того чтобы сохранить конфигурационные файлы на целевом сервере без изменений, используйте параметр --exclude-path.

Перед клонированием/синхронизацией убедитесь, что исходный сервер запущен и принимает подключения. Перед синхронизацией можно выполнить команду с параметром --dry-run. Это позволит оценить объем данных, которые будут переданы, без внесения изменений на диск.

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

Для ускорения передачи данных catchup можно запускать в нескольких потоках, используя параметр --threads=<num_threads>.

Общие команды

Вывод справки об утилите или команде:

pg_probackup help [COMMAND]

Версия утилиты:

pg_probackup version

Удаление экземпляра из каталога резервных копий

Чтобы удалить все резервные копии и файлы WAL, связанные с указанным экземпляром, выполните команду:

pg_probackup del-instance -B <backup-path>
--instance=<instance_name>

Сценарии использования

Снятие резервной копии с реплики

Функция резервного копирования позволяет снять с базы данных архивную копию, которую в дальнейшем можно использовать для восстановления. СУБД Pangolin поддерживает создание резервной копии как с лидера, так и с реплики.

Резервное копирование выполняется командой:

PGPASSWORD={backup_pass} pg_probackup backup -B {PGBACKUP} --instance {cluster_name} -b FULL

Восстановление из резервной копии:

pg_probackup restore -B {PGBACKUP} --instance {cluster_name} --recovery-target='latest'

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

Использование pg_probackup на клиентском хосте с подключением к KMS-серверу

Предусловия

  1. На клиентском хосте установлены пакеты pangolin-backup-tools, pangolin-backup-tools-venv и pangolin-security-utilities.
  2. На клиентском хосте доступна лицензия Pangolin в файле /opt/pangolin_license/license.json.
  3. На сервере запущен экземпляр СУБД Pangolin с включенным TDE.
  4. Клиентский хост имеет сетевой доступ к KMS-серверу, который используется серверной частью.
  5. Для клиентского хоста доступен корневой сертификат KMS-сервера.
  6. Между клиентским хостом и сервером настроен SSH-доступ от имени пользователя postgres.
  7. На сервере в pg_hba.conf разрешены подключения пользователя postgres с клиентского хоста, а также репликационные подключения для потоковой передачи WAL.

Подготовка клиентского хоста

  1. Установите на клиентском хосте необходимые пакеты.

    На клиентском хосте должны быть доступны утилиты pg_probackup и setup_kms_credentials.

  2. Настройте SSH-доступ от клиента к серверу для пользователя postgres.

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

  3. Скопируйте с серверного хоста корневой сертификат KMS и разместите его на клиентском хосте, например в каталоге /pg_ssl/root.crt.

    Этот сертификат потребуется для подключения к KMS-серверу.

  4. Настройте на клиентском хосте подключение к KMS с помощью утилиты setup_kms_credentials.

    sudo su - kmadmin_pg
    setup_kms_credentials \
    -c <kms_cluster_name> \
    -r /pg_ssl/root.crt \
    -u <kms_user> \
    -h <kms_host> \
    -p <kms_port> \
    -l 2 \
    -x kv \
    -t 1 \
    -i adminencryption

    После выполнения команды на клиентском хосте будет создана конфигурация подключения к KMS.

  5. Подготовьте на клиентском хосте каталог данных и каталог global.

    sudo rm -rf /pgdata
    sudo mkdir -p /pgdata/06/data/global
    sudo chmod 700 /pgdata
    sudo chown -R postgres:postgres /pgdata

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

  6. Скопируйте с сервера в каталог /pgdata/06/data/global клиентского хоста файлы enc_keys.json, pg_control, enc_settings.cfg и wal_keys.json.

    На клиентском хосте будет подготовлен минимально необходимый набор служебных файлов для работы pg_probackup с экземпляром, использующим TDE.

Выполнение резервного копирования

  1. Инициализируйте каталог резервных копий и добавьте экземпляр в pg_probackup.

    sudo su - postgres
    pg_probackup init -B /home/postgres/backup_data_remote/
    pg_probackup add-instance \
    -B /home/postgres/backup_data_remote/ \
    -D /pgdata/06/data \
    --instance=<instance_name>

    Каталог резервных копий и экземпляр будут инициализированы.

  2. Выполните полную резервную копию удаленного экземпляра.

    pg_probackup backup \
    -B /home/postgres/backup_data_remote/ \
    -D /pgdata/06/data \
    --instance=<instance_name> \
    -j 4 \
    -b FULL \
    --compress \
    --stream \
    --remote-host=<server_host> \
    --remote-user=postgres \
    -p 5433 \
    -U postgres \
    -d postgres \
    --ssh-options='-o StrictHostKeyChecking=no'

    На клиентском хосте будет создана полная резервная копия удаленного экземпляра.

Восстановление резервной копии на клиентский хост

  1. Очистите каталог данных на клиентском хосте.

    Каталог данных будет подготовлен к восстановлению.

  2. Выполните восстановление резервной копии в каталог данных клиентского хоста.

    pg_probackup restore \
    -B /home/postgres/backup_data_remote/ \
    -D /pgdata/06/data \
    --instance=<instance_name> \
    --stream

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

Восстановление резервной копии на сервер

  1. Остановите экземпляр на сервере и очистите целевой каталог данных.

    Серверный каталог данных будет подготовлен к восстановлению.

  2. Выполните восстановление с клиентского хоста на сервер.

    pg_probackup restore \
    -B /home/postgres/backup_data_remote/ \
    -D /pgdata/06/data \
    --instance=<instance_name> \
    --stream \
    --remote-host=<server_host> \
    --remote-user=postgres \
    -p 5433 \
    -U postgres \
    -d postgres

    Содержимое резервной копии будет восстановлено на сервер.

  3. Запустите экземпляр на сервере и проверьте его доступность.

    После запуска экземпляр должен успешно принимать подключения.

Использование pg_probackup на клиентском хосте с KMS-заменителем

Предусловия

  1. На клиентском хосте установлены пакеты pangolin-backup-tools, pangolin-backup-tools-venv и pangolin-security-utilities.
  2. На клиентском хосте доступна лицензия Pangolin в файле /opt/pangolin_license/license.json.
  3. На сервере запущен экземпляр СУБД Pangolin с включенным TDE.
  4. Между клиентским хостом и сервером настроен SSH-доступ от имени пользователя postgres.
  5. На клиентском хосте подготовлены параметры, необходимые для работы KMS-заменителя.
  6. На сервере в pg_hba.conf разрешены подключения пользователя postgres с клиентского хоста, а также репликационные подключения для потоковой передачи WAL.

Подготовка клиентского хоста

  1. Установите на клиентском хосте необходимые пакеты.

    На клиентском хосте должны быть доступны pg_probackup, encrypt_params_file и плагины для работы с KMS-заменителем.

  2. Настройте SSH-доступ от клиента к серверу для пользователя postgres.

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

  3. Создайте на клиентском хосте файлы kms_static_params.cfg и kms_dynamic_params.cfg в каталоге /etc/pangolin-security-utilities/.

    На клиентском хосте будет создана конфигурация KMS-заменителя.

  4. Заполните файл kms_static_params.cfg параметрами мастер-ключа, ключа WAL и других ключей кодирования, необходимых для доступа к данным, для которых включено TDE.

    В конфигурации KMS-заменителя должны быть заданы необходимые ключевые параметры.

  5. Заполните файл kms_dynamic_params.cfg параметрами режима работы KMS-заменителя.

    После этого будут определены параметры работы KMS-заменителя на клиентском хосте.

  6. Выполните обработку файла kms_static_params.cfg с помощью утилиты encrypt_params_file.

    sudo su - kmadmin_pg
    /opt/pangolin-security-utilities/bin/encrypt_params_file

    Файл kms_static_params.cfg будет подготовлен к использованию KMS-заменителем.

  7. Переключите библиотеку коннектора pg_probackup на плагин KMS-заменителя.

    sudo rm -f /opt/pangolin-backup-tools/lib/libconnector_plugin.so
    sudo su - postgres
    ln -s /opt/pangolin-backup-tools/lib/plugins/libkms_substitute_plugin.so \
    /opt/pangolin-backup-tools/lib/libconnector_plugin.so

    После этого pg_probackup на клиентском хосте будет использовать KMS-заменитель вместо подключения к внешнему KMS.

  8. Подготовьте на клиентском хосте каталог данных и каталог global.

    sudo rm -rf /pgdata
    sudo mkdir -p /pgdata/06/data/global
    sudo chmod 700 /pgdata
    sudo chown -R postgres:postgres /pgdata

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

  9. Скопируйте с сервера в каталог /pgdata/06/data/global клиентского хоста файлы enc_keys.json, pg_control, enc_settings.cfg и wal_keys.json.

    На клиентском хосте будет подготовлен минимально необходимый набор служебных файлов для работы pg_probackup с экземпляром, использующим TDE.

Выполнение резервного копирования

  1. Инициализируйте каталог резервных копий и добавьте экземпляр в pg_probackup.

    sudo su - postgres
    pg_probackup init -B /home/postgres/backup_data_remote/
    pg_probackup add-instance \
    -B /home/postgres/backup_data_remote/ \
    -D /pgdata/06/data \
    --instance=<instance_name>

    Каталог резервных копий и экземпляр будут инициализированы.

  2. Выполните полную резервную копию удаленного экземпляра.

    pg_probackup backup \
    -B /home/postgres/backup_data_remote/ \
    -D /pgdata/06/data \
    --instance=<instance_name> \
    -j 4 \
    -b FULL \
    --compress \
    --stream \
    --remote-host=<server_host> \
    --remote-user=postgres \
    -p 5433 \
    -U postgres \
    -d postgres \
    --ssh-options='-o StrictHostKeyChecking=no'

    На клиентском хосте будет создана полная резервная копия удаленного экземпляра.

Восстановление резервной копии на клиентский хост

  1. Очистите каталог данных на клиентском хосте.

    Каталог данных будет подготовлен к восстановлению.

  2. Выполните восстановление резервной копии в каталог данных клиентского хоста.

    pg_probackup restore \
    -B /home/postgres/backup_data_remote/ \
    -D /pgdata/06/data \
    --instance=<instance_name> \
    --stream

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

Восстановление резервной копии на сервер

  1. Остановите экземпляр на сервере и очистите целевой каталог данных.

    Серверный каталог данных будет подготовлен к восстановлению.

  2. Выполните восстановление с клиентского хоста на сервер.

    pg_probackup restore \
    -B /home/postgres/backup_data_remote/ \
    -D /pgdata/06/data \
    --instance=<instance_name> \
    --stream \
    --remote-host=<server_host> \
    --remote-user=postgres \
    -p 5433 \
    -U postgres \
    -d postgres

    Содержимое резервной копии будет восстановлено на сервер.

  3. Запустите экземпляр на сервере и проверьте его доступность.

    После запуска экземпляр должен успешно принимать подключения.