qhb_basebackup
qhb_basebackup — создать резервную копию кластера QHB
Синтаксис
qhb_basebackup [параметр...]
Описание
Утилита 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 на главном сервере.
Обратите внимание, что при резервном копировании с резервного сервера есть некоторые ограничения:
-
Файл истории резервного копирования в целевом кластере баз данных не создается.
-
qhb_basebackup не может принудительно переключить резервный сервер на новый файл WAL в конце копирования. Если используется режим -X none и активность записи на основном сервере низкая, есть вероятность, что qhb_basebackup придется долго ждать переключения и архивирования последнего файла WAL, необходимого для полноты копии. В таком случае целесообразно запустить на основном сервере функцию pg_switch_wal для немедленного переключения файла WAL.
-
Если во время копирования резервный сервер становится главным, оно прерывается.
-
Все записи WAL, необходимые для резервного копирования, должны содержать достаточное количество полных страниц, для чего необходимо включить full_page_writes на главном сервере и не использовать в
archive_command
утилиты вроде pg_compresslog для удаления полностраничных записей из файлов WAL.
Параметры
-D каталог
--pgdata=каталог
Каталог для записи резервной копии. qhb_basebackup создаст его и
родительские каталоги, если это необходимо. Каталог может быть создан заранее, но
должен быть пустым, иначе возникнет ошибка.
Если резервная копия создается в режиме tar, а имя каталога задано как - (тире), tar-файл будет записан в stdout.
Этот параметр является обязательным.
-F формат
--format=формат
Выбирает формат вывода. формат может принимать одно из следующих значений:
-
p
plain
Записать результат в виде простых файлов, сохраняя структуру текущего каталога хранения данных и табличных пространств. Если в кластере нет дополнительных табличных пространств, вся база данных будет помещена в целевой каталог. В ином случае основной каталог хранения данных будет помещен в целевой каталог, а все остальные табличные пространства — в те же абсолютные пути, что и на исходном сервере. (Чтобы изменить это, воспользуйтесь параметром --tablespace-mapping).
Это формат по умолчанию. -
t
tar
Записать результат в целевой каталог в виде tar-файлов. Основной каталог хранения данных будет записан в файл с именем base.tar, а все остальные табличные пространства будут названы в соответствии с их OID.
Если в качестве имени целевого каталога задано - (тире), данные будут записаны в стандартный вывод, подходящий для передачи, например, в gzip. Это возможно только в том случае, если в кластере нет дополнительных табличных пространств и не используется потоковая передача WAL.
-r скорость_передачи
--max-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 старый_каталог=новый_каталог
--tablespace-mapping=старый_каталог=новый_каталог
Переместить табличное пространство из старого_каталога в новый_каталог
в процессе копирования. Чтобы перемещение произошло, старый_каталог должен
точно соответствовать пути табличного пространства, как тот определен. (Однако
если в старом_каталоге архива не окажется табличного пространства, это не
будет ошибкой.) И старый_каталог, и новый_каталог должны задаваться
абсолютными путями. Если путь содержит символ =, нужно экранировать его обратным
слэшем. Этот параметр можно указать несколько раз для нескольких табличных
пространств (см. примеры ниже).
Если табличное пространство перемещается таким образом, символические ссылки внутри основного каталога данных обновляются, чтобы указывать на новое местоположение. Таким образом, для нового экземпляра сервера подготавливается новый каталог хранения данных, где все табличные пространства находятся в новых расположениях.
--waldir=каталог_wal
Указывает местоположение для каталога журнала упреждающей записи. каталог_wal
должен задаваться абсолютным путем. Каталог с журналом упреждающей записи можно
задать только при создании резервной копии в простом режиме.
-X метод
--wal-method= метод
Включает в резервную копию все необходимые файлы журнала упреждающей записи
(файлы WAL). Включает в себя журналы, созданные в процессе резервного копирования.
Если только не выбран метод none, главный процесс QHB можно
запускать непосредственно в извлеченном каталоге без необходимости обращаться к
архиву журналов; таким образом будет получена полностью автономная резервная
копия.
Поддерживаются следующие методы сбора журналов упреждающей записи:
-
n
none
Не включать журнал упреждающей записи в резервную копию. -
f
fetch
Файлы журнала упреждающей записи собираются в конце процесса резервного копирования. Поэтому необходимо задать достаточно большое значение параметра wal_keep_size, чтобы журнал не удалялся раньше времени. Если журнал был удален до момента передачи, резервное копирование прервется, а копия будет непригодной к использованию.
При использовании формата tar файлы журнала упреждающей записи будут записываться в файл base.tar. -
s
stream
Журнал упреждающей записи передается в процессе создания резервной копии. При этом открывается второе соединение с сервером, по которому происходит потоковая передача журнала упреждающей записи, одновременно с резервным копированием. Таким образом будут использоваться два подключения из заданных параметром max_wal_senders. Пока клиент может отслеживать передаваемый журнал упреждающей записи, в этом режиме главному серверу не нужно хранить дополнительные файлы журнала. При использовании формата tar файлы журнала упреждающей записи будут записываться в отдельный файл с именем pg_wal.tar.
Это значение по умолчанию.
-z
--gzip
Включает gzip-сжатие выводимого tar-файла с уровнем сжатия по умолчанию. Сжатие
поддерживается только для формата tar, при этом ко всем именам файлов tar будет
автоматически добавлен суффикс .gz.
-Z уровень
--compress=уровень
Включает gzip-сжатие выводимого tar-файла и задает уровень сжатия от 0 (без сжатия)
до 9 (максимальное сжатие). Сжатие поддерживается только для формата tar, при
этом ко всем именам файлов tar будет автоматически добавлен суффикс .gz.
Переменные среды
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 и сохранить ее в локальном каталоге /var/lib/qhb/data:
$ qhb_basebackup -h mydbserver -D /var/lib/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