qhb_dump - извлекает базу данных QHB в файл сценария или другой архив

qhb_dump - утилита извлечения базы данных QHB в файл сценария или другой архив.



Описание

qhb_dump - это утилита для резервного копирования базы данных QHB. Создаёт последовательные резервные копии, даже если база данных используется.

qhb_dump не блокирует доступ других пользователей к базе данных (читателей или писателей).

qhb_dump снимает дамп только с одной базы данных. Для резервного копирования всего кластера или для резервного копирования глобальных объектов, общих для всех баз данных в кластере (таких, как роли и табличные пространства), следует использовать qhb_dumpall.

Дамп может быть создан в формате SQL-сценария или файла архива. SQL-сценарий - это текстовый файл, содержащие команды SQL, необходимые для восстановления базы данных до состояния, в котором она находилась на момент сохранения. Чтобы восстановить БД используя такой скрипт, выполните его используя утилиту qsql.
Файлы сценариев могут использоваться для восстановления базы данных даже на других машинах и других архитектурах; с некоторыми изменениями, на других SQL-совместимых базах данных.

Альтернативные форматы архивных файлов должны использоваться с qhb_restore для перестройки базы данных. Они позволяют qhb_restore избирательно восстанавливать данные, или изменять порядок элементов перед восстановлением. Форматы архивных файлов предназначены для переноса между различными архитектурами.

При использовании с одним из форматов архивных файлов и в сочетании с qhb_restore, qhb_dump обеспечивает гибкий механизм архивирования и передачи. qhb_dump может использоваться для резервного копирования всей базы данных, затем qhb_restore может использоваться для проверки архива и/или выбора того, какие части базы данных должны быть восстановлены. Наиболее гибкими форматами выходного файла являются «пользовательский» формат ( -Fc ) и «каталог» ( -Fd ). Эти форматы позволяют выбирать и переупорядочивать все заархивированные элементы, поддерживают параллельное восстановление и, по умолчанию, сжимаются.

Формат «каталог» единственный, поддерживающий параллельные дампы.

Во время работы qhb_dump необходимо внимательно проверять консольный вывод на наличие предупреждений или ошибок (stderr), особенно в свете ограничений, перечисленных ниже.

Синтаксис

qhb_dump [connection-option...] [OPTION]... [DBNAME]

Параметры

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

Следующие параметры командной строки управляют содержимым и форматом вывода.

COMMON OPTIONS

АргументОписание
-?, --helpПоказать справку об аргументах командной строки и выйти.
-V, --versionВывести версию qhb_dump и выйти
-v, --verboseВыводит на экран команды, которые createuser генерирует и отправляет на сервер.

GENERAL OPTIONS

АргументОписание
-f, --file=FILENAMEПеренаправить вывод в указанный файл. Можно не указывать для файловых форматов вывода, тогда используется стандартный вывод. Необходимо задать для формата вывода каталога, т.к. указывает целевой каталог вместо файла. В этом случае каталог создается qhb_dump.
-F, --format=c, d, t, pЗадать формат вывода дампа. Форматы дампов
-j, --jobs=NUMЗапустить создание дампа в NUM потоков. Можно использовать только с выходным форматом каталога. Подробнее.
-Z, --compress=0-9Уровень сжатия для дампа. Подробнее
--lock-wait-timeout=TIMEOUTТаймаут, на получение блокировки таблиц. Если невозможно заблокировать таблицу в течение указанного времени - выдаётся ошибка. Подробнее
--no-syncНе дожидаться синхронизации записи файлов на диск Подробнее

CONNECTION OPTIONS

АргументОписание
-d, --dbname=DBNAMEИмя базы данных для подключения. Эквивалентно указанию dbname в качестве первого не опционального аргумента
-h, --host=HOSTNAMEИмя хоста, на котором работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для сокета домена Unix. Значение по умолчанию берется из переменной среды PGHOST, далее предпринимается попытка подключения через сокет домена Unix.
-p, --port=PORTTCP порт или расширение файла локального сокета домена Unix. По умолчанию берётся переменная среды PGPORT, или порт заданный при компиляции.
-U, --username=USERNAMEИмя пользователя для подключения.
-w, --no-passwordНе запрашивать ввод пароля. Если серверу требуется аутентификация по паролю, а пароль недоступен другими способами, такими как файл .pgpass, попытка подключения завершится неудачно. Эта опция может быть полезна в пакетных заданиях и сценариях, где нет ни одного пользователя для ввода пароля.
-W, --passwordqhb_dump автоматически запросит пароль, если сервер требует аутентификацию по паролю. qhb_dump будет пытаться подключиться, для аутентификации. В некоторых случаях стоит ввести -W чтобы избежать дополнительной попытки подключения.
--role=ROLENAMEЗадает имя роли, которая будет использоваться для создания дампа. Подробнее

OPTIONS

АргументОписание
-a, --data-onlyДамп только данных, а не схемы (DDL определения данных). Данные таблицы, большие объекты и значения последовательности сбрасываются. Эта опция похожа на --section=data, но по историческим причинам не идентична.
-b, --blobsВключить большие объекты в дамп. Это поведение по умолчанию Подробнее
-B, --no-blobsИсключить выгрузку блобов в дамп. Когда заданы оба параметра -b и -B, больших объектов включаются в дамп.
-c, --cleanДополняет выходной файл командами для очистки (DROP) объектов базы данных перед выводом команд для их создания. Подробнее
-C, --createФормирует команду на создание инстанса БД и подключение к нему. Подробнее
-E, --encoding=ENCODINGСоздать дамп в указанной кодировке набора символов. По умолчанию дамп создается в кодировке базы данных. (Другой способ получить тот же результат - установить для переменной среды PGCLIENTENCODING желаемую кодировку дампа.)
-n, --schema=PATTERNВключать в Дамп только схемы, соответствующие pattern Подробнее
-N, --exclude-schema=PATTERNИсключать из Дампа схемы, соответствующие pattern Подробнее
-O, --no-ownerНе формировать команды для установки владельца объектов как в исходной базе данных. Подробнее
-s, --schema-onlyВключает в Дамп только определения объектов (схема), но не сами данные. Подробнее
-S, --superuser=NAMEУказать имя суперпользователя, которое будет использоваться при отключении триггеров. Актуально, только если используется --disable-triggers. (Обычно лучше вместо этого запускать полученный скрипт как суперпользователь.)
-t, --table=PATTERNВключать в Дамп только таблицы, соответствующие pattern Подробнее
-T, --exclude-table=PATTERNИсключать из Дампа таблицы, соответствующие pattern Подробнее
-x, --no-privileges, --no-aclЗапретить сброс прав доступа (команды GRANT / REVOKE).
--binary-upgradeЭта опция предназначена для использования утилитами обновления на месте. Использование в других целях не рекомендуется и не поддерживается. Поведение опции может измениться в будущих выпусках без предварительного уведомления.
--column-insertsФормировать Дамп данных в виде команды INSERT с явными указанием столбцов Подробнее
--disable-dollar-quotingЭтот параметр отключает использование долларовых кавычек для тел функций; можно использовать кавычки из стандартного синтаксиса SQL.
--disable-triggersВключать в дамп команды на отключение триггеров. Подробнее
--enable-row-securityВыгружать данные из таблиц с защитой строк. Подробнее
--exclude-table-data=PATTERNНе сбрасывайте данные для таблиц, соответствующих pattern. Подробнее
--extra-float-digits=NUMИспользовать заданное значение extra_float_digits для чисел с плавающей запятой вместо максимально доступной точности. Обычные дампы, созданные для резервного копирования, не должны использовать эту опцию.
--if-existsИспользуйте условные команды (добавить IF EXISTS ) при очистке объектов базы данных. Не работает без --clean.
--insertsСоздаёт дамп через команды INSERT Подробнее
--load-via-partition-rootДля партиции таблицы ссылаться на корневую таблицу в иерархии партицирования, а не на эту партицию. Подробнее
--no-commentsНе включать в дамп комментарии.
--no-publicationsНе включать в дамп публикации.
--no-security-labelsНе включать в дамп защитные метки.
--no-subscriptionsНе включать в дамп подписки.
--no-synchronized-snapshotsЭта опция позволяет запускать qhb_dump -j на сервере до 9.2, более подробную информацию смотрите в документации по параметру -j.
--no-tablespacesНе формировать команды для указания табличных пространств. Все объекты будут создаваться в табличном пространстве по умолчанию при восстановлении. Эта опция применима для простого текстового формата. Для форматов архива вы можете указать эту опцию при вызове qhb_restore.
--no-unlogged-table-dataНе выгружать данные нежурналируемых таблицы в дамп. Не влияет на выгрузку определений таблиц. На резервном сервере данные нежурналируемых таблиц никогда не выгружаются.
--on-conflict-do-nothingДобавить ON CONFLICT DO NOTHING к командам INSERT. Работает только вместе с --inserts, --rows-per-insert, --rows-per-insert.
--quote-all-identifiersВключить принудительно Экранирование идентификаторов при создании дампа Подробнее.
--rows-per-insert=NROWSВыставляет максимально количество строк для INSERT (не COPY). Должно быть больше нуля. Любая ошибка во время загрузки приведет к потере только строк, которые являются частью проблемной INSERT.
--section=SECTIONВыбор разделов для включения в дамп Подробнее
--serializable-deferrableПодробнее
--snapshot=SNAPSHOTПодробнее
--strict-namesПодробнее
--use-set-session-authorizationПодробнее

ARGS

АргументОписание
DBNAMEОпределяет имя базы данных, которая будет выгружена. Если это не указано, используется переменная окружения PGDATABASE. Если переменная не установлена, используется имя пользователя, указанное для подключения.

Дополнительная информация по параметрам

В этом разделе описана дополнительная информация, по параметрам командной строки утилиты qhb_dump.

Уровень сжатия

-Z, --compress=0-9

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

В настоящее время формат архива tar не поддерживается.

TIMEOUT

--lock-wait-timeout=TIMEOUT

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

Тайм-аут может быть указан в любом из форматов, принятых с помощью SET statement_timeout. (Разрешенные форматы различаются в зависимости от версии сервера, с которого выгружается дамп; целое число миллисекунд принимается всеми версиями.)

no sync

--no-sync

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

ROLENAME

--role=ROLENAME

Задает имя роли, которая будет использоваться для создания дампа. qhb_dump выполнит команду SET ROLE rolename после подключения к базе данных. Это полезно, когда пользователю (указанному ключом -U) не хватает привилегий, необходимых для снятия дампа, но возможно переключиться на роль с необходимыми правами.

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

Форматы дампов

-F format, --format= format - Параметр формата вывода. format может быть одним из следующих:

ФорматОписание
p, plainТекстовый файл сценария SQL (по умолчанию)
c, customПользовательский формат
d, directoryДамп в формате каталога, подходящий для qhb_restore
t, tarДамп tar формата, подходящий для ввода в qhb_restore

custom

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

Этот формат также сжат по умолчанию.

directory

Дамп в формате каталога, подходящий для qhb_restore.

Создаёт каталог с одним файлом для каждой таблицы и исключает blob объекты, создаёт файл оглавления, описывающий выгруженные объекты в машиночитаемом формате, для qhb_restore.

Архив формата каталогов может управляться стандартными инструментами Unix; например, файлы в несжатом архиве могут быть сжаты с помощью инструмента gzip.

Этот формат сжат по умолчанию, а также поддерживает параллельные дампы.

tar-dump

Дамп tar формата, подходящий для ввода в qhb_restore. Формат tar совместим с форматом каталога: при извлечении архива в формате tar создается действительный архив в формате каталога.

Однако формат tar не поддерживает сжатие.

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

Выгрузка блобов

-b, --blobs

Включить большие объекты в дамп. Это поведение по умолчанию, за исключением случаев, когда указаны ключи --schema, --table или --schema-only. Поэтому ключ -b полезен только для добавления больших объектов в дампы, где запрошена конкретная схема или таблица.

Обратите внимание, что --schema-only считаются данными и поэтому будут включены, когда используется --data-only, но не с ключом --schema-only.

Clean

-c, --clean

Дополняет выходной файл командами для очистки (DROP) объектов базы данных перед выводом команд для их создания.

Если также не указано --if-exists, восстановление может выводить сообщения о несуществующих объектах в целевой базе данных при попытке удаления.

Эта опция имеет смысл только для простого текстового формата. Для других форматов архива вы можете указать эту опцию при вызове qhb_restore.

Создание базы

-C, --create

Формирует команду на создание инстанса БД и подключение к нему. В этом случае будет не важно какая БД указывается в параметрах подключения при восстановлении.

Если указан параметр --clean, сценарий удаляет и создаёт заново целевую базу данных перед повторным подключением к ней.

С параметром --create выходные данные также формирует комментарий базы данных, если он есть, и любые параметры переменных конфигурации, специфичные для этой базы данных, то есть любые ALTER DATABASE ... SET ... и ALTER ROLE ... IN DATABASE ... SET ... команды, которые ссылаются на эту базу. Права доступа к самой базе данных также выгружаются в дамп, если не применён --no-acl.

Эта опция применима только для простого текстового формата. Для других форматов архива вы можете указать эту опцию при вызове qhb_restore.

no owner

-O, --no-owner

Не формировать команды для установки владельца объектов как в исходной базе данных. По умолчанию qhb_dump создаёт операторы ALTER OWNER или SET SESSION AUTHORIZATION для установки владельца объектов.

Эти команды успешно выполнятся только при запуске сценария суперпользователем (или тем же пользователем, которому принадлежат все объекты в сценарии). Чтобы создать сценарий, который может быть восстановлен любым пользователем, но предоставит ему право владения всеми объектами, укажите -O.

Эта опция имеет смысл только для простого текстового формата. Для форматов архива вы можете указать эту опцию при вызове qhb_restore.

schema only

-s, --schema-only

Включает в Дамп только определения объектов (схема), но не сами данные.

Эта опция является обратной к --data-only. Применение похоже на использование аргументов --section=pre-data --section=post-data, но не идентично по историческим причинам.

Не путайте это с параметром --schema, который использует термин «схема» в другом значении, чтобы исключить данные таблицы только для подмножества таблиц в базе данных, смотрите --exclude-table-data.

Параллельные дампы

При использовании опции -j, --jobs=NUM утилита qhb_dump запустит создание дампа параллельно, одновременно в NUM потоков. Эта опция сокращает время дампа, но также увеличивает нагрузку на сервер базы данных. Вы можете использовать эту опцию только с выходным форматом каталога, потому что это единственный выходной формат, в котором несколько процессов могут записывать свои данные одновременно.

qhb_dump откроет NUM + 1 соединений с базой данных, поэтому убедитесь, что ваш параметр max_connections соответствует, и обеспечивает достаточное количество соединений.

Запрос монопольных блокировок к объектам базы данных при выполнении параллельного дампа может привести к сбою. Причина в том, что мастер-процесс qhb_dump запрашивает общие блокировки для объектов, которые рабочие процессы будут выгружать позже, чтобы удостовериться, что их никто не удалит и не удалит их во время выполнения дампа. Если другой клиент затем запрашивает монопольную блокировку таблицы, эта блокировка не будет предоставлена, но будет поставлена в очередь в ожидании снятия общей блокировки главного процесса. Следовательно, любой другой доступ к таблице также не будет предоставлен и будет поставлен в очередь после запроса исключительной блокировки. Это включает в себя рабочий процесс, пытающийся сбросить таблицу. Без каких-либо мер предосторожности это будет классическая тупиковая ситуация. Чтобы обнаружить этот конфликт, рабочий процесс qhb_dump запрашивает другую общую блокировку, используя опцию NOWAIT. Если рабочему процессу не предоставлена эта общая блокировка, кто-то другой должен тем временем запросить эксклюзивную блокировку, и нет никакого способа продолжить работу с дампом, поэтому у qhb_dump нет другого выбора, кроме как прервать дамп.

Для согласованного резервного копирования сервер базы данных должен поддерживать синхронизированные моментальные снимки. С помощью этой функции клиенты базы данных могут убедиться, что они видят один и тот же набор данных, даже если они используют разные соединения. qhb_dump -j использует несколько соединений с базой данных; он подключается к базе данных один раз с главным процессом и еще раз для каждого рабочего задания. Без функции синхронизированного моментального снимка различные рабочие задания не гарантируют, что в каждом соединении будут отображаться одни и те же данные, что может привести к непоследовательному резервному копированию.

Шаблоны выгрузки

Шаблоны Схем

Включение Схем

-n pattern, --schema= pattern

Включать в Дамп только схемы, соответствующие pattern; включает как саму схему, так и все содержащиеся в ней объекты. Если эта опция не указана, все несистемные схемы в целевой базе данных будут выгружены. Несколько схем можно выбрать, написав несколько ключей -n. Параметр pattern интерпретируется как шаблон по тем же правилам, которые используются командами qsql

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

Заметка
Если указан параметр -n, qhb_dump не будет пытаться создать дамп каких-либо других объектов базы данных, от которых могут зависеть выбранные схемы. Следовательно, нет никакой гарантии, что результаты дампа определенной схемы могут быть успешно восстановлены в чистую базу данных.

Заметка
Объекты, не являющиеся схемами, такие как BLOB-объекты, не выводятся, если указан параметр -n. Вы можете добавить капли обратно в дамп с --blobs переключателя --blobs.

Исключение Схем

-N pattern , --exclude-schema= pattern

Не включать в Дамп схемы, соответствующие pattern. Шаблон интерпретируется по тем же правилам, что и для -n. Аргумент-N может быть задан более одного раза, чтобы исключить схемы, соответствующие любому из нескольких шаблонов.

Когда заданы и -n и -N, в дамп включаются схемы, которые соответствуют как минимум одному -n, но не -N. Если аргумент -N задаётся без -n, то схемы, соответствующие -N, исключаются из обычного дампа.

Шаблоны Таблиц

-t pattern, --table= pattern

Включать в Дамп только таблицы с именами, соответствующими pattern. Здесь определение «таблица» включает в себя представления, материализованные представления, последовательности и сторонние таблицы. Несколько таблиц можно выбрать, написав несколько ключей -t. Параметр pattern интерпретируется как шаблон тем же правилам, которые используются в командах qsql

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

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

Заметка
Если указан параметр -t, qhb_dump не пытается создать дамп каких-либо других объектов базы данных, от которых могут зависеть выбранные таблицы. Следовательно, нет никакой гарантии, что результаты дампа конкретной таблицы могут быть успешно восстановлены в чистую базу данных.

Исключение Схем

-N pattern , --exclude-schema= pattern

-T pattern, --exclude-table= pattern

Не включать в Дамп схемы, соответствующие pattern. Шаблон интерпретируется по тем же правилам, что и для -t. Аргумент-T может быть задан более одного раза, чтобы исключить таблицы, соответствующие любому из нескольких шаблонов.

Когда заданы и -t и -T, в дамп включаются таблицы, которые соответствуют как минимум одному -t, но не -T. Если аргумент -T используется без -t, то таблицы, соответствующие -T, исключаются из обычного дампа.

column inserts

--column-inserts

Дамп данных в виде команды INSERT с явными указанием столбцов
(INSERT INTO table ( column, ...) VALUES ... ).

Восстановление по такому дампу очень медленное; в основном полезно для создания дампов, которые можно загружать в СУБД, отличные от QHB.

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

Отключение триггеров

--disable-triggers

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

В настоящее время команды, создаваемые с ключом --disable-triggers должны выполняться суперпользователем. Таким образом, вы должны также указать имя суперпользователя с помощью -S или, запустить полученный скрипт как суперпользователь.

Эта опция имеет смысл только для простого текстового формата. Для форматов архива вы можете указать эту опцию при вызове qhb_restore .

Защита строк

--enable-row-security

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

Обратите внимание, что если вы используете эту опцию в настоящее время, вы, вероятно, также захотите, чтобы дамп был в формате INSERT так как COPY FROM во время восстановления не поддерживает защиту строк.

exclude table data

--exclude-table-data= pattern

Не сбрасывайте данные для таблиц, соответствующих pattern.
Шаблон интерпретируется по тем же правилам, что и для -t.

--exclude-table-data аргумент может быть задан более одного раза, чтобы исключить таблицы, соответствующие любому из нескольких шаблонов.

Эта опция полезна, когда вам нужно определение конкретной таблицы, даже если вам не нужны данные в ней.

Чтобы исключить данные для всех таблиц в базе данных, см. --schema-only.

inserts

--inserts

Создаёт дамп через команды INSERT (а не COPY ). Это сделает восстановление очень медленным; в основном полезно для создания дампов, которые можно загружать в базы данных, отличные от QHB.

Любая ошибка во время перезагрузки приведет к потере только строк, которые являются частью проблемной INSERT, а не всего содержимого таблицы.

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

Опция --column-inserts безопасна от изменений порядка столбцов, хотя и медленнее.

load via partition root

--load-via-partition-root

Для партиции таблицы, в дамп формируются команды COPY или INSERT, ссылающиеся на корневую таблицу в иерархии партицирования, а не на эту партицию.

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

Это возможно, когда столбец по которому выполнено партицирование имеет текстовый тип, а правило сортировки определено иначе на стороне системы куда выгружается дамп.

Лучше не использовать параллелизм при восстановлении из архива, созданного с помощью этой опции, потому что qhb_restore не будет точно знать, в какой раздел (ы) данный элемент данных архива будет загружать данные. Это может привести к существенному замедлению из-за конфликтов блокировок между параллельными заданиями. Возможен даже сбой восстановления из-за того что ограничение по внешнему ключу, вступит в силу до загрузки всех нужных данных.

Экранирование идентификаторов

--quote-all-identifiers

Включает принудительное экранирование всех идентификаторов при формировании дампа. Эта опция рекомендуется при выгрузке базы данных с сервера, основная версия QHB которого отличается от версии qhb_dump, или в случае если дамп предназначен для загрузки на сервер другой версии.

По умолчанию qhb_dump заключает в кавычки только идентификаторы, которые являются зарезервированными словами в своей основной версии. Это иногда приводит к проблемам совместимости при работе с серверами других версий, которые имеют разные наборы зарезервированных слов. Использование --quote-all-identifiers предотвращает такие проблемы ценой более сложного для чтения сценария дампа.

section

--section= pre-data | data | post-data

Только дамп названого раздела. Имя раздела может быть pre-data, data или post-data. Эта опция может быть указана более одного раза, чтобы выбрать несколько разделов. По умолчанию дамп всех разделов.

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

serializable deferrable

--serializable-deferrable

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

См. Главу 13 для получения дополнительной информации об изоляции транзакций и управлении параллелизмом.

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

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

snapshot

--snapshot=SNAPSHOT

Используйте указанный синхронизированный моментальный снимок при создании дампа базы данных (подробности см. В таблице 9.87 ).

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

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

strict names

--strict-names

Требуется, чтобы каждая --schema схемы ( -n / --schema ) и таблица ( -t / --table ) соответствовала хотя бы одной схеме / таблице в базе данных, которую нужно вывести.

Обратите внимание, что если ни один из квалификаторов схемы / таблицы не найдет совпадения, qhb_dump выдаст ошибку даже без --strict-names.

Эта опция не влияет на -N / --exclude-schema, -T / --exclude-table или --exclude-table-data.

Шаблон исключения, не соответствующий ни одному объекту, не считается ошибкой.

use set session authorization

--use-set-session-authorization

Вывести стандартные команды SQL SET SESSION AUTHORIZATION вместо команд ALTER OWNER для определения принадлежности объекта. Это делает дамп более совместимым со стандартами, но в зависимости от истории объектов в дампе может не восстановиться должным образом. Кроме того, дамп с использованием SET SESSION AUTHORIZATION, безусловно, потребует привилегий суперпользователя для правильного восстановления, тогда как ALTER OWNER требует меньших привилегий.

Устаревшие опции

-R --no-reconnect

Эта опция устарела, но все же принята для обратной совместимости.

Окружение

PGDATABASE

PGHOST

PGOPTIONS

PGPORT

PGUSER

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

PG_COLOR

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

Диагностика

qhb_dump при работе выполняет операции SELECT. Если у вас есть проблемы с запуском qhb_dump, убедитесь, что вы можете запросить информацию из базы данных, например, с помощью qsql. Кроме того, будут применяться любые параметры подключения по умолчанию и переменные среды, используемые интерфейсной библиотекой libpq .

Активность базы данных qhb_dump обычно собирается сборщиком статистики. Если это нежелательно, вы можете установить для параметра track_counts значение false с помощью PGOPTIONS или команды ALTER USER.

Примечания

Если в вашем кластере баз данных есть какие-либо локальные дополнения к базе данных template1, будьте осторожны, чтобы восстановить вывод qhb_dump в действительно пустую базу данных; в противном случае вы можете получить ошибки из-за дублирования определений добавленных объектов. Чтобы создать пустую базу данных без каких-либо локальных дополнений, делайте копию используя template0 , а не template1, например:

CREATE DATABASE foo WITH TEMPLATE template0;

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

Файл дампа, созданный qhb_dump, не содержит статистику, используемую оптимизатором для принятия решений по планированию запросов. Поэтому целесообразно запускать ANALYZE после восстановления из файла дампа, чтобы обеспечить оптимальную производительность; см. раздел Обновление статистики планировщика и раздел Процесс «Автовакуум» для получения дополнительной информации.

Поскольку qhb_dump используется для передачи данных в более новые версии QHB, можно ожидать, что выходные данные qhb_dump загрузятся в версии сервера QHB, более новые, чем версия qhb_dump. qhb_dump также может создавать дампы с серверов QHB, которые старше его собственной версии. Однако qhb_dump не может создавать дампы с серверов QHB, более новых, чем его собственная основная версия; он откажется даже попытаться, вместо того, чтобы рискнуть сделать неправильный сброс. Кроме того, не гарантируется, что вывод qhb_dump может быть загружен на сервер более старой основной версии, даже если дамп был взят с сервера этой версии. Загрузка файла дампа на старый сервер может потребовать ручного редактирования файла дампа для удаления синтаксиса, не понятного старому серверу. Использование опции --quote-all-identifiers рекомендуется в кросс-версиях, поскольку это может предотвратить проблемы, возникающие из-за изменения списков зарезервированных слов в разных версиях QHB .

При дампе подписок логической репликации qhb_dump будет генерировать команды CREATE SUBSCRIPTION которые используют опцию connect = false, так что при восстановлении подписки не создаются удаленные подключения для создания слота репликации или для начальной копии таблицы. Таким образом, дамп может быть восстановлен без необходимости сетевого доступа к удаленным серверам. Затем пользователь должен повторно активировать подписки подходящим способом. Если задействованные хосты изменились, возможно, потребуется изменить информацию о соединении. Также может быть целесообразно обрезать целевые таблицы перед началом новой полной копии таблицы.

Примеры

Чтобы вывести базу данных mydb в файл SQL-скрипта:

$ qhb_dump mydb > db.sql

Чтобы вывести базу данных в архивный файл нестандартного формата:

$ qhb_dump -Fc mydb > db.dump

Чтобы вывести базу данных в архив формата каталогов:

$ qhb_dump -Fd mydb -f dumpdir

Чтобы вывести базу данных в архив в формате каталога параллельно с 5 рабочими заданиями:

$ qhb_dump -Fd mydb -j 5 -f dumpdir

Чтобы перезагрузить архивный файл в (только что созданную) базу данных с именем newdb :

$ qhb_restore -d newdb db.dump

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

$ qhb_restore -d qhb --clean --create db.dump

Выгрузить одну таблицу с именем mytab :

$ qhb_dump -t mytab mydb > db.sql

Для вывода всех таблиц, имена которых начинаются с emp в detroit схеме, кроме таблицы employee_log :

$ qhb_dump -t 'detroit.emp*' -T detroit.employee_log mydb > db.sql

Чтобы вывести все схемы, имена которых начинаются с east или west, а заканчиваются на gsm, при этом исключая любые схемы, содержащие в имени слово test :

$ qhb_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sql

То же самое, используя запись регулярного выражения для объединения ключей:

$ qhb_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sql

Чтобы вывести все объекты базы данных, кроме таблиц, имена которых начинаются с ts_ :

$ qhb_dump -T 'ts_*' mydb > db.sql

Чтобы указать имя в верхнем или смешанном регистре в -t и связанных с ним ключах, вам нужно заключить имя в двойные кавычки; иначе шаблон будет свёрнут в нижний регистр см. Шаблоны . Но двойные кавычки являются особенными для оболочки поэтому в свою очередь, они должны быть заключены в кавычки. Таким образом, чтобы вывести одну таблицу с именем в смешанном регистре, вам нужно что-то вроде

$ qhb_dump -t "\"MixedCaseName\"" mydb > mytab.sql

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

qhb_dumpall, qhb_restore, qsql