Введение
Резервная копия — это копия данных из вашей базы данных, которую можно использовать для восстановления этих данных. Резервные копии — это резервные копии физических файлов, используемых для хранения и восстановления ваших баз данных, таких как файлы данных, управляющие файлы и другие. Каждая физическая резервная копия — это копия файлов, хранящих информацию о базе данных, в другое место, будь то на диске или в автономном хранилище, например на ленте.
Преимущества резервного копирования:
С действительные резервные копии базы данных, вы можете восстановить свои данные после многих сбоев, таких как:
- Ошибка носителя: сбой носителя — это сбой чтения или записи файла на диске требуется для запуска базы данных из-за физической проблемы с диском, например, поломки головки.
- Аппаратные сбои, например, повреждение диска.
- Ошибки пользователя, например, ошибочное удаление таблицы.
- Стихийные бедствия.
Компонент резервного копирования и восстановления сервера PostgreSQL обеспечивает необходимую защиту критически важных данных, хранящихся в серверных базах данных. Чтобы свести к минимуму риск потери данных, вам необходимо регулярно создавать резервные копии ваших баз данных, чтобы сохранять изменения в ваших данных. Хорошо спланированная стратегия резервного копирования и восстановления помогает защитить базы данных от потери данных. Проверьте свою стратегию, восстановив набор резервных копий, а затем восстановив свою базу данных.
Оглавление
Резервное копирование базы данных PostgreSQL
pg_dump
Восстановить базу данных PostgreSQL
pg_restore
Резервное копирование базы данных 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 [параметр-подключения ...] [параметр ...] [dbname]
Параметр | Описание |
---|---|
dbname | Имя базы данных быть сброшенным. |
-a — только данные |
Выгрузить только данные (данные таблицы, большие объекты, и значения последовательности), а не схему (определения данных) Этот параметр аналогичен, но по историческим причинам не идентичен указанию —section = data. |
-b — blobs |
Включить большие объекты в дамп (поведение по умолчанию). |
-c — очистить |
Команды вывода для очистки (удаления) объектов базы данных перед выводом команды для их создания. Эта опция имеет смысл только для обычного текстового формата. |
-C — create |
Начните вывод с команды для создания самой базы данных и повторного подключения в созданную базу данных. Этот параметр имеет смысл только для обычного текстового формата. |
-E encoding — encoding = encoding |
Создать дамп в указанной кодировке набора символов ( по умолчанию, кодировка базы данных). |
-f file — file = file |
Отправить вывод в указанный файл. |
-F format — format = format |
Выбирает формат вывода. Формат может быть одним из следующих: p plain : выводит текстовый файл сценария SQL (по умолчанию). c custom : выводит архив нестандартного формата, подходящий для ввода в pg_restore. d каталог : вывести архив в формате каталога, подходящий для ввода в pg_restore. t tar : вывести архив в формате tar, подходящий для ввода в pg_restore. |
-j njobs — jobs = njobs |
Запустить дамп параллельно, одновременно выгружая таблицы njobs . |
-n schema — schema = schema |
Вывести только схемы, соответствующие схеме; это выбирает как саму схему, так и все содержащиеся в ней объекты. Если этот параметр не указан, все несистемные схемы в целевой базе данных будут сброшены. |
-N schema — exclude-schema = schema |
Не выгружать схемы, соответствующие схеме шаблон. Когда заданы оба параметра -n и -N, происходит сброс только тех схем, которые соответствуют хотя бы одному переключателю -n, но не соответствуют переключателям -N. Если -N отображается без -n, то схемы, соответствующие -N, исключаются из обычного дампа. |
-o — oids |
Дамп идентификаторов объектов (OID) как часть данных для каждой таблицы. |
-O —no-owner |
Не выводить команды для установки владения объектами в соответствии с исходной базой данных. Этот параметр имеет смысл только для обычного текстового формата. Для форматов архивов вы можете указать опцию при вызове pg_restore. |
-R — no-reconnect |
Эта опция устарела, но все еще принимается для обратной совместимости. |
-s — schema-only |
Выгрузить только определения объекта (схему), но не данные. |
-S имя пользователя — superuser = username |
Укажите имя пользователя суперпользователя использовать при отключении триггеров. Это актуально, только если используется —disable-triggers. |
-t table — table = table |
Дампить только таблицы (или представления, или последовательности, или внешние таблицы) таблица соответствия. Можно выбрать несколько таблиц, написав несколько ключей -t. |
-T table — exclude-table = table |
Не выгружать таблицы, соответствующие таблице шаблон. Когда заданы оба параметра -t и -T, происходит сброс только тех таблиц, которые соответствуют хотя бы одному переключателю -t, но не соответствуют переключателям -T. |
-v — подробный |
Задает подробный режим. Это приведет к тому, что pg_dump будет выводить подробные комментарии к объекту и время запуска/остановки в файл дампа, а также сообщения о ходе выполнения для стандартной ошибки. |
-V — версия |
Распечатать версию pg_dump и выйти. |
-x — без привилегий — no-acl |
Запретить сброс прав доступа (команды предоставления/отзыва). |
— Z 0..9 — compress = 0..9 |
Укажите используемый уровень сжатия. Ноль означает отсутствие сжатия. |
— binary-upgrade | Этот параметр предназначен для использования утилит обновления на месте. |
— вставки столбцов — вставки атрибутов |
Дамп данных в виде команд INSERT с явными именами столбцов (INSERT INTO table ( столбец, …) ЗНАЧЕНИЯ …). Это сделает восстановление очень медленным; в основном это полезно для создания дампов, которые могут быть загружены в базы данных, отличные от PostgreSQL. |
— disable-dollar-quoting | Эта опция отключает использование долларовых кавычек для тел функций и заставляет их заключаться в кавычки с использованием стандартного строкового синтаксиса SQL. |
— disable-triggers | Эта опция актуальна только при создании data- только дамп. Эта опция имеет смысл только для обычного текстового формата. Для форматов архивов вы можете указать опцию при вызове pg_restore. |
— exclude-table-data = table | Эта опция полезна, когда вам нужно определение конкретной таблицы, даже если вам не нужны данные в ней. Чтобы исключить данные для всех таблиц в базе данных, см. —Schema-only. |
— if-exists | Используйте условные команды (т.е. добавьте предложение IF EXISTS) при очистке объектов базы данных. Этот параметр недопустим, если также не указан —clean. |
— вставляет | данные дампа в виде команд INSERT (скорее, чем КОПИЯ). |
— lock-wait-timeout = timeout | Не ждать вечно, чтобы получить блокировки разделяемой таблицы в начале дамп. |
— no-security-labels | Не сбрасывать метки безопасности. |
— no-synchronized-snapshots | Этот параметр позволяет запускать pg_dump -j на сервере до версии 9.2, дополнительную информацию см. в документации по параметру -j. подробности. |
— без табличных пространств | Не выводить команды для выбора табличных пространств. С этой опцией все объекты будут созданы в любом табличном пространстве, используемом по умолчанию во время восстановления. Эта опция имеет смысл только для обычного текстового формата. Для форматов архивов вы можете указать опцию при вызове pg_restore. |
— no-unlogged-table-data | Не выгружать содержимое незарегистрированных таблиц. |
— quote-all-identifiers | Принудительное цитирование всех идентификаторов. Это может быть полезно при сбросе базы данных для перехода к будущей версии, в которой могли быть добавлены дополнительные ключевые слова. |
— section = sectionname | Дампить только названный раздел (по умолчанию дамп всех разделов). |
— serializable-deferrable | Использовать сериализуемая транзакция для дампа, чтобы гарантировать, что используемый моментальный снимок совместим с более поздними состояниями базы данных. Этот параметр не подходит для дампа, который предназначен только для аварийного восстановления. |
— use-set-session-authorization | Вывод стандартных SQL-команд SET SESSION AUTHORIZATION вместо команд ALTER OWNER для определения владения объектом. |
-? — help |
Показать справку по аргументам командной строки pg_dump и выйти. |
Следующие параметры командной строки управляют параметрами подключения к базе данных
Option | Описание |
---|---|
-d dbname — dbname = dbname |
Задает имя база данных для подключения. |
-h host — host = host |
Задает имя хоста компьютера, на котором сервер работает. |
-p port — port = port |
Определяет порт TCP или локальный файл сокета домена Unix расширение, на котором сервер прослушивает соединения (по умолчанию переменная среды PGPORT). |
-U username — username = username |
Имя пользователя. |
-w — без пароля |
Никогда не запрашивайте пароль. |
-W — password |
Заставить pg_dump запрашивать пароль перед подключением к базе данных. Эта опция никогда не является существенной, поскольку pg_dump автоматически запросит пароль, если сервер требует аутентификации по паролю. |
— role = rolename | Задает имя роли, которое будет использоваться для создания дампа. |
Восстановление базы данных PostgreSQL
Текстовые файлы, созданные pg_dump, предназначены для чтения программой psql. Введите следующую команду и нажмите клавишу ВВОД. Замените USERNAME своим именем пользователя и DBNAME именем базы данных, в которую вы хотите восстановить данные
Синтаксис:
psql -U ИМЯ ПОЛЬЗОВАТЕЛЯ ИМЯ БДгде Mybackup.pgsql - это файл, выводимый командой pg_dump. База данных dbname не будет создана этой командой, поэтому вы должны создать ее самостоятельно из template0 перед выполнением psql (например, с createdb -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 [connection-option .. .] [option ...] [filename]pg_restore принимает следующие аргументы командной строки в таблицу.
Опции Описание filename Расположение файла архива ( или каталог, для архива в формате каталога) для восстановления. Если не указано иное, используется стандартный ввод. -a
- только данныеВосстановить только данные, а не схема (определения данных).
Этот параметр аналогичен, но по историческим причинам не идентичен указанию --section = data.-c
- очиститьОчистить (удалить) объекты базы данных перед их воссозданием. -C
- createСоздать базу данных перед восстановлением в нее. Если также указан --clean, удалите и воссоздайте целевую базу данных перед подключением к ней.
Когда используется этот параметр, база данных с именем -d используется только для выполнения начальных команд DROP DATABASE и CREATE DATABASE. Все данные восстанавливаются в имя базы данных, которое появляется в архиве.-d dbname
- dbname = dbnameПодключиться к базе данных dbname и восстановить прямо в базу данных. -e
- exit-on-errorВыйти, если при отправке команд SQL в базу данных возникла ошибка. По умолчанию это продолжается, и в конце восстановления отображается количество ошибок. -f filename
- file = filenameУкажите выходной файл для сгенерированного скрипта или для листинга при использовании с -l. По умолчанию используется стандартный вывод.. -F format
- format = formatУкажите формат архива. Формат указывать не обязательно, поскольку pg_restore определит формат автоматически. Если указано, это может быть одно из следующих значений:
c custom: архив находится в настраиваемом формате pg_dump.
d directory: архив представляет собой архив каталога.
t tar: архив представляет собой tar-архив.-I index
- index = indexВосстановить определение только именованного индекса. -j number-of-jobs
- jobs = number-of-jobsЗапускать наиболее трудоемкие части pg_restore - те, которые загружают данные, создают индексы или создают ограничения - с использованием нескольких одновременных заданий. Этот параметр может значительно сократить время восстановления большой базы данных на сервере, работающем на многопроцессорной машине. -l
- listВывести список содержимого архива. -L list-file
- use-list = list-fileВосстановить только этот архив элементы, перечисленные в списке-файле, и восстанавливают их в том порядке, в котором они появляются в файле.
файл-список обычно создается путем редактирования вывода предыдущей операции -l. Строки можно перемещать или удалять, а также можно закомментировать, поставив точку с запятой (;) в начале строки.-n namespace
- schema = schemaВосстановить только объекты, которые находятся в названной схеме. Это можно комбинировать с параметром -t для восстановления только определенной таблицы. -O
- no-ownerНе выводить команды для установки владения объектами в соответствии с исходной базой данных. По умолчанию pg_restore выдает операторы ALTER OWNER или SET SESSION AUTHORIZATION, чтобы установить владельца созданных элементов схемы. -P имя-функции (тип-аргумента [, ...])
- функция = имя-функции (тип-аргумента [, .. .])Восстановить только указанную функцию. -R
- no-reconnectЭта опция устарела, но все еще принимается для обратной совместимости. -s
- только схемаВосстановить только схему (определения данных), но не данные , если записи схемы присутствуют в архиве.
Этот параметр является обратным параметру --data-only.-S username
- superuser = usernameУкажите имя пользователя суперпользователя, которое будет использоваться при отключении триггеров . Это актуально, только если используется --disable-triggers. -t table
- table = tableВосстановить определение и/или данные только указанной таблицы. Это можно комбинировать с параметром -n, чтобы указать схему. -T trigger
- trigger = triggerВосстановить только именованный триггер. -v
- подробныйЗадает подробный режим. -V
- versionРаспечатать версию pg_dump и выйти. -x
- без привилегий
- no-aclПредотвратить восстановление прав доступа (команды предоставления/отзыва). -1
- одиночная транзакцияВыполнить восстановление как одну транзакцию. - disable-triggers Эта опция актуальна только при выполнении операции data- только восстановить. - без данных для отказавших таблиц По умолчанию данные таблицы восстанавливаются даже если команда создания таблицы не удалась (например, потому что она уже существует). При выборе этой опции данные для такой таблицы пропускаются. Такое поведение полезно, если целевая база данных уже содержит желаемое содержимое таблицы.
Этот параметр эффективен только при восстановлении непосредственно в базу данных, а не при создании вывода сценария SQL.- no-security-labels Не выводить команды для восстановления меток безопасности, даже если архив содержит их. - без табличных пространств Не выводить команды для выбора табличных пространств. С этой опцией все объекты будут созданы в том табличном пространстве, которое используется по умолчанию во время восстановления. - section = sectionname Восстановите только названный раздел. - use-set-session-authorization Выводить стандартные SQL-команды SET SESSION AUTHORIZATION вместо команд ALTER OWNER для определить владельца объекта. -?
- helpПоказать справку по аргументам командной строки pg_restore и exit. Следующие параметры командной строки управляют параметрами соединения с базой данных
Параметр Описание -h host
- host = hostЗадает имя хоста машины, на которой работает сервер. -p port
- port = portОпределяет порт TCP или локальный файл сокета домена Unix расширение, на котором сервер прослушивает соединения (по умолчанию переменная среды PGPORT). -U username
- username = usernameИмя пользователя. -w
- без пароляНикогда не запрашивайте пароль. -W
- passwordЗаставить pg_dump запрашивать пароль перед подключением к базе данных.
Эта опция никогда не является существенной, поскольку pg_dump автоматически запросит пароль, если сервер требует аутентификации по паролю.- role = rolename Задает имя роли, которая будет использоваться для создания дампа.