вторник, 22 января 2013 г.

pg_basebackup

Название

pg_basebackup -- делает резервную копию кластера PostgreSQL

Краткое описание

pg_basebackup [option...]

Описание

pg_basebackup используется для создания резервной копии БД работающего кластера PostgreSQL. Этот процесс не влияет на других клиентов БД и может использоваться и для point-in-time восстановления (см раздел 24.3), и как начальная точка для передачи логов или потоковой репликации (см раздел 24.2).
pg_basebackup делает двоичную копию файлов кластера БД, убедившись, что система автоматически входит и выходит из режима создания резервной копии. Копия всегда создаётся всего кластера, не возможно сделать копию отдельных БД или объектов БД. Для создания резервных копий отдельных БД используйте инструменты вроде pg_dump.
Резервная копия делается через обычное подключение PostgreSQL и использует протокол репликации. Поэтому соединение должно быть установлено пользователем, имеющим привилегию REPLICATION (см раздел 20.2) и у него должны быть соответствующие разрешения в pg_hba.conf. Сервер так же должен иметь достаточно высокое значение max_wal_senders, чтобы разрешить хотя бы одно подключение.
Одновременно может быть запущенно несколько экземпляров pg_basebackup, но с точки зрения производительности лучше запустить один pg_basebackup и потом просто сделать копии результата.

Опции

Следующие опции командной строки определяют расположение и формат вывода:
-D directory
--pgdata=directory
Каталог, где должна находиться резервная копия.
Если копия создаётся в режиме tar и в качестве каталога указан - (дефис), tar файл будет записан в stdout.
Этот параметр обязателен.
-F format
--format=format
Определяет формат вывода. В качестве значения можно использовать:
p
plain
Пишет результат в качестве простого файла с тем же расположением, что и в текущем каталоге данных и пространстве таблиц. Когда у кластера нет дополнительных пространств таблиц, вся БД размещается в указанной директории. Если кластер содержит дополнительные пространства таблиц, основной каталог данных будет расположен в указанной директории  а все остальные пространства таблиц будут расположены по тому же абсолютному пути, по которому они расположены на сервере.
Это формат по умолчанию.
t
tar
Записывает вывод в качестве tar файла в указанной директории. Основной каталог данных будет записан в файл namedbase.tar, а все остальные пространства таблиц будут названы в соответствии в OID пространства таблицы.
Если в качестве каталога указан - (дефис), tar файл будет записан в stdout, что удобно для использования каналов, например, для gzip. Это возможно только если в кластере нет дополнительных пространств имён.
-x
--xlog
Добавляет лог файлы требуемых транзакций (WAL файлы) в резервную копию. Эта опция добавит все логи транзакций, созданные во время резервной копии. Если эта опция передана, то можно запустить postmaster сразу в извлечённой резервной копии, без необходимости в дополнительных архивах логов; таким образом создаётся полностью самодостаточная резервная копия.
Примечание: файлы логов транзакций добавляются в конце создания резервной копии. Поэтому необходимо, чтобы параметр wal_keep_segments имел достаточно большое значение, чтобы эти логи не были удалены до завершения резервного копирования. Если произойдёт ротация лога в процессе его перемещения, то резервная копия будет бесполезна.
-z
--gzip
Добавляет gzip сжатие к итоговому tar файлу с уровнем сжатия по умолчанию. Возможно только для tar.
-Z level
--compress=level
Добавляет gzip сжатие к итоговому tar файлу и задаёт уровень сжатия (1-9, где 9 - самое лучшее сжатие). Возможно только для tar.
Следующие опции командной строки определяют создание резервной копии и запуск программы:
fast | spread
--checkpoint=fast|spread
Устанавливает режим чекпойта - fast или spread (по умолчанию).
-l label
--label=label
Задаёт метку для резервной копии. Если не определена, то используется значение по умолчанию "pg_basebackup base backup"
-P
--progress
Включает получения сообщений о приблизительном прогрессе во время создания резервной копии. Так как БД может изменяться в процессе копирования, значения о прогрессе лишь приблизительные и могут не соответствовать реальному состоянию дел на 100%. В частности, когда WAL логи включены в резервную копию, общее количество данных не может быть оценено заранее, и, в этом случае, итоговый размер будет увеличиваться, как только он перешагнёт размер без WAL.
Если эта опция передана, резервное копирование начётся с вычисления размера БД, после чего будет сообщён реально обработаный объём данных. Из-за этого создание резервной копии может длиться дольше, особенно в самом начале.
-v
--verbose
Активирует "подробный" режим. Будут отображены дополнительные шаги при запуске и завершении, показаны имена обрабатываемых на данный момент файлов при используемой опции -p.
Следующие опции командной строки определяют параметры подключения к БД:
-h host
--host=host
Определяет имя машины, на которой запущен сервер. Если значение начинается со слеша, то оно используется как каталог для Unix-domain socket. Значение по умолчанию берётся из переменной окружения PGHOST, если она задана, в противном случае используется Unix-domain socket.
-p port
--port=port
Определяет TCP порт или Unix-domain socket, на котором сервер ожидает подключения. Значения по умолчанию - переменная окружения PGRORT или значение, заданное при компиляции.
-U username
--username=username
Имя пользователя для подключения
-w
--no-password
Ни в коем случае не запрашивает пароль. Если сервер требует пароля и нет файла паролей, например, .pgpass, то подключиться не удастся. Эта опция может быть полезна в скриптах, когда нет пользователя, который мог бы ввести пароль.
-W
--password
Заставляет pg_basebackup запросить пароль перед подключением к БД.
Эта опция никогда не является жизненно важной, так как pg_basebackup сам спросит пароль, если его требует сервер. Однако, на выяснение того, что серверу нужен пароль, pg_basebackup потратит одну попытку подключения. Так что в некоторых случаях, где мы хотим избежать лишних попыток подключения, полезно указать эту опцию.
Другие, более редко используемые параметры:
-V
--version
Печатает версию pg_basebackup и завершает работу
-?
--help
Показывает справку об аргументах командной строки и завершает работу

Окружение

Эта утилита, как и многие другие утилиты PostgreSQL, использует переменные окружения, поддерживаемые libpq (см раздел 31.13)

Примечание

Резервная копия будет вкSee Alsoлючать все файлы в каталоге данных и пространстве таблиц, включая файлы конфигурации и все файлы, расположенные там сторонними программами. В каталоге данных могут быть только обычные файлы и каталоги, без символьных ссылок и файлов устройств.
Из-за того, как PostgreSQL обрабатывает пространства таблиц, путь к ним должен быть аналогичен на той системе, где резервная копия восстанавливается. Однако сам каталог данных может находиться и в другом месте.

Примеры

Для того, чтобы создать базовую резервную копию сервера с mydbserver и сохранить его в локальном каталоге /usr/local/pgsql/data:
$ pg_basebackup -h mydbserver -D /usr/local/pgsql/data
Для того, чтобы создать резервную копию локального сервера в виде одного tar файла для каждого пространства таблиц и сохранить его в каталоге backup, отображая прогресс архивирования:
$ pg_basebackup -D backup -Ft -z -P
Для того, чтобы создать резервную копию БД с одним пространством таблиц и сжать его с bzip2:
$ pg_basebackup -D - -Ft | bzip2 > backup.tar.bz2
(Эта команда не сработает при наличии нескольких пространств таблиц в БД)

См также

2 комментария:

  1. А как воспользоваться созданной копией для восстановления базы?

    ОтветитьУдалить
    Ответы
    1. "Этот процесс не влияет на других клиентов БД и может использоваться и для point-in-time восстановления (см раздел 24.3) "

      Удалить