восстановление базы данных sql из резервной копии в новую базу

Темы
:
Основы установки сервера SQL 2000
Основы администрирования Сервера SQL 2000
Расширенная установка сервера SQL 2000
Введение в Диспетчер Предприятия (Enterprise Manager) сервера SQL 2000
Основы создания баз данных
Дополнительные темы, связанные с созданием баз данных
Резервное копирование баз данных
Создание плана аварийного восстановления. Часть I.
Создание плана аварийного восстановления. Часть II
Восстановление резервных копий и полное восстановление баз данных SQL 2000
Таблицы - Часть I - Основы
Таблицы - Часть 2 - Ссылочная целостность
Таблицы - Часть 3 - Проверка ограничений
Восстановление резервных копий и полное восстановление баз данных SQL 2000
В прошлый раз мы закончили создание плана аварийного восстановления. В этот раз мы рассмотрим, как восстанавливать базы данных для того, чтобы протестировать наш план. Кроме того, мы коснемся еще некоторых вопросов резервного копирования/восстановления баз данных, которые мы пропустили в предыдущих статьях.
В данную статью включены следующие темы:
Восстановление при помощи резервной копии;
Другие настройки резервного копирования.
Восстановление при помощи резервной копии
Восстановление базы данных при помощи файла или магнитной ленты, содержащей резервную копию, выполняется достаточно просто, но вам стоит принять во внимание несколько вещей, когда вы будете использовать модель регистрации групповых операций (bulk_logged). Заметьте, что мы не будем рассматривать восстановление базы данных, которая использует модель простого восстановления. Первая вещь, которую стоит понять, это то, что восстановление (restoring) резервной копии и полное восстановление (recovering; слова «полное» нет в самой статье, но оно точнее передает смысл сказанного (прим. перев.)) базы данных являются совершенно разными операциями. Восстановление – это процесс простого копирования данных с резервной копии в базу данных. Полное восстановление, с другой стороны, является процессом, использующим журналы транзакций, для того, чтобы вернуть данные в базе в согласованное состояние. Чтобы не давать вам только поверхностное представление об этих процессах, давайте подробнее остановимся на том, что представляет собой процесс полного восстановления базы данных.
Если вы помните, в одной из предыдущих статей (Понимание журнала транзакций), я рассказывал, как происходит процесс восстановления внесенных изменений, если сервер SQL был некорректно отключен (этот процесс называется восстановлением при перезапуске (recovery restart)). Очень похожий процесс используется сервером SQL в случае, если вы восстанавливаете базу данных – он называется восстановление исходного состояния (restore recovery; перевод достаточно спорный, но другого варианта я не нашел (прим.перев.)). Если сервер SQL отключен некорректно, у нас образуется некоторый набор данных, которые находятся в несогласованном состоянии, так как мы не знаем, какие изменения все же были сохранены, а какие нет, до того, как произошло незапланированное отключение. Кроме набора данных в несогласованном состоянии, у нас также имеется файл журнала транзакций, который содержит список всех изменений, которые были проделаны с данными – с этого журнала нам и придется начинать процесс восстановления.

Для того чтобы привести данные в согласованное состояние, все транзакции в журнале, которые были завершены, применяют снова – этот процесс известен как прокрутка вперед (rolling forward), в тоже время все транзакции в журнале, которые не были завершены во время внезапного отключения, будут отменены – этот процесс называется откат (rolling back). При помощи прокрутки вперед завершенных транзакций и отката незавершенных транзакций, вы возвратите данные в согласованное состояние… означающее, что мы избавились от незавершенных транзакций, результатом которых могло быть такое состояние, например, при котором деньги были бы сняты со счета А, но не были зачислены на счет В.
Все это замечательно, но что общего есть между восстановлением после внезапного отключения и полным восстановлением базы данных при помощи резервных копий? Да все – фактически, это одинаковые процессы. Если вы вспомните статью Резервное копирование баз данных, я тогда говорил, что сервер SQL выполняет «размытое» резервное копирование, потому что резервное копирование не выполняется в одно мгновение, а занимает некоторый отрезок времени, в течение которого база данных продолжает работать. В следствие того, что в базу данных продолжают вноситься изменения в процессе выполнения резервного копирования, резервная копия оказывается в несогласованном состоянии – мы можем получить часть данных в резервной копии, которые были внесены до большого изменения и часть, относящихся к периоду времени после большого изменения. Для того чтобы решить данную проблему, сервер SQL может использовать ту часть журнала транзакций, которая записывалась в ходе выполнения резервного копирования, для восстановления данных резервной копии. После того, как данные будут восстановлены с резервной копии, процесс полного восстановления может использовать прокрутку вперед всех транзакций, которые имели место в ходе выполнения резервного копирования – для приведения данных в согласованное состояние.

Есть одна важная вещь, которую вам необходимо знать о полном восстановлении – если вы выполняете полное восстановление базы данных, вы не можете использовать более одного файла журнала транзакций. Зная механизм записи файлов журналов, можно утверждать, что существует возможность того, что часть транзакций будет иметь свое начало в одном журнале, а окончание – в другом. Если мы запустим процесс полного восстановления, то после использования первого журнала, сервер SQL зафиксирует, что часть транзакций не завершена и, поэтому, применит к ним процедуру отката. Теперь, теоретически, если мы будем применять для восстановления следующий журнал, что может произойти? Так как мы запустили процесс полного восстановления после применения резервной копии первого журнала, у нас окажется только вторая половина транзакций, начавшихся в первом журнале, и у сервера SQL может не оказаться соображений, что с ними делать. Кроме того, мы не можем просто пропустить эти первые транзакции – более поздние транзакции могут оказаться зависимыми от этих первых изменений. Для того чтобы разрешить данную проблему и иметь возможность использования нескольких резервных копий журналов, сервер SQL дает нам возможность выбрать, запускать ли процесс полного восстановления или нет. Это предоставляет нам право восстановить сначала первую резервную копию журнала (которая содержит первую половину наших транзакций) и затем применить вторую резервную копию (которая содержит окончание транзакций) до того, как будет запущен процесс полного восстановления.
Подводя итог, можно сказать, что после восстановления резервной копии, если вы выбрали полное восстановление базы данных, все завершенные транзакции будут прокручены вперед, а все незавершенные – назад и база данных снова станет доступна для пользователей. Если вы выберете не проводить полное восстановление после восстановления резервной копии, база данных останется в несогласованном состоянии, и будет недоступна для пользователей, однако вы получите возможность восстановить несколько резервных копий журнала.
Достаточно технической болтовни, давайте примем следующий план полного восстановления базы данных:
Выполняйте резервное копирование текущего журнала транзакций, если это возможно – это позволит вам полностью восстановить базу данных на момент аварии;
Восстановите наиболее свежую полную резервную копию без полного восстановления базы данных;
Если у вас есть дифференциальная резервная копия, восстановите наиболее свежую без полного восстановления базы данных;
Восстановите все резервные копии журналов транзакций, по порядку, от последней полной резервной копии (или дифференциальной копии, если таковые имеются) без восстановления базы данных;
Восстановите резервную копию файла журнала, которую вы выполнили в шаге 1 и выполните полное восстановление базы данных.
Заметьте, что если вы не можете выполнять резервное копирование журнала (шаг 1), вам нужно будет выполнять полное восстановление базы данных после шага 4. При этом вы сможете восстановить базу данных только на состояние, совпадающее с окончанием последней резервной копии журнала транзакций.
Есть два пути, которыми вы можете осуществлять данный план: используя Диспетчер Предприятия (Enterprise Manager) (к сожалению, там нет соответствующего мастера) или при помощи команды RESTORE. Мы рассмотрим, как провести полное восстановление базы данных, используя Диспетчер Предприятия, но если вам захочется узнать больше об использовании T-SQL команды RESTORE, ищите информацию по ключевому слову “RESTORE” в справочной системе Book Online сервера SQL.
В дереве Диспетчера Предприятия нажмите правой кнопкой мыши на требуемой базе данных и в появившемся меню выберите опцию “All Tasks”, а затем “Restore Database…”
На вкладке General окна Restore Database вы найдете большое количество различных настроек:
Рассмотрим их подробнее, начиная сверху:
“Restore as database” (восстановить как базу данных) – позволяет вам определить имя базы данных, в которую вы хотите провести восстановление. Если имя базы данных уже существует, база данных будет перезаписана в ходе восстановления.
“Restore” – позволяет вам выбрать, какой тип восстановления вы хотите осуществить. Сервер SQL сохраняет записи обо всех резервных копиях, которые вы делали и вы можете затем восстановить их, используя опции “Database” или “Filegroups or files”. Однако если вы будете производить восстановление резервной копии, сделанной на другом компьютере или информация об истории резервного копирования окажется удаленной с сервера, вы должны будете использовать опцию “From device” и выбрать каждую из резервных копий вручную.
“Database” (база данных) – позволяет вам восстановить все файлы, образующие базу данных.
“Filegroups or files” (группы файлов или файлы) – позволяет вам восстанавливать некоторые или все файлы, образующие базу да

Необходимость сохранить базы данных настроенной системы возникает, как правило, перед переустановкой ОС на серверной машине, либо для переноса работающей серверной конфигурации на другую машину.

восстановление базы данных sql из резервной копии

Для восстановления базы данных, необходимые для создания базы данных в целевой машине, то использовать эту команду  # gunzip < [backup.sql.gz] | mysql -u [имя пользователя] -p[пароль] [имя_бд]. Тема “Как сделать резервную копию и

Читать

Компонент резервного копирования и восстановления SQL Server обеспечивает необходимую защиту важных данных, которые  Проверьте выбранную стратегию, выполнив восстановление баз данных из набора резервных копий; это поможет

24.3.3. Восстановление из резервной копии непрерывного архивирования.  Расширенные возможности бэкапа баз данных SQL в версии Handy Backup 7.4. Ошибка при востановлении из Backup'а.