qhb_dumpall - извлекает кластер базы данных QHB в файл сценария
qhb_dumpall
- извлекает кластер базы данных QHB в файл сценария
Описание
qhb_dumpall
- это утилита для записи ( « дампа » ) всех баз данных
QHB кластера в один файл сценария. Файл сценария содержит команды
SQL, которые можно использовать в качестве входных данных для qsql для
восстановления баз данных. Это делается путем вызова qhb_dump для каждой
базы данных в кластере. qhb_dumpall
также выводит глобальные объекты,
которые являются общими для всех баз данных, то есть роли базы данных и
табличные пространства. ( qhb_dump
не сохраняет эти объекты.)
Поскольку qhb_dumpall
читает таблицы из всех баз данных, вам, скорее
всего, придется подключиться как суперпользователь базы данных, чтобы
получить полный дамп. Также вам понадобятся привилегии суперпользователя
для выполнения сохраненного скрипта, чтобы иметь возможность добавлять
роли и создавать базы данных.
Сценарий SQL будет записан в стандартный вывод. Используйте параметр -f / --file
или операторы оболочки, чтобы перенаправить его в файл.
qhb_dumpall
необходимо несколько раз подключиться к серверу QHB
(один раз для каждой базы данных). Если вы используете аутентификацию по
паролю, он будет запрашивать пароль каждый раз. В таких случаях удобно
иметь файл ~/.pgpass.
Синтаксис
qhb_dumpall [connection-option...] [OPTION...]
Параметры
Следующие параметры командной строки управляют содержимым и форматом вывода.
COMMON OPTIONS
Аргумент | Описание |
---|---|
-?, --help | Показать справку об аргументах командной строки и выйти. |
-V, --version | Вывести версию qhb_dumpall и выйти |
-v, --verbose | Выводит на экран команды, которые qhb_dumpall генерирует и отправляет на сервер. |
GENERAL OPTIONS
Аргумент | Описание |
---|---|
-f, --file=FILENAME | Перенаправить вывод в указанный файл для qhb_dumpall . Иначе используется стандартный вывод. |
--lock-wait-timeout=TIMEOUT | Таймаут, на получение блокировки таблиц. Если невозможно заблокировать таблицу в течение указанного времени - выдаётся ошибка. Подробнее |
--no-sync | Не дожидаться синхронизации записи файлов на диск Подробнее |
CONNECTION OPTIONS
Аргумент | Описание |
---|---|
-d, --dbname=DBNAME | Ознакомиться с отличиями от стандартного поведения |
-h, --host=HOSTNAME | Имя хоста, на котором работает сервер. Если значение начинается с косой черты, оно используется в качестве каталога для сокета домена Unix. Значение по умолчанию берется из переменной среды PGHOST , далее предпринимается попытка подключения через сокет домена Unix. |
-l, --database=DBNAME | alternative-dbname |
-p, --port=PORT | TCP порт или расширение файла локального сокета домена Unix. По умолчанию берётся переменная среды PGPORT , или порт заданный при компиляции. |
-U, --username=USERNAME | Имя пользователя для подключения. |
-w, --no-password | Не запрашивать ввод пароля. Если серверу требуется аутентификация по паролю, а пароль недоступен другими способами, такими как файл .pgpass, попытка подключения завершится неудачно. Эта опция может быть полезна в пакетных заданиях и сценариях, где нет ни одного пользователя для ввода пароля. |
-W, --password | qhb_dumpall автоматически запросит пароль, если сервер требует аутентификацию по паролю. qhb_dumpall будет пытаться подключиться, для аутентификации. В некоторых случаях стоит ввести -W чтобы избежать дополнительной попытки подключения. |
--role=ROLENAME | Задает имя роли, которая будет использоваться для создания дампа. Подробнее |
OPTIONS
Аргумент | Описание |
---|---|
-a, --data-only | Дамп только данных, а не схемы (DDL определения данных). |
-c, --clean | Включите команды SQL для очистки (удаления) баз данных перед их воссозданием. В дамп будут добавлены команды DROP для ролей и табличных пространств. |
-E encoding, --encoding=encoding | Создать дамп в указанной кодировке. По умолчанию дамп создается в кодировке базы данных. (Другой способ - установить для переменной среды PGCLIENTENCODING желаемую кодировку дампа.) |
-g, --globals-only | Дамп только глобальные объекты (роли и табличные пространства), без баз данных. |
-O, --no-owner | Не создавать команды для установки владельца объектов Подробнее |
-r, --roles-only | Дамп только ролей, без баз данных или табличных пространств. |
-s, --schema-only | Дамп только определения объектов (схема), а не данные. |
-S NAME, --superuser=NAME | Имя суперпользователя, которое будет использоваться при отключении триггеров. Подробнее |
-t, --tablespaces-only | Дамп только табличные пространства, без баз данных или ролей. |
-x, --no-privileges | Запретить сброс прав доступа (команды GRANT / REVOKE ). |
--binary-upgrade | Эта опция предназначена для использования утилитами обновления на месте. Использование в других целях не рекомендуется и не поддерживается. Поведение опции может измениться в будущих выпусках без предварительного уведомления. |
--column-inserts | Формировать Дамп данных в виде команды INSERT с явными указанием столбцов Подробнее |
--disable-dollar-quoting | Этот параметр отключает использование долларовых кавычек для тел функций; можно использовать кавычки из стандартного синтаксиса SQL. |
--disable-triggers | Включать в дамп команды на отключение триггеров. Подробнее |
--extra-float-digits=NUM | Использовать заданное значение extra_float_digits для чисел с плавающей запятой вместо максимально доступной точности. Обычные дампы, созданные для резервного копирования, не должны использовать эту опцию. |
--exclude-database=pattern | Не Включать в Дамп базы данных, соответствующие pattern Подробнее |
--if-exists | Используйте условные команды (добавить IF EXISTS ) при очистке объектов базы данных и других объектов. Не работает без --clean . |
--inserts | Создаёт дамп через команды INSERT Подробнее |
--load-via-partition-root | Для партиции таблицы ссылаться на корневую таблицу в иерархии партицирования, а не на эту партицию. Подробнее |
--no-comments | Не включать в дамп комментарии. |
--no-publications | Не включать в дамп публикации. |
--no-security-labels | Не включать в дамп защитные метки. |
--no-subscriptions | Не включать в дамп подписки. |
--no-role-passwords | Не сбрасывайте пароли для ролей. Подробнее |
--no-sync | Не дожидаться синхронизации записи файлов на диск Подробнее |
--no-tablespaces | Не формировать команды для указания табличных пространств. Все объекты будут создаваться в табличном пространстве по умолчанию при восстановлении. |
--no-unlogged-table-data | Не выгружать данные нежурналируемых таблицы в дамп. Не влияет на выгрузку определений таблиц. |
--on-conflict-do-nothing | Добавить ON CONFLICT DO NOTHING к командам INSERT . Работает только с --inserts или --column-inserts . |
--quote-all-identifiers | Включить принудительно Экранирование идентификаторов при создании дампа Подробнее. |
--rows-per-insert=NROWS | Выставляет максимально количество строк для INSERT (не COPY). Должно быть больше нуля. Любая ошибка во время загрузки приведет к потере только строк, которые являются частью проблемной INSERT. |
--use-set-session-authorization | Подробнее |
Дополнительная информация по параметрам
TIMEOUT
--lock-wait-timeout=TIMEOUT
Таймаут, на получение блокировки таблиц в начале дампа. Если невозможно заблокировать таблицу в течение указанного времени - выдаётся ошибка.
Тайм-аут может быть указан в любом из форматов,
принятых с помощью SET statement_timeout
.
(Разрешенные форматы различаются в зависимости от версии сервера,
с которого выгружается дамп; целое число миллисекунд принимается всеми версиями.)
no sync
--no-sync
По умолчанию qhb_dumpall
будет ожидать безопасной записи всех файлов на
диск. Эта опция заставляет qhb_dumpall
возвращаться без ожидания, что
быстрее, но означает, что последующий сбой операционной системы
может привести к повреждению дампа. Как правило, этот параметр
полезен для тестирования, но его не следует использовать при сбросе
данных из производственной установки.
dbname
-d connstr, --dbname=connstr
Задает параметры, используемые для подключения к серверу, в виде строки подключения.
Параметр называется --dbname
для согласованности с другими клиентскими приложениями,
но поскольку qhb_dumpall
необходимо подключаться ко многим базам данных,
имя базы данных в строке подключения будет игнорироваться.
Используйте параметр -l
чтобы указать имя базы данных, используемой для начального соединения,
которая будет создавать дамп глобальных объектов и определять, какие другие базы данных должны быть дампированы.
alternative-dbname
-l dbname, --database=dbname
Задает имя базы данных, к которой необходимо подключиться для создания
дампов глобальных объектов и определения того, какие другие базы данных должны быть выгружены.
Если не указано иное, будет использоваться база данных qhb
,
если она не существует, будет использоваться template1
.
ROLENAME
--role=ROLENAME
Задает имя роли, которая будет использоваться для создания дампа.
qhb_dumpall
выполнит команду SET ROLE rolename
после подключения к базе данных.
Это полезно, когда пользователю (указанному ключом -U
) не хватает привилегий,
необходимых для снятия дампа, но возможно переключиться на роль с необходимыми правами.
В некоторых установках задана политика, запрещающая вход в систему от имени суперпользователя, использование этой опции позволяет создавать дампы без нарушения политики.
no owner
-O, --no-owner
Не создавать команды для установки владельца объектов в соответствии с исходной базой данных.
По умолчанию qhb_dumpall
выдает операторы ALTER OWNER
или SET SESSION AUTHORIZATION
чтобы установить владельца созданных элементов схемы.
Эти операторы не будут выполнены при запуске сценария,
если он не запущен суперпользователем (или тем же пользователем,
которому принадлежат все объекты в сценарии).
Чтобы создать сценарий, который может быть восстановлен любым пользователем,
но предоставит ему право владения всеми объектами, укажите -O
.
superuser
Имя суперпользователя, которое будет использоваться при отключении триггеров.
Это актуально, только если используется --disable-triggers
.
(Обычно лучше не указывать это и вместо этого запускать полученный скрипт как суперпользователь.)
column inserts
--column-inserts
Дамп данных в виде команды INSERT с явными указанием столбцов
(INSERT INTO table ( column, ...) VALUES ...
).
Восстановление по такому дампу очень медленное; в основном полезно для создания дампов, которые можно загружать в СУБД, отличные от QHB.
Отключение триггеров
--disable-triggers
Эта опция актуальна только при создании дампа содержащего только данные. Формирует команды для временного отключения триггеров на целевых таблицах во время восстановления данных. Используйте, если есть проверки ссылочной целостности или другие триггеры для таблиц, которые не нужно вызывать во время восстановления данных.
В настоящее время команды, создаваемые с ключом --disable-triggers
должны выполняться суперпользователем. Таким образом, вы должны
также указать имя суперпользователя с помощью -S
или,
запустить полученный скрипт как суперпользователь.
exclude database
--exclude-database=pattern
Не Включать в Дамп базы данных, соответствующие pattern
;
Несколько баз можно исключить, написав несколько ключей --exclude-database
.
Параметр pattern
интерпретируется как шаблон по тем же правилам,
которые используются командами qsql, поэтому несколько баз данных также можно исключить,
написав в шаблоне символы подстановки. При использовании подстановочных
знаков, будьте осторожны, если необходимо, указывайте шаблон, чтобы
предотвратить расширение оболочки подстановочными знаками.
inserts
--inserts
Создаёт дамп через команды INSERT
(а не COPY
). Это сделает
восстановление очень медленным; в основном полезно для создания
дампов, которые можно загружать в базы данных, отличные от
QHB.
Любая ошибка во время перезагрузки приведет к потере только строк, которые являются частью проблемной INSERT, а не всего содержимого таблицы.
Обратите внимание, что восстановление может завершиться неудачей, если вы изменили порядок столбцов.
Опция --column-inserts безопасна от изменений порядка столбцов, хотя и медленнее.
load via partition root
--load-via-partition-root
Для партиции таблицы, в дамп формируются команды COPY
или INSERT
,
ссылающиеся на корневую таблицу в иерархии партицирования,
а не на эту партицию.
В результате при загрузке данных подходящая партиция будет выбираться заново для каждой строки. Это может быть полезно при перезагрузке данных, когда на целевом сервере строки не всегда попадают в те же партиции, в которых они находились на исходном.
Это возможно, когда столбец по которому выполнено партицирование имеет текстовый тип, а правило сортировки определено иначе на стороне системы куда выгружается дамп.
no role passwords
--no-role-passwords
Не сбрасывать пароли для ролей.
После восстановления роли будут иметь нулевой пароль,
и проверка подлинности по паролю всегда будет неуспешной,
пока пароль не будет установлен.
Поскольку при pg_authid
этой опции значения пароля не нужны,
информация о роли читается из представления каталога pg_roles
, а не pg_authid
.
Следовательно, эта опция также помогает, если доступ к pg_authid
ограничен какой-либо политикой безопасности.
Экранирование идентификаторов
--quote-all-identifiers
Включает принудительное экранирование всех идентификаторов при формировании дампа.
Эта опция рекомендуется при выгрузке базы данных с сервера, основная версия
QHB которого отличается от версии qhb_dumpall
,
или в случае если дамп предназначен для загрузки на сервер другой версии.
По умолчанию qhb_dumpall
заключает в кавычки только идентификаторы,
которые являются зарезервированными словами в своей основной версии.
Это иногда приводит к проблемам совместимости при работе с серверами
других версий, которые имеют разные наборы зарезервированных слов.
Использование --quote-all-identifiers
предотвращает такие проблемы
ценой более сложного для чтения сценария дампа.
use set session authorization
--use-set-session-authorization
Вывести стандартные команды SQL SET SESSION AUTHORIZATION
вместо
команд ALTER OWNER
для определения принадлежности объекта. Это
делает дамп более совместимым со стандартами, но в зависимости от
истории объектов в дампе может не восстановиться должным образом.
Кроме того, дамп с использованием SET SESSION AUTHORIZATION
,
безусловно, потребует привилегий суперпользователя для правильного
восстановления, тогда как ALTER OWNER
требует меньших привилегий.
Окружение
PGHOST
PGOPTIONS
PGPORT
PGUSER
- Параметры подключения по умолчанию
PG_COLOR
- Указывает, использовать ли цвет в диагностических сообщениях. Возможные значения always, auto, never .
Эта утилита, как и большинство других утилит QHB, также использует переменные среды, поддерживаемые libpq .
Примечания
Поскольку qhb_dumpall
вызывает qhb_dump
для каждой БД, некоторые
диагностические сообщения будут ссылаться на qhb_dump
.
Опция --clean
может быть полезна, даже если вы собираетесь восстановить
скрипт дампа в новый кластер. Использование --clean
разрешает сценарию
удалять и заново создавать встроенные базы данных qhb и template1,
гарантируя, что эти базы данных сохранят те же свойства (например,
языковой стандарт и кодировку), которые были у них в исходном кластере.
Без этой опции эти базы данных сохранят свои существующие свойства
уровня базы данных, а также любое ранее существующее содержимое.
После восстановления рекомендуется запускать ANALYZE для каждой базы данных,
чтобы оптимизатор имел полезную статистику. Вы также можете запустить
vacuumdb -a -z
для анализа всех баз данных.
Не следует ожидать, что скрипт дампа будет работать полностью без
ошибок. В частности, поскольку сценарий будет выдавать команду CREATE ROLE
для каждой роли, существующей в исходном кластере, он обязательно
получит ошибку « роль уже существует » для суперпользователя начальной
загрузки, если только целевой кластер не был инициализирован с другим
именем суперпользователя начальной загрузки. Эта ошибка безвредна и
должна игнорироваться. Использование опции --if-exists
может привести к
ряду дополнительных безобидных сообщений об ошибках о
несуществующих объектах.
qhb_dumpall
требует, чтобы все необходимые каталоги табличного
пространства существовали до восстановления; в противном случае создание
базы данных завершится неудачно для баз данных, расположенных не по
умолчанию.
Примеры
Чтобы сбросить все базы данных:
$ qhb_dumpall > db.out
Неважно, к какой базе данных вы подключаетесь, поскольку файл сценария,
созданный qhb_dumpall
, будет содержать соответствующие команды для
создания и подключения к сохраненным базам данных.
Исключением является случай, если вы указали --clean
,
вы должны сначала подключиться к базе данных qhb
;
сценарий попытается немедленно удалить другие базы
данных, и это не удастся для базы данных, к которой вы подключены.
Смотрите Также
Проверьте qhb_dump для подробной информации о возможных состояниях ошибки.