×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

3.10.1. SQL-дамп

3.10.1.1. Восстановление дампа
3.10.1.2. Использование утилиты pg_dumpall
3.10.1.3. Работа с базами данных большого объёма

Суть данного метода заключается в формировании файла с командами на языке SQL, выполнение которых на сервере позволяет воссоздать базу данных в том состоянии, в котором она находилась на момент создания дампа. Digital Q.DataBase предоставляет вспомогательную утилиту pg_dump для выполнения этой задачи. Базовый синтаксис использования данной команды имеет следующий вид:

pg_dump имя_базы_данных > файл_дампа

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

pg_dump является обычным Digital Q.DataBase клиентским приложением (хотя и весьма сложным по своей логике). Это означает, что процедуру резервного копирования можно выполнить с любого удаленного хоста, имеющего доступ к базе данных. Однако следует учитывать, что утилита pg_dump не обладает специальными привилегиями. В частности, она должна иметь права доступа на чтение всех таблиц, для которых создается резервная копия, поэтому для выгрузки всей базы данных утилиту почти всегда следует запускать от имени суперпользователя базы данных. (При отсутствии достаточных прав доступа для резервного копирования всей базы данных можно выполнить копирование тех ее частей, к которым имеется доступ, используя такие параметры, как -n схема или -t таблица.)

Для указания того, к какому серверу базы данных pg_dump следует обратиться, используйте параметры командной строки -h хост и -p порт. По умолчанию в качестве хоста используется локальный хост или значение, которое PGHOST задаёт переменная окружения. Аналогичным образом, порт по умолчанию определяется PGPORT переменной окружения или, при её отсутствии, значением по умолчанию, заданным при компиляции. (Как правило, сервер имеет то же самое значение по умолчанию, установленное при компиляции.)

Как и любое другое Digital Q.DataBase клиентское приложение, pg_dump утилита по умолчанию устанавливает соединение с именем пользователя базы данных, которое совпадает с именем пользователя текущей операционной системы. Для переопределения этого поведения следует либо указать параметр -U либо установить значение переменной окружения PGUSER. Следует помнить, что pg_dump соединения выполняются с применением стандартных механизмов клиентской аутентификации (которые описаны в Глава 3.5).

Важным преимуществом утилиты pg_dump перед другими методами резервного копирования, описанными далее, является то, что pg_dumpвыходные данные этой утилиты, как правило, могут быть загружены в более новые версии Digital Q.DataBase, в то время как резервные копии на уровне файловой системы и непрерывное архивирование строго зависят от конкретной версии сервера. pg_dump также является единственным методом, применимым для переноса базы данных на другую архитектуру процессора, например, при переходе с 32-битного сервера на 64-битный.

Дампы, созданные с помощью утилиты pg_dump являются внутренне непротиворечивыми, что означает, что дамп представляет собой моментальный снимок базы данных на момент начала выполнения pg_dump утилиты. pg_dump не блокирует выполнение других операций с базой данных во время своей работы. (Исключение составляют операции, требующие исключительной блокировки, такие как большинство форм команды ALTER TABLE.)

3.10.1.1. Восстановление дампа #

Текстовые файлы, созданные утилитой pg_dump предназначены для чтения утилитой утилита psql с использованием её настроек по умолчанию. Общий вид команды для восстановления текстового дампа выглядит следующим образом:

psql -X имя_базы_данных < файл_дампа

где файл_дампа — это файл, сформированный командой pg_dump команда. База данных имя_базы_данных не будет создана данной командой, поэтому её необходимо создать самостоятельно из template0 перед запуском утилита psql (например, с помощью команды createdb -T template0 имя_базы_данных). Для обеспечения утилита psql запускается с настройками по умолчанию, используйте -X (--no-psqlrc) параметр. утилита psql поддерживает параметры, аналогичные параметрам pg_dump для указания сервера базы данных для подключения и имени используемого пользователя. См. справочную psql страницу для получения дополнительной информации.

Восстановление дампов, сохранённых в нетекстовых форматах, должно выполняться с помощью pg_restore утилиты.

Перед восстановлением с применением метода SQL-дамп все пользователи, являющиеся владельцами объектов или имеющие права доступа к объектам в выгруженной базе данных, уже должны существовать. Если они отсутствуют, в процессе восстановления не удастся воссоздать объекты с исходным владельцем и/или правами доступа. (Иногда это допустимо, но обычно это нежелательно).

По умолчанию утилита psql сценарий продолжит выполнение даже после возникновения ошибки языка SQL. Для изменения этого поведения можно запустить утилита psql с установленной ON_ERROR_STOP переменной, чтобы утилита psql завершала работу с кодом состояния 3 при возникновении ошибки языка SQL:

psql -X --set ON_ERROR_STOP=on имя_базы_данных < файл_дампа

В любом случае база данных будет восстановлена лишь частично. В качестве альтернативы можно указать, что весь дамп должен быть восстановлен в рамках единой транзакции; в этом случае восстановление будет либо полностью завершено, либо полностью откачено. Данный режим может быть активирован путем передачи -1 или --single-transaction в качестве опций командной строки в утилита psql. При использовании этого режима следует учитывать, что даже незначительная ошибка может привести к откату процесса восстановления, выполнявшегося в течение многих часов. Тем не менее, такой вариант может быть предпочтительнее ручной очистки сложной базы данных после частичного восстановления из дампа.

Способность утилиты pg_dump и утилита psql записывать данные в программные каналы или считывать из них позволяет переносить базу данных напрямую с одного сервера на другой, например:

pg_dump -h host1 имя_базы_данных | psql -X -h host2 имя_базы_данных

Важно

Дампы, создаваемые утилитой pg_dump зависят от template0. Это означает, что любые языки, процедуры и т. д., добавленные через template1 также будут выгружены утилитой pg_dump. В результате при восстановлении, если используется модифицированный template1, необходимо создать пустую базу данных на основе template0, как в приведенном выше примере.

После восстановления из резервной копии целесообразно выполнить команду ANALYZE в каждой базе данных, чтобы обеспечить оптимизатор запросов актуальной статистикой; см. Раздел 3.9.1.3 и Раздел 3.9.1.6 для получения подробных сведений. Дополнительные рекомендации по эффективной загрузке больших объемов данных в Digital Q.DataBase приведены в разделе Раздел 2.11.4.

3.10.1.2. Использование утилиты pg_dumpall #

pg_dump позволяет выгружать только одну базу данных за раз, при этом не выгружается информация о ролях или табличных пространствах (поскольку они относятся ко всему кластеру, а не к отдельной базе данных). Для обеспечения удобной выгрузки всего содержимого кластера баз данных предусмотрена pg_dumpall утилита. pg_dumpall выполняет резервное копирование каждой базы данных в заданном кластере, а также сохраняет общекластерные данные, такие как определения ролей и табличных пространств. Основной порядок использования данной команды:

pg_dumpall > файл_дампа

Восстановление данных из полученного дампа выполняется с помощью утилита psql:

psql -X -f файл_дампа postgres

(На самом деле для начала работы допускается указывать имя любой существующей базы данных, однако при загрузке в пустой кластер postgres обычно следует использовать именно это имя.) При восстановлении дампа обязательно наличие прав суперпользователя базы данных, pg_dumpall так как это необходимо для восстановления сведений о ролях и табличных пространствах. Если используются табличные пространства, необходимо убедиться, что пути к ним в дампе соответствуют параметрам новой установки.

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

Данные уровня кластера могут быть выгружены отдельно с помощью pg_dumpall --globals-only . Это необходимо для полного резервного копирования кластера при запуске pg_dump команда для работы с отдельными базами данных.

3.10.1.3. Работа с базами данных большого объёма #

В некоторых операционных системах существуют ограничения на максимальный размер файла, что приводит к возникновению проблем при создании больших pg_dump выходных файлов. К счастью, pg_dump может выполнять запись в стандартный поток вывода, что позволяет использовать стандартные утилиты Unix для обхода данной потенциальной проблемы. Существует несколько возможных методов:

Использование сжатых дампов.  Допускается использование любой программы сжатия, например, gzip:

pg_dump имя_базы_данных | gzip > filename.gz

Восстановление данных выполняется с помощью команды:

gunzip -c filename.gz | утилита psql имя_базы_данных

или:

cat filename.gz | gunzip | утилита psql имя_базы_данных

Использование split Данная split команда позволяет разделить выходные данные на файлы меньшего размера, допустимого для базовой файловой системы. Например, для создания фрагментов размером 2 ГБ:

pg_dump имя_базы_данных | split -b 2G - filename

Восстановление данных выполняется с помощью команды:

cat filename* | утилита psql имя_базы_данных

При использовании реализации GNU split, её можно использовать совместно с gzip следующим образом:

pg_dump имя_базы_данных | split -b 2G --filter='gzip > $FILE.gz'

Восстановление может быть выполнено с помощью zcat.

Использование pg_dumpсобственного формата дампа утилиты pg_dump.  Если Digital Q.DataBase утилита была собрана в системе с установленной zlib , данные в собственном формате дампа будут сжиматься непосредственно при записи в выходной файл. При этом будут получены файлы дампов, размер которых сопоставим с результатами использования gzip, но при этом обеспечивается дополнительное преимущество: возможность выборочного восстановления таблиц. Следующая команда выполняет выгрузку базы данных с использованием пользовательского формата дампа:

pg_dump -Fc имя_базы_данных > filename

Дамп в пользовательском формате не является сценарием для утилиты утилита psql, а вместо этого их необходимо восстанавливать с помощью утилиты pg_restore, например:

pg_restore -d имя_базы_данных filename

Подробные сведения см. на pg_dump и pg_restore справочных страницах.

Для баз данных очень большого объема может потребоваться комбинирование утилиты split с одним из двух других подходов.

Использование pg_dumpфункцию параллельного дампа утилиты.  Для ускорения создания дампа базы данных большого объема можно использовать pg_dumpпараллельный режим работы утилиты Данная операция позволяет выполнять выгрузку нескольких таблиц одновременно. Степень параллелизма можно регулировать с помощью параметра -j параметр. Параллельное создание дампов поддерживается только для формата архива «каталог» (directory).

утилита pg_dump с параметром -j num -F d -f out.dir имя_базы_данных

Допускается использование утилита pg_restore с параметром -j для параллельного восстановления данных из дампа. Этот механизм применим к любому архиву в формате «custom» или «directory» независимо от того, использовалась ли при его создании утилита pg_dump с параметром -j.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению