pg_dumpall
Выгружает все базы данных системы Greengage DB в один файл скрипта или другой архивный файл.
Синтаксис
pg_dumpall [<connection-option> ...] [<dump-option> ...]
pg_dumpall -? | --help
pg_dumpall -V | --version
Описание
pg_dumpall — стандартная утилита PostgreSQL для резервного копирования всех баз данных, которая также поддерживается в Greengage DB.
Она создает один (непараллельный) дамп.
Для регулярных бэкапов Greengage DB рекомендуется использовать утилиты резервного копирования Greengage DB.
pg_dumpall создает один файл скрипта, содержащий SQL-команды, которые могут использоваться в качестве входных данных для psql при восстановлении баз данных.
Это делается путем вызова pg_dump для каждой базы данных.
pg_dumpall также выгружает глобальные объекты, общие для всех баз данных.
pg_dump не сохраняет эти объекты.
Это включает информацию о пользователях и группах базы данных, а также права доступа, применяемые к базам данных в целом.
Поскольку pg_dumpall читает таблицы из всех баз данных, для создания полной выгрузки потребуется подключиться от имени суперпользователя.
Также права суперпользователя понадобятся для запуска сохраненного скрипта, чтобы получить возможность добавлять пользователей и группы, а также создавать базы данных.
SQL-скрипт будет выведен в стандартный вывод.
Используйте параметр [-f | --file] или операторы оболочки для перенаправления в файл.
pg_dumpall требуется несколько раз подключаться к мастеру Greengage DB (один раз для каждой базы данных).
Если вы используете парольную аутентификацию, скорее всего, пароль будет запрошен каждый раз.
В таких случаях удобно использовать файл ~/.pgpass.
Параметры
Параметры выгрузки
- -a | --data-only
-
Выгружает только данные без схемы (определений объектов). Этот параметр имеет смысл только для формата обычного текста. Для архивных форматов его можно указать при вызове pg_restore.
- -c | --clean
-
Добавляет команды SQL для удаления баз данных перед командами, создающими их. Этот параметр имеет смысл только для формата обычного текста. Для архивных форматов его можно указать при вызове
pg_restore. - -f <filename> | --file=<filename>
-
Направляет вывод в указанный файл.
- -g | --globals-only
-
Выгружает только глобальные объекты (роли и табличные пространства), базы данных не выгружаются.
- -o | --oids
-
Включает идентификаторы объектов (OID) в данные каждой таблицы при выгрузке. Использование этого параметра не рекомендуется для файлов, которые планируется восстанавливать в Greengage DB.
- -O | --no-owner
-
Не включает команды для установки владельца объектов в соответствии с исходной базой данных. По умолчанию
pg_dumpдобавляет операторыALTER OWNERилиSET SESSION AUTHORIZATION, чтобы установить владельца созданных объектов базы данных. Эти команды вызовут ошибку при запуске скрипта, если он выполняется не суперпользователем или не пользователем, который владеет всеми объектами в скрипте. Чтобы создать скрипт, который может быть восстановлен любым пользователем и при этом назначит этому пользователю владение всеми объектами, используйте-O. Этот параметр имеет смысл только для формата обычного текста. Для архивных форматов его можно указать при вызовеpg_restore. - -r | --roles-only
-
Выгружает только роли, без баз данных и табличных пространств.
- -s | --schema-only
-
Выгружает только определения объектов (схему), без данных.
- -S <username> | --superuser=<username>
-
Задает имя суперпользователя для использования при деактивации триггеров. Актуально только при использовании параметра
--disable-triggers. Рекомендуется не указывать этот параметр и вместо этого запускать полученный скрипт от имени суперпользователя.ПРИМЕЧАНИЕGreengage DB не поддерживает пользовательские триггеры.
- -t | --tablespaces-only
-
Выгружает только табличные пространства, без баз данных и ролей.
- -v | --verbose
-
Включает подробный режим вывода. В этом режиме
pg_dumpвыводит детальные комментарии к объектам и время начала/окончания в дампе, а сообщения о ходе выполнения — в стандартный поток ошибок. - -V | --version
-
Выводит версию
pg_dumpallи завершает работу. - -x | --no-privileges | --no-acl
-
Не включает в выгрузку привилегии доступа (команды
GRANT/REVOKE). - --binary-upgrade
-
Параметр предназначен для использования утилитами обновления на месте. Использование его для других целей не рекомендуется и не поддерживается.
- --column-inserts | --attribute-inserts
-
Выгружает данные в виде команд
INSERTс явным указанием имен столбцов (INSERT INTO <table> (<column>, …) VALUES …). Это делает восстановление значительно медленнее и в основном полезно для выгрузок, предназначенных для баз данных, несовместимых с PostgreSQL. При этом каждая строка создается отдельной командой, поэтому ошибка при загрузке затронет только эту строку, а не всю таблицу. - --disable-dollar-quoting
-
Отключает использование долларовых кавычек для тел функций и принудительно применяет обычные строковые литералы SQL.
- --disable-triggers
-
Применяется при создании выгрузки только с данными. Указывает
pg_dumpallвключить команды для временной деактивации триггеров в целевых таблицах при перезагрузке данных. Используется, если в таблицах есть триггеры, которые не должны срабатывать во время загрузки. Команды для--disable-triggersдолжны выполняться от имени суперпользователя. Либо укажите имя суперпользователя через-S, либо предпочтительнее запустите скрипт напрямую от имени суперпользователя.ПРИМЕЧАНИЕGreengage DB не поддерживает пользовательские триггеры.
- --if-exists
-
Определяет применение условных команд (например, с добавлением выражения
IF EXISTS) при удалении баз данных и других объектов. Может использоваться только совместно с параметром--clean. - --inserts
-
Выгружает данные в виде команд
INSERTвместоCOPY. Это делает восстановление медленным, но полезно для выгрузок, которые нужно загрузить в СУБД, не основанные на PostgreSQL. Так как для каждой строки создается отдельная команда, ошибка при восстановлении затронет только эту строку, а не всю таблицу. Обратите внимание: восстановление может полностью не выполниться при изменении порядка столбцов. Параметр--column-insertsбезопасен относительно изменения порядка столбцов, но еще медленнее. - --lock-wait-timeout=<timeout>
-
Задает максимальное время ожидания получения разделяемой блокировки таблиц в начале выгрузки. Если таблица не будет заблокирована в течение указанного тайм-аута, выгрузка завершится с ошибкой. Тайм-аут можно указать в любом формате, принимаемом
SET <statement_timeout>. Допустимые значения зависят от версии сервера, из которого выполняется выгрузка, но целое число миллисекунд принимается всеми версиями Greengage DB. - --no-security-labels
-
Не выгружает метки безопасности.
- --no-tablespaces
-
Не выводит команды для выбора табличных пространств. С этим параметром все объекты будут созданы в том табличном пространстве, которое используется по умолчанию во время восстановления.
- --no-unlogged-table-data
-
Не выгружает данные из нежурналируемых таблиц. Определения таблиц (схема) выгружаются как обычно; содержимое таблиц при этом не экспортируется.
- --quote-all-identifiers
-
Принудительно заключает все идентификаторы в кавычки. Рекомендуется использовать при выгрузке базы данных с сервера, основная версия Greengage DB которого отличается от версии
pg_dumpall, или если выгрузка предназначена для загрузки на сервер другой основной версии. По умолчаниюpg_dumpallзаключает в кавычки только идентификаторы, являющиеся зарезервированными словами в его текущей версии. Это может вызвать проблемы совместимости с серверами других версий, у которых набор зарезервированных слов отличается. Использование--quote-all-identifiersпредотвращает такие проблемы, хотя делает скрипт выгрузки менее читаемым. - --resource-queues
-
Выгружает определения ресурсных очередей.
- --resource-groups
-
Выгружает определения ресурсных групп.
- --use-set-session-authorization
-
Выводит команды SQL-стандарта
SET SESSION AUTHORIZATIONвместоALTER OWNERдля установки владения объектами. Это повышает совместимость со стандартами, но может привести к некорректному восстановлению в зависимости от истории объектов. Выгрузка сSET SESSION AUTHORIZATIONпотребует привилегий суперпользователя для корректного восстановления, тогда какALTER OWNERтребует меньших привилегий. - --gp-syntax
-
Включает синтаксис Greengage DB в операторах
CREATE TABLE. Это позволяет экспортировать политику распределения (выраженияDISTRIBUTED BYилиDISTRIBUTED RANDOMLY) таблиц Greengage DB, что важно при восстановлении в других кластерах Greengage DB. - --no-gp-syntax
-
Не выводит выражения распределения таблиц в операторах
CREATE TABLE. - -? | --help
-
Отображает справку по аргументам командной строки
pg_dumpallи завершает работу.
Параметры подключения
- -d <connstr> | --dbname=<connstr>
-
Указывает параметры для подключения к серверу в виде строки подключения. Дополнительную информацию см. в разделе Connection Strings документации PostgreSQL.
Параметр называется
--dbnameдля согласованности с другими клиентскими приложениями, но посколькуpg_dumpallдолжен подключаться ко многим базам данных, имя базы данных в строке подключения будет проигнорировано. Используйте параметр-l, чтобы указать имя базы данных, используемой для выгрузки глобальных объектов и обнаружения других баз данных для выгрузки. - -h <host> | --host=<host>
-
Имя хоста, на котором работает мастер Greengage DB. Если параметр не указан, читается из переменной окружения
PGHOST; по умолчанию используетсяlocalhost. - -l <dbname> | --database=<dbname>
-
Указывает имя базы данных для подключения и выгрузки глобальных объектов. Если параметр не указан, используется база данных
postgres. Если база данныхpostgresне существует, используется база данныхtemplate1. - -p <port> | --port=<port>
-
TCP-порт, на котором мастер Greengage DB прослушивает подключения. Если параметр не указан, читается из переменной окружения
PGPORT; по умолчанию используется порт5432. - -U <username> | --username=<username>
-
Имя роли базы данных для подключения. Если параметр не указан, читается из переменной окружения
PGUSER; по умолчанию используется имя текущей системной роли. - -w | --no-password
-
Никогда не запрашивает пароль. Если сервер требует аутентификацию по паролю, а пароль недоступен другими способами (например, через файл .pgpass), попытка подключения завершится неудачей. Этот параметр удобен для пакетных заданий и скриптов, где нет пользователя для ввода пароля.
- -W | --password
-
Принудительно запрашивает пароль при подключении.
- --role=<rolename>
-
Указывает роль, которая будет использоваться для создания выгрузки. После подключения к базе данных
pg_dumpallвыполнит командуSET ROLE <rolename>. Это полезно, когда аутентифицированному пользователю (через-U) не хватает прав, необходимыхpg_dumpall, но он может переключиться на роль с нужными привилегиями. Некоторые инсталляции ограничивают прямой вход от имени суперпользователя; использование этого параметра позволяет создавать выгрузки, соблюдая политику безопасности.
Примечания
Поскольку pg_dumpall внутренне вызывает pg_dump, некоторые диагностические сообщения будут ссылаться на pg_dump.
После восстановления рекомендуется выполнить ANALYZE для каждой базы данных для обновления статистики планировщика запросов.
Также можно выполнить vacuumdb -a -z для очистки и анализа всех баз данных.
pg_dumpall требует, чтобы все необходимые каталоги табличных пространств существовали до восстановления; в противном случае создание баз данных в нестандартных расположениях завершится ошибкой.
Примеры
Выгрузить все базы данных:
$ pg_dumpall > db.out
Восстановить базы данных из этого файла:
$ psql template1 -f db.out
Выгрузить только глобальные объекты (включая ресурсные очереди):
$ pg_dumpall -g --resource-queues