Предположим, что некая таблица удалена или повреждена. Причиной могли послужить повреждение диска или некорректные удаления и изменения с потерей важных данных. Обычно проблема решается путем восстановления из резервной копии. В версии 9.1 планировалось добавить возможность приостанавливать и возобновлять или прекращать восстановление, а также менять цель восстановления динамически при работающем сервере. Это позволит с большим удобством определять нужную точку завершения восстановления с помощью режима горячего резервирования. Иногда полезно с помощью режима горячего резервирования добиться остановки восстановления. Читайте раздел, описывающий управление режимом горячего резервирования.
Есть разные способы действий — выбор зависит от того, какого типа резервные копии есть в наличии. Если существуют резервные копии разных типов, возможны варианты. Логическое.
Если вы выполнили логическое резервное копирование с помощью утилиты Pg_dump В файл произвольного формата, можно просто извлечь нужную таблицу из файла дампа следующим образом: Pg_restore — t mydroppedtable dumpfile I psql Или соединиться с базой данных напрямую, используя опцию — а. Приведенная команда пытается создать заново таблицу и заполнить ее данными. Заметьте, что pg_restore с опцией -t не извлекает из дампа индексы для таблицы. Это значит, что понадобится немного более сложная процедура, которая зависит от того, восстанавливаем ли мы поврежденную или удаленную таблицу. Чтобы исправить поврежденную таблицу, надо заместить данные в ней в течение одной транзакции. Специальной опции для этой цели нет, поэтому надо выполнить следующее: Теперь воссоздайте таблицу на целевом сервере. Это можно сделать удаленно, не копируя дамп между серверами: Pg.Restore — d mydatabase — j 2 dumpfile
Единственный способ извлечь единственную таблицу из скриптового файла без восстановления всего остального содержимого — написать программу, извлекающую из скрипта только нужные нам части. Этими частями могут быть команды set где-нибудь в начале файла, данные могут быть в середине, а индексы и ограничения для таблицы — в конце скрипта. Такой способ сложен, в то время как предложенный выше вполне безопасен.
Рубрика: Женский интерес