qhb_basebackup - резервное копирование кластера QHB

qhb_basebackup - создать резервную копию кластера QHB

Синтаксис

qhb_basebackup [option...]

Описание

qhb_basebackup используется для создания резервных копий работающего кластера баз данных QHB. Резервное копирование производится без влияния на другие клиенты базы данных и могут использоваться как для восстановления на определенный момент времени (см. раздел Непрерывное архивирование и восстановление на момент времени (PITR) ), так и в качестве отправной точки для ведомого сервера при реализации трансляции файлов или потоковой репликации.

qhb_basebackup создает побитовую копию файлов кластера, обеспечивая автоматическое переключение системы в режим резервного копирования. Резервные копии всегда берутся для целого кластера баз данных; резервное копирование отдельных баз данных или объектов базы данных невозможно. Для отдельных резервных копий объектов базы данных необходимо использовать qhb_dump.

Резервное копирование выполняется через обычное соединение QHB и использует протокол репликации. Соединение должно быть установлено под суперпользователем или пользователем, имеющим разрешения REPLICATION (см. раздел Атрибуты ролей), а qhb_hba.conf должен позволять соединение репликации. Сервер также должен быть настроен с параметром max_wal_senders, установленным достаточно высоко, чтобы оставить хотя бы один сеанс доступным для резервного копирования и одним для потоковой передачи WAL (если используется).

Может быть запущено несколько qhb_basebackup'ов одновременно, но с точки зрения производительности лучше выполнять одно резервное копирование и скопировать его результат.

qhb_basebackup может сделать резервную копию не только с ведущего, но и с ведомого кластера. Чтобы сделать резервную копию ведомого кластера, настройте его, чтобы он мог принимать подключения репликации (установите параметры max_wal_senders и hot_standby, и настройте аутентификацию). Вам также нужно будет включить full_page_writes на ведущем кластере.

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

  • Файл истории резервного копирования не создаётся в целевом кластере баз данных

  • Если вы используете -X none, нет гарантии, что все файлы WAL, необходимые для резервного копирования, будут архивированы в конце резервного копирования.

  • Если ведомый сервер становится ведущим во время резервного копирования, резервное копирование завершится неудачно.

  • Все записи WAL, необходимые для резервного копирования, должны содержать достаточное количество полностраничных записей, для чего необходимо включить full_page_writes на ведущем кластере и не использовать инструменты pg_compresslog или archive_command для удаления полностраничных записей из файлов WAL.

Параметры

ПараметрОписание
-D directory --pgdata=directoryКаталог для резервной копии. qhb_basebackup создаст каталог и родительские каталоги, если это необходимо. Каталог может уже существовать, но должен быть пуст, иначе произойдёт ошибка. Когда резервная копия создаётся в tar режиме и каталог указан как - (тире), файл tar будет записан в стандартный поток вывода (stdout). Эта опция обязательна.
-F format --format=formatВыбор формата вывода. format может быть одним из следующих: p plain : Записать результат в виде простых файлов с той же компоновкой, что и исходном каталоге данных с сохранением табличных пространств. Если в кластере нет дополнительных табличных пространств, вся база данных будет помещена в целевой каталог. Если кластер содержит дополнительные табличные пространства, основной каталог данных будет помещен в целевой каталог, а все остальные табличные пространства будут размещены в том же абсолютном пути, что и на сервере. Это формат по умолчанию
t tar : Запишите результат в виде tar-файлов в целевой каталог. Основной каталог данных будет записан в файл с именем base.tar, а все остальные табличные пространства будут названы в соответствии с их OID. Если в качестве целевого каталога указано значение - (тире), содержимое tar будет записано в стандартный вывод, подходящий для передачи, например, в gzip. Это возможно только в том случае, если в кластере нет дополнительных табличных пространств и потоковая передача WAL не используется.
-r rate --max-rate=rate Максимальная скорость передачи данных, передаваемых с сервера. Значения указаны в килобайтах в секунду. Используйте суффикс M чтобы указать мегабайт в секунду. Суффикс k также принимается и не имеет никакого эффекта. Допустимые значения: от 32 килобайт в секунду до 1024 мегабайт в секунду. Цель состоит в том, чтобы ограничить влияние qhb_basebackup на работающий сервер. Эта опция всегда влияет на передачу каталога данных. На передачу файлов WAL влияет только метод fetch.
-R --write-recovery-confСоздайте файл standby.signal и добавьте параметры подключения в qhb.auto.conf в выходном каталоге (или в файле базового архива при использовании формата tar), чтобы упростить настройку ведомого сервера. В файле qhb.auto.conf будут записаны параметры подключения и, если указан, слот репликации, который использует qhb_basebackup, то потоковая репликация будет использовать те же параметры.
-T olddir=newdir --tablespace-mapping=olddir=newdirПереместите табличное пространство из каталога olddir в newdir во время резервного копирования. olddir должен точно соответствовать пути табличного пространства, как оно определено. (Однако ошибкой не является, если в olddir нет табличного пространства.) И olddir и newdir должны быть абсолютными путями. Если путь содержит знак =, экранируйте его обратной косой чертой \. Эта опция может быть указана несколько раз для нескольких табличных пространств (см. примеры ниже). Если табличное пространство перемещается таким образом, символические ссылки внутри основного каталога данных обновляются, чтобы указывать на новое местоположение. Таким образом, новый каталог данных готов к использованию для нового экземпляра сервера со всеми табличными пространствами в обновлённых местоположениях.
--waldir=waldir Указывает местоположение для каталога журнала WAL. waldir должен быть абсолютным путем. Каталог журнала предзаписи можно указывать только если резервная копия находится в обычном режиме.
-X method --wal-method=methodВключает в резервную копию необходимые файлы журнала предзаписи (файлы WAL). Включает в себя журналы упреждающей записи, созданные во время резервного копирования. Если выбран метод none, можно запускать qhbmaster непосредственно в извлеченном каталоге без необходимости обращаться к архиву журналов, что делает его полностью автономной резервной копией. Поддерживаются следующие методы сбора журналов предзаписи:
n none : Не включать журнал предзаписи в резервную копию.
f fetch : Файлы журнала предзаписи собираются в конце резервного копирования. Поэтому необходимо, чтобы параметр wal_keep_segments был рассчитан и установлен правильно, чтобы журнал не удалялся до окончания резервного копирования. Если журнал был удалён, когда пришло время передать его, резервное копирование не удастся и станет непригодным для использования. Когда используется формат tar, файлы журнала с предзаписи записи будут записаны в файл base.tar.
s stream : Потоковая запись журнала предзаписи при создании резервной копии. Открывает второе соединение с сервером и начинает потоковую передачу журнала предзаписи параллельно при выполнении резервного копирования. Поэтому будет использоваться два соединения, настроенных параметром max_wal_senders. Пока клиент может отслеживать поступивший журнал предзаписи, использование этого режима не требует сохранения дополнительных журналов записи на главном сервере. При использовании формата tar файлы журналов предзаписи будут записываться в отдельный файл с именем pg_wal.tar. Это значение по умолчанию.
-z --gzip Включает gzip-сжатие результирующего tar-файла с уровнем сжатия по умолчанию. Сжатие доступно только при использовании формата tar, и суффикс .gz будет автоматически добавлен ко всем именам файлов tar.
-Z level --compress=level Включает gzip-сжатие вывода tar-файла и указывает уровень сжатия (от 0 до 9, 0 - без сжатия и 9 - с наилучшим сжатием). Сжатие доступно только при использовании формата tar, и суффикс .gz будет автоматически добавлен ко всем именам файлов tar.

Окружение

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

Переменная окружения PG_COLOR указывает, использовать ли цвет в диагностических сообщениях. Возможные значения always, auto, never.

Примечания

В начале резервного копирования на сервере, с которого берется резервная копия, должна быть зафиксирована контрольная точка. Особенно, если опция --checkpoint=fast не используется, это может занять некоторое время, в течение которого qhb_basebackup будет казаться бездействующим.

Резервная копия будет включать все файлы в каталоге данных и табличных пространствах, включая файлы конфигурации и любые дополнительные файлы, за исключением некоторых временных файлов, управляемых QHB. Копируются только обычные файлы и каталоги, за исключением того, что символические ссылки, используемые для табличных пространств, сохраняются. Символьные ссылки, указывающие на определенные каталоги, известные QHB, копируются как пустые каталоги. Другие символические ссылки и специальные файлы устройств пропускаются.

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

Когда используется режим tar, пользователь должен распаковать каждый tar-файл перед запуском сервера QHB. Если есть дополнительные табличные пространства, их tar-файлы необходимо распаковать в правильных местах. В этом случае символические ссылки для этих табличных пространств будут создаваться сервером в соответствии с содержимым файла tablespace_map который включен в файл base.tar.

qhb_basebackup работает с серверами QHB версии 1.1 и выше.

qhb_basebackup сохранит разрешения группы как в plain и в tar формате, если разрешения группы включены в исходном кластере.

Примеры

Создать базовую резервную копию сервера на mydbserver и сохранить ее в локальном каталоге /usr/local/qhb/data:

$ qhb_basebackup -h mydbserver -D /usr/local/qhb/data

Создать резервную копию локального сервера в формате tar для каждого табличного пространства и сохранить его в backup каталоге, отображая отчет о ходе выполнения во время работы:

$ qhb_basebackup -D backup -Ft -z -P

Создать резервную копию локальной базы данных с одним табличным пространством и сжать ее с помощью bzip2:

$ qhb_basebackup -D - -Ft -X fetch | bzip2 > backup.tar.bz2

(Эта команда не будет выполнена, если в базе данных есть несколько табличных пространств.)

Создать резервную копию локальной базы данных с перемещением табличного пространства из /opt/ts в ./backup/ts :

$ qhb_basebackup -D backup/data -T /opt/ts=$(pwd)/backup/ts

Смотрите Также

qhb_dump