F.26. pg_arman

F.26.1. Имя

pg_arman — менеджер резервного копирования и восстановления для Postgres Pro

F.26.2. Синтаксис

pg_arman [ OPTIONS ]
    { init |
      backup |
      restore |
      show [ DATE | timeline ] |
      validate [ DATE ] |
      delete DATE }

Здесь DATE задаёт время начала резервного копирования в формате ISO: (YYYY-MM-DD HH:MI:SS). Заданная дата сравнивается с именами файлов резервных копий как префикс.

F.26.3. Описание

pg_arman — это служебная программа для резервного копирования и восстановления базы данных Postgres Pro.

Она предоставляет следующие возможности:

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

  • Восстановление из резервной копии всего одной командой, с нестандартными вариантами, включая использование PITR.

  • Поддержка полного и дифференциального копирования + дифференциальное копирование ptrack

  • Управление резервными копиями со встроенными каталогами

F.26.4. Команды

pg_arman поддерживает следующие команды. Дополнительные подробности описаны в разделе Параметры.

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

  • backup:
    Выполнить резервное копирование «на ходу».

  • restore:
    Выполнить восстановление.

  • show:
    Показать историю резервного копирования. С параметром timeline показывается линия времени резервной копии и линия времени родителя для каждой копии.

  • validate:
    Проверить файлы резервных копий.

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

F.26.4.1. Инициализация

Сначала вы должны создать «каталог резервного копирования», в котором будут храниться файлы копий и их метаданные. До инициализации этого каталога рекомендуется настроить параметры archive_mode и archive_command в postgresql.conf. Если переменные инициализированы, pg_arman может скорректировать файл конфигурации. В этом случае вы должны задать путь к кластеру баз данных для Postgres Pro. Его можно задать в переменной окружения PGDATA или в параметре -D/--pgdata.

$ pg_arman init -B /path/to/backup/

F.26.4.2. Резервное копирование

Возможен один из следующих вариантов резервного копирования:

  • Полное резервное копирование, копируется весь кластер баз данных.

  • Дифференциальное резервное копирование: копируются только файлы или страницы, изменённые после последней проверенной копии. Для этого выполняется сканирование записей WAL от позиции последнего копирования до LSN выполнения pg_start_backup и все изменённые блоки записываются и отслеживаются как часть резервной копии. Так как просканированные сегменты WAL должны находиться в архиве WAL, последний сегмент, задействованный после запуска pg_start_backup, должен быть переключен принудительно.

  • Дифференциальная копия ptrack, использует файл битовой карты ptrack для отслеживания изменённых страниц. Чтобы использовать этот вариант, необходимо задать для параметра ptrack_enable значение "on".

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

F.26.4.3. Восстановление

Сервер Postgres Pro должен быть остановлен до начала восстановления. Если кластер баз данных всё ещё существует, команда восстановления сохранит незаархивированный журнал транзакций и удалит все файлы баз данных. После восстановления файлов pg_arman создаёт recovery.conf в $PGDATA. Этот конфигурационный файл содержит параметры для восстановления. Также возможно отредактировать этот файл вручную.

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

Если ключ "--recovery-target-timeline" не задан, целевой линией восстановления будет TimeLineID последней контрольной точки в управляющем файле ($PGDATA/global/pg_control). Если файл pg_control отсутствует, целевой линией будет TimeLineID в полной резервной копии, используемой при восстановлении.

F.26.4.4. Примеры

Чтобы уменьшить число аргументов командной строки, вы можете установить в переменной окружения BACKUP_PATH абсолютный путь к каталогу резервного копирования и записать конфигурацию в файл {BACKUP_PATH}/pg_arman.ini.

$ cat $BACKUP_PATH/pg_arman.ini
ARCLOG_PATH = /home/postgres/arclog
BACKUP_MODE = FULL
KEEP_DATA_GENERATIONS = 3
KEEP_DATA_DAYS = 120

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

Этот пример демонстрирует создание полной резервной копии всей базы данных с последующей проверкой всех непроверенных копий.

$ pg_arman backup --backup-mode=full
$ pg_arman validate

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

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

$ pg_ctl stop -m immediate
$ pg_arman restore
$ pg_ctl start

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

$ pg_arman show
===================================================================================
Start                Mode  Current TLI  Parent TLI  Time    Data   Backup   Status 
===================================================================================
2013-12-25 03:02:31  PAGE            1           0    0m   203kB     67MB   DONE
2013-12-25 03:02:31  PAGE            1           0    0m      0B       0B   ERROR
2013-12-25 03:02:25  FULL            1           0    0m    33MB    364MB   OK

Команда выводит следующие поля:

  • Start: время начала копирования

  • Mode: режим резервного копирования: FULL (полный) или PAGE (дифференциальный по страницам) или PTRACK (дифференциальный по ptrack)

  • Current TLI: текущая линия времени резервной копии

  • Parent TLI: родительская линия времени резервной копии

  • Time: время, потребовавшееся для выполнения создания резервной копии

  • Data: размер файлов данных

  • Log: размер прочитанных файлов журналов сервера

  • Backup: размер резервной копии (= записанный размер)

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

    • OK: резервная копия сделана и проверена.

    • DONE: резервная копия сделана, но ещё не проверена.

    • RUNNING: резервная копия выполняется.

    • DELETING: резервная копия удаляется.

    • DELETED: резервная копия удалена.

    • ERROR: резервная копия недоступна, так как в процессе копирования произошли ошибки.

    • CORRUPT: резервная копия недоступна, так как она испорчена.

Когда указывается дата, выдаются дополнительные подробности о резервной копии:

$ pg_arman show '2011-11-27 19:15:45'
# configuration
BACKUP_MODE=FULL
# result
TIMELINEID=1
START_LSN=0/08000020
STOP_LSN=0/080000a0
START_TIME='2011-11-27 19:15:45'
END_TIME='2011-11-27 19:19:02'
RECOVERY_XID=1759
RECOVERY_TIME='2011-11-27 19:15:53'
DATA_BYTES=25420184
BLOCK_SIZE=8192
XLOG_BLOCK_SIZE=8192
STATUS=OK

Вы можете определить "RECOVERY_XID" и "RECOVERY_TIME", которые будут использоваться для параметров восстановления "--recovery-target-xid", "--recovery-target-time".

Команда delete удаляет файлы резервных копий, не требующиеся для восстановления, после указанной даты. Эта команда также вычищает в архиве WAL все сегменты журналов, оказавшиеся ненужными для восстановления из оставшихся копий.

F.26.4.8. Параметры

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

F.26.4.9. Общие параметры

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

-D PATH / --pgdata=PATH:
 Абсолютный путь кластера баз данных. Требуется при резервном копировании и восстановлении.

-A PATH / --arclog-path=PATH:
 Абсолютный путь каталога архива WAL. Требуется для команд восстановления и просмотра.

-B PATH / --backup-path=PATH:
 Абсолютный путь каталога резервного копирования. Этот параметр является обязательным.

-c / --check:
 Если указывается, pg_arman не выполняет фактических действий, а только проверяет параметры и требуемые ресурсы. Этот параметр обычно используется с ключом --verbose для проверки корректности операции.

F.26.4.10. Параметры резервного копирования

-b BACKUPMODE / --backup-mode==BACKUPMODE:
 Задаёт режим резервного копирования. Возможные варианты: "full", "page" или "ptrack".

-C1 / --smooth-checkpoint:
 При каждом резервном копировании выполняется контрольная точка. Если задан этот параметр, выполняется «мягкая» контрольная точка. См. также описание второго аргумента pg_start_backup().

--validate:
 Проверить резервную копию после её создания. Другие резервные копии, созданные ранее, игнорируются.

--keep-data-generations=NUMBER / --keep-data-days=DAYS:
 Задаёт, как долго будут храниться скопированные файлы данных. Ключ --keep-data-generations задаёт число поколений копирования, а --keep-data-days — число дней, которое будет храниться данные. Удаляться будет только те файлы, для которых превышается одно из этих ограничений.

-j=NUMBER / --threads=NUMBER: Число потоков для процесса резервного копирования.

--stream: Включает потоковую репликацию для сохранения WAL в процессе резервного копирования.

--disable-ptrack-clear: Отключает очистку файлов ptrack для postgres без дополнения ptrack.

F.26.4.11. Параметры восстановления

Параметры с именами, начинающимися с --recovery, относятся к тем же параметрам, что и в recovery.conf.

--recovery-target-timeline=TIMELINE:
 Устанавливает восстановление в определённую линию времени. Если не задано, используется текущая линия времени.

--recovery-target-time=TIMESTAMP:
 Этот параметр задаёт отметку времени, до которой будет выполняться восстановление.

--recovery-target-xid=XID:
 Этот параметр задаёт идентификатор транзакции, до которой будет выполняться восстановление.

--recovery-target-inclusive:
 Указывает, будет ли сервер приостановлен по достижении цели восстановления.

-j=NUMBER / --threads=NUMBER: Число потоков для восстановления.

--stream: Восстановить без recovery.conf и использовать WAL в pg_xlog. Перед этим вы должны сделать резервную копию с ключом --stream. Этот параметр отключит все параметры --recovery-.

F.26.4.12. Параметры каталога

-a / --show-all:
 Показать все существующие копии, включая удалённые.

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

Параметры для подключения к серверу Postgres Pro.

-d DBNAME / --dbname=DBNAME:
 Имя базы данных, к которой нужно подключиться для выполнения pg_start_backup() and pg_stop_backup().

-h HOSTNAME / --host=HOSTNAME:
 Указывает имя компьютера, на котором работает сервер. Если значение начинается с косой черты, оно определяет каталог Unix-сокета.

-p PORT / --port=PORT:
 Указывает TCP-порт или расширение файла локального Unix-сокета, через который сервер принимает подключения.

-U USERNAME / --username=USERNAME:
 Имя пользователя, под которым производится подключение.

-w / --no-password:
 Не выдавать запрос на ввод пароля. Если сервер требует аутентификацию по паролю и пароль недоступен с помощью других средств, таких как файл .pgpass, попытка соединения не удастся. Этот параметр может быть полезен в пакетных заданиях и скриптах, где нет пользователя, который вводит пароль.

-W / --password:
 Принудительно запрашивать пароль перед подключением к базе данных. Это несущественный параметр, так как pg_arman запрашивает пароль автоматически, если сервер проверяет подлинность по паролю. Однако, чтобы понять это, pg_arman лишний раз подключается к серверу. Поэтому иногда имеет смысл ввести -W, чтобы исключить эту ненужную попытку подключения.

F.26.4.14. Глобальные параметры

--help:
 Показать справку, затем завершиться.

-V / --version:
 Показать версию, затем завершиться.

-v / --verbose:
 С этим ключом pg_arman при работе выводит подробные сообщения.

F.26.5. Параметры

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

Short   Long                    Env                     File
-h      --host                  PGHOST                  No
-p      --port                  PGPORT                  No
-d      --dbname                PGDATABASE              No
-U      --username              PGUSER                  No
                                PGPASSWORD              No
-w      --password                                      No
-W      --no-password                                   No
-D      --pgdata                PGDATA                  Yes
-B      --backup-path           BACKUP_PATH             Yes
-A      --arclog-path           ARCLOG_PATH             Yes
-b      --backup-mode           BACKUP_MODE             Yes
-C      --smooth-checkpoint     SMOOTH_CHECKPOINT       Yes
        --validate              VALIDATE                Yes
        --keep-data-generations KEEP_DATA_GENERATIONS   Yes
        --keep-data-days        KEEP_DATA_DAYS          Yes
        --recovery-target-timeline RECOVERY_TARGET_TIMELINE Yes
        --recovery-target-xid   RECOVERY_TARGET_XID     Yes
        --recovery-target-time  RECOVERY_TARGET_TIME    Yes
        --recovery-target-inclusive RECOVERY_TARGET_INCLUSIVE Yes

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

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

F.26.6. Ограничения

pg_arman имеет ряд ограничений, которые описаны ниже.

  • Требуется права чтения каталога баз данных и записи в каталог резервного копирования. Обычно для этого на сервере БД требуется смонтировать диск, где размещён каталог резервных копий, используя NFS или другую технологию.

  • Основные версии pg_arman и сервера должны совпадать.

  • Размеры блоков pg_arman и сервера должны совпадать.

  • Если в каталоге с журналами сервера или каталоге с архивом WAL оказываются нечитаемые файлы/каталоги, резервное копирование или восстановление завершится сбоем, вне зависимости от выбранного режима копирования.

F.26.7. Подробности

F.26.7.1. Восстановление на момент времени

pg_arman может произвести восстановление на момент времени, если в recovery.conf задаётся линия времени и идентификатор транзакции или время. Чтобы определить момент для восстановления, может быть полезен дополнительный модуль xlogdump, входящий в основной набор модулей Postgres Pro и позволяющий просматривать содержимое файлов WAL.

F.26.7.2. Файл конфигурации

Установка параметров в файле конфигурации выполняется в виде "имя=значение". Кавычки требуются, если значение содержит пробелы. Комментарии начинаются с "#" и автоматически игнорируются при разборе. Пробелы и табуляции игнорируются везде, кроме содержимого значений.

F.26.7.3. Ограничения

  • Чтобы pg_arman работал, в экземпляре Postgres Pro, в котором выполняются резервное копирование, должны быть включены контрольные суммы данных или параметр wal_log_hints.

  • pg_arman рассчитан на работу с Postgres Pro 9.5 и более новыми версиями.

  • Для использования функции ptrack потребуется особая версия Postgres и уровень wal_level, равный archive или hot_standby; также необходимо включить параметр ptrack_enable.

  • Для трансляции потока вы должны настроить потоковую репликацию на вашем сервере Postgres Pro.

F.26.7.4. Код ошибки

pg_arman возвращает следующие коды выхода для различных состояний ошибок.

Код     Имя                     Описание
0       SUCCESS                 Операция успешна
1       ERROR                   Общая ошибка
2       FATAL                   Выход из-за повторяющихся ошибок
3       PANIC                   Необрабатываемое критическое состояние

F.26.8. Автор

pg_arman — это ответвление проекта pg_arman, изначально разрабатываемого в NTT. Теперь его разрабатывает и поддерживает Микаэль Пакье. Потоки, поддержка дифференциальных копий с WAL и ptrack, поддержка трансляции WAL и некоторые другие функции разработал Юрий Журавлёв (stalkerg) из компании PostgresPro.

Пожалуйста сообщайте об ошибках на странице https://github.com/postgrespro/pg_arman/issues.

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy