PostgreSQL: резервное копирование и восстановление
Вступление
Резервная копия - это копия данных из вашей базы данных, которую можно использовать для восстановления этих данных. Резервные копии - это резервные копии физических файлов, используемых для хранения и восстановления ваших баз данных, таких как файлы данных, управляющие файлы и другие. Каждая физическая резервная копия - это копия файлов, хранящих информацию базы данных в каком-либо другом месте, будь то на диске или в каком-либо автономном хранилище, например на ленте.
Преимущества резервного копирования:
Имея действительные резервные копии базы данных, вы можете восстановить ваши данные после многих сбоев, таких как:
- Отказ носителя: Отказ носителя - это сбой чтения или записи файла на диске, необходимого для запуска базы данных, из-за физической проблемы с диском, такой как сбой головки.
- Аппаратные сбои, например, поврежденный диск.
- Ошибки пользователя, например, удаление таблицы по ошибке.
- Стихийные бедствия.
Компонент резервного копирования и восстановления сервера PostgreSQL обеспечивает необходимую защиту для защиты важных данных, хранящихся в базах данных сервера. Чтобы минимизировать риск потери данных, вам необходимо создавать резервные копии ваших баз данных, чтобы регулярно вносить изменения в ваши данные. Хорошо спланированная стратегия резервного копирования и восстановления помогает защитить базы данных от потери данных. Проверьте свою стратегию, восстановив набор резервных копий, а затем восстановив базу данных.
Оглавление
Резервное копирование базы данных PostgreSQL
Восстановить базу данных PostgreSQL
Резервное копирование базы данных PostgreSQL
pg_dump - это утилита для резервного копирования базы данных PostgreSQL. Это делает последовательные резервные копии, даже если база данных используется одновременно. pg_dump не блокирует доступ других пользователей к базе данных (читателей или писателей).
Вы можете использовать программу командной строки pg_dump или phpPgAdmin для резервного копирования базы данных PostgreSQL в файл.
Доступ к командной строке на компьютере, где хранится база данных. Если у вас есть физический доступ к компьютеру, вы можете открыть DOS или окно терминала для доступа к командной строке.
Введите следующую команду и нажмите клавишу ВВОД. Замените USERNAME своим именем пользователя, а DBNAME - именем базы данных, которую вы хотите экспортировать:
Синтаксис:
pg_dump -U ИМЯ ПОЛЬЗОВАТЕЛЯ DBNAME> Mybackup.pgsql
Введите свой пароль в строке ввода пароля.
Файл Mybackup.pgsql теперь содержит все данные для базы данных DBNAME. Если файл Mybackup.pgsql находится на удаленном компьютере, загрузите файл на локальный компьютер.
Полный синтаксис и другие параметры pg_dump
Синтаксис:
pg_dump [опция соединения ...] [опция ...] [имя_базы]
вариант | Описание |
---|---|
имя_бд | Имя базы данных для выгрузки. |
-a --data только | Создает дамп только данных (данные таблиц, большие объекты и значения последовательности), а не схемы (определения данных). Эта опция похожа, но по историческим причинам не идентична, указав --section = data. |
-b --blobs | Включить большие объекты в дамп (поведение по умолчанию). |
-с --clean | Вывод команд для очистки (отбрасывания) объектов базы данных перед выводом команд для их создания. Эта опция имеет смысл только для простого текстового формата. |
-С --Создайте | Начните вывод с команды для создания самой базы данных и переподключения к созданной базе данных. Эта опция имеет смысл только для простого текстового формата. |
-Е кодировка = --encoding кодирование | Создать дамп в указанной кодировке набора символов (по умолчанию, кодировка базы данных). |
-f файл --file = файл | Отправить вывод в указанный файл. |
-F формат --format = формат | Выбирает формат вывода. Формат может быть одним из следующих: p plain : вывести файл сценария SQL в виде простого текста (по умолчанию). c custom : вывести архив нестандартного формата, подходящий для ввода в pg_restore. d directory : Вывести архив в формате каталога, подходящий для ввода в pg_restore. t tar : Вывести архив в формате tar, подходящий для ввода в pg_restore. |
-j njobs --jobs = njobs | Запустите дамп параллельно, одновременно создавая дамп таблиц njobs. |
-n схема --schema = схема | Дамп только схемы, соответствующие схеме; это выбирает как саму схему, так и все содержащиеся в ней объекты. Если эта опция не указана, все несистемные схемы в целевой базе данных будут выгружены. |
-N схема --exclude-схема схемы = | Не выбрасывайте никакие схемы, соответствующие шаблону схемы. Когда заданы и -n, и -N, поведение состоит в том, чтобы вывести только схемы, которые соответствуют как минимум одному ключу -n, но не -N. Если -N отображается без -n, то схемы, соответствующие -N, исключаются из того, что в противном случае является обычным дампом. |
-о --oids | Дамп идентификаторов объектов (OID) как часть данных для каждой таблицы. |
-О --no-владелец | Не выводите команды для установки владельца объектов в соответствии с исходной базой данных. Эта опция имеет смысл только для простого текстового формата. Для форматов архивов вы можете указать эту опцию при вызове pg_restore. |
-Р --no-переподключение | Эта опция устарела, но все же принята для обратной совместимости. |
-s --schema только | Дамп только определения объектов (схема), а не данные. |
-S имя пользователя --superuser = имя пользователя | Укажите имя пользователя суперпользователя, которое будет использоваться при отключении триггеров. Это актуально, только если используется --disable-triggers. |
стол --table = таблица | Дамп только таблицы (или представления или последовательности или сторонние таблицы) сопоставления таблицы. Несколько таблиц можно выбрать, написав несколько ключей -t. |
Стол --exclude стол = таблица | Не выбрасывайте таблицы, соответствующие шаблону таблицы. Когда заданы и -t, и -T, поведение состоит в том, чтобы вывести только таблицы, которые соответствуют хотя бы одному ключу -t, но не -T. |
-v --подробный | Определяет подробный режим. Это приведет к тому, что pg_dump выведет подробные комментарии к объекту и время запуска / остановки в файл дампа, а также сообщение о выполнении к стандартной ошибке. |
-V --версия | Распечатайте версию pg_dump и выйдите. |
-Икс --no-привилегии --no-ACL | Запретить сброс прав доступа (команды предоставления / отзыва). |
-Z 0,9 --compress = 0..9 | Укажите уровень сжатия для использования. Ноль означает отсутствие сжатия. |
--binary-обновления | Эта опция предназначена для использования утилитами обновления на месте. |
--column-вставки --attribute-вставки | Дамп данных как команды INSERT с явными именами столбцов (INSERT INTO таблица (столбец, ...) VALUES ...). Это сделает восстановление очень медленным; это в основном полезно для создания дампов, которые можно загружать в базы данных, отличные от PostgreSQL. |
--disable-доллар цитирование | Этот параметр отключает использование долларовых кавычек для тел функций и заставляет их заключать в кавычки с использованием стандартного строкового синтаксиса SQL. |
--disable-спусковые | Эта опция актуальна только при создании дампа только для данных. Эта опция имеет смысл только для простого текстового формата. Для форматов архивов вы можете указать эту опцию при вызове pg_restore. |
--exclude-таблицы данных таблицы = | Эта опция полезна, когда вам нужно определение конкретной таблицы, даже если вам не нужны данные в ней. Чтобы исключить данные для всех таблиц в базе данных, см. --Schema-only. |
--Если-существует | Используйте условные команды (то есть добавьте предложение IF EXISTS) при очистке объектов базы данных. Этот параметр недействителен, если не указан параметр --clean. |
--inserts | Дамп данных как команды INSERT (а не COPY). |
--lock-ждать тайм-аут = тайм-аут | Не ждите вечно, чтобы получить общие блокировки таблиц в начале дампа. |
--no-безопасность-этикетка | Не сбрасывайте защитные метки. |
--no-синхронизированные-снимки | Эта опция позволяет запускать pg_dump -j на сервере до 9.2, более подробную информацию смотрите в документации по параметру -j. |
--no-табличные | Не выводите команды для выбора табличных пространств. С помощью этой опции все объекты будут создаваться в любом табличном пространстве по умолчанию при восстановлении. Эта опция имеет смысл только для простого текстового формата. Для форматов архивов вы можете указать эту опцию при вызове pg_restore. |
--no-Незарег-таблицы данных, | Не сбрасывайте содержимое незарегистрированных таблиц. |
--quote-все-идентификаторы | Принудительное цитирование всех идентификаторов. Это может быть полезно при выгрузке базы данных для переноса в будущую версию, в которой могут быть введены дополнительные ключевые слова. |
--section = имя раздела | Только дамп именованного раздела (по умолчанию дамп всех разделов). |
--serializable-откладываемые | Используйте сериализуемую транзакцию для дампа, чтобы гарантировать, что используемый снимок соответствует более поздним состояниям базы данных. Эта опция не выгодна для дампа, который предназначен только для аварийного восстановления. |
--use-SET-сеанса авторизации | Выведите стандартные команды SQL SET SESSION AUTHORIZATION вместо команд ALTER OWNER, чтобы определить владение объектом. |
-? --Помогите | Показать справку об аргументах командной строки pg_dump и выйти. |
Следующие параметры командной строки управляют параметрами подключения к базе данных
вариант | Описание |
---|---|
-d dbname --dbname = имя_бд | Указывает имя базы данных для подключения. |
-х хозяин --host = хост | Указывает имя хоста компьютера, на котором работает сервер. |
порт --port = порт | Указывает расширение TCP-порта или локального расширения файла сокета домена Unix, на котором сервер ожидает подключения (по умолчанию используется переменная среды PGPORT). |
-U имя пользователя --username = имя пользователя | Имя пользователя. |
-w --no-пароль | Никогда не выдавайте запрос пароля. |
-W --пароль | Принудительно pg_dump запрашивает пароль перед подключением к базе данных. Эта опция никогда не важна, так как pg_dump автоматически запросит пароль, если сервер требует аутентификацию по паролю. |
--role = RoleName | Задает имя роли, которая будет использоваться для создания дампа. |
Восстановить базу данных PostgreSQL
Текстовые файлы, созданные pg_dump, предназначены для чтения программой psql. Введите следующую команду и нажмите клавишу ВВОД. Замените USERNAME вашим именем пользователя, а DBNAME - именем базы данных, в которую вы хотите восстановить данные.
Синтаксис:
psql -U ИМЯ ПОЛЬЗОВАТЕЛЯ DBNAME <Mybackup.pgsql
где Mybackup.pgsql - это файл, выводимый командой pg_dump. Эта команда не будет создавать базу данных dbname, поэтому вы должны создать ее самостоятельно из template0 перед выполнением psql (например, с помощью createb -T template0 dbname). psql поддерживает параметры, аналогичные pg_dump, для указания сервера базы данных, к которому нужно подключиться, и имени пользователя для использования. Дампы нетекстовых файлов восстанавливаются с помощью утилиты pg_restore.
Примечание. Перед восстановлением дампа SQL все пользователи, которым принадлежат объекты или которым были предоставлены разрешения для объектов в выгруженной базе данных, должны уже существовать. Если этого не произойдет, при восстановлении не удастся воссоздать объекты с первоначальным владельцем и / или разрешениями.
pg_restore
pg_restore - это утилита для восстановления базы данных PostgreSQL из архива, созданного pg_dump в одном из текстовых форматов.
pg_restore может работать в двух режимах. Если указано имя базы данных, pg_restore подключается к этой базе данных и восстанавливает содержимое архива непосредственно в базу данных. В противном случае сценарий, содержащий команды SQL, необходимые для перестройки базы данных, создается и записывается в файл или стандартный вывод. Этот вывод сценария эквивалентен формату вывода простого текста pg_dump. Поэтому некоторые параметры, управляющие выводом, аналогичны параметрам pg_dump.
Синтаксис:
pg_restore [опция подключения ...] [опция ...] [имя файла]
pg_restore принимает следующие аргументы командной строки в таблицу.
Опции | Описание |
---|---|
имя файла | Расположение файла архива (или каталога для архива в формате каталога), который необходимо восстановить. Если не указан, используется стандартный ввод. |
-a --data только | Восстановите только данные, а не схему (определения данных). Эта опция похожа, но по историческим причинам не идентична, указав --section = data. |
-с --clean | Очистите (отбросьте) объекты базы данных перед их воссозданием. |
-С --Создайте | Создайте базу данных перед ее восстановлением. Если также указан параметр --clean, удалите и заново создайте целевую базу данных перед подключением к ней. Когда используется эта опция, база данных с именем -d используется только для выдачи начальных команд DROP DATABASE и CREATE DATABASE. Все данные восстанавливаются в имени базы данных, которое появляется в архиве. |
-d dbname --dbname = имя_бд | Подключитесь к базе данных dbname и восстановите непосредственно в базе данных. |
-e --exit-на-ошибки | Выйдите, если при отправке команд SQL в базу данных возникла ошибка. По умолчанию это продолжение и отображение количества ошибок в конце восстановления. |
-f имя файла --file = имя_файла | Укажите выходной файл для сгенерированного скрипта или для листинга при использовании с -l. По умолчанию используется стандартный вывод. |
-F формат --format = формат | Укажите формат архива. Нет необходимости указывать формат, так как pg_restore определит формат автоматически. Если указано, это может быть одно из следующих: c custom: архив находится в пользовательском формате pg_dump. d directory: архив является каталогом архива. t tar: архив является архивом tar. |
-Я индекс --index Задает = индекс | Восстановить определение только именованного индекса. |
-j количество рабочих мест --jobs = число-рабочих мест | Запустите самые трудоемкие части pg_restore - те, которые загружают данные, создают индексы или создают ограничения - используя несколько одновременных заданий. Эта опция может значительно сократить время восстановления большой базы данных на сервере, работающем на многопроцессорной машине. |
-l --список | Перечислите содержимое архива. |
-L список-файл --use-список = список-файлы | Восстановите только те элементы архива, которые перечислены в list-file, и восстановите их в порядке их появления в файле. list-file обычно создается путем редактирования вывода предыдущей операции -l. Строки можно перемещать или удалять, а также закомментировать, поместив точку с запятой (;) в начале строки. |
-n пространство имен --schema = схема | Восстановите только те объекты, которые находятся в именованной схеме. Это можно комбинировать с опцией -t, чтобы восстановить только определенную таблицу. |
-О --no-владелец | Не выводите команды для установки владельца объектов в соответствии с исходной базой данных. По умолчанию pg_restore выдает операторы ALTER OWNER или SET SESSION AUTHORIZATION, чтобы установить владельца созданных элементов схемы. |
-P имя-функции (argtype [, ...]) --function = имя-функции (argtype [, ...]) | Восстановите только названную функцию. |
-Р --no-переподключение | Эта опция устарела, но все же принята для обратной совместимости. |
-s --schema только | Восстанавливайте только схему (определения данных), а не данные, в той степени, в которой записи схемы присутствуют в архиве. Эта опция является обратной к -data-only. |
-S имя пользователя --superuser = имя пользователя | Укажите имя пользователя суперпользователя, которое будет использоваться при отключении триггеров. Это актуально, только если используется --disable-triggers. |
стол --table = таблица | Восстановить определение и / или данные только именованной таблицы. Это можно сочетать с параметром -n, чтобы указать схему. |
-T триггер --trigger = триггер | Восстановить только названный триггер. |
-v --подробный | Определяет подробный режим. |
-V --версия | Распечатайте версию pg_dump и выйдите. |
-Икс --no-привилегии --no-ACL | Запретить восстановление прав доступа (команды предоставления / отзыва). |
-1 --single-транзакции | Выполните восстановление как одну транзакцию. |
--disable-спусковые | Эта опция актуальна только при выполнении восстановления только данных. |
--no-данные для-неудавшихся столов | По умолчанию данные таблицы восстанавливаются, даже если команда создания таблицы не выполнена (например, потому что она уже существует). С этой опцией данные для такой таблицы пропускаются. Это поведение полезно, если целевая база данных уже содержит требуемое содержимое таблицы. Этот параметр действует только при восстановлении непосредственно в базу данных, но не при выводе сценария SQL. |
--no-безопасность-этикетка | Не выводите команды для восстановления меток безопасности, даже если их содержит архив. |
--no-табличные | Не выводите команды для выбора табличных пространств. С помощью этой опции все объекты будут создаваться в любом табличном пространстве по умолчанию при восстановлении. |
--section = имя раздела | Только восстановить названный раздел. |
--use-SET-сеанса авторизации | Выведите стандартные команды SQL SET SESSION AUTHORIZATION вместо команд ALTER OWNER, чтобы определить владение объектом. |
-? --Помогите | Показать справку об аргументах командной строки pg_restore и завершиться. |
Следующие параметры командной строки управляют параметрами подключения к базе данных
вариант | Описание |
---|---|
-х хозяин --host = хост | Указывает имя хоста компьютера, на котором работает сервер. |
порт --port = порт | Указывает расширение TCP-порта или локального расширения файла сокета домена Unix, на котором сервер ожидает подключения (по умолчанию используется переменная среды PGPORT). |
-U имя пользователя --username = имя пользователя | Имя пользователя. |
-w --no-пароль | Никогда не выдавайте запрос пароля. |
-W --пароль | Принудительно pg_dump запрашивает пароль перед подключением к базе данных. Эта опция никогда не важна, так как pg_dump автоматически запрашивает пароль, если сервер требует аутентификацию по паролю. |
--role = RoleName | Задает имя роли, которая будет использоваться для создания дампа. |
Предыдущая: Привилегии PostgreSQL
Далее: Введение в PostgreSQL
Новый контент: Composer: менеджер зависимостей для PHP , R программирования