none
Восстановление из бэкапа на момент падения.... RRS feed

  • Вопрос

  • Всем привет!

    Вот эмулирую падение сервера. Расмотрим ситуацию. К примеру я сделал все по правилам, на сервере файл данных (mdf) положил на один диск, а лог (ldf) на доругой диск. Вот у меня навернулся диск с данными. У меня есть full backup и test_db.ldf. Как мне востановить базу на момент падения? Может глупый вопрос, но не много погуглив сходу не нашел ответ. Версия ms sql 2008 r2 

    9 сентября 2010 г. 11:35

Ответы

  • Процесс востановления такой:

    1) Нужно обязательно иметь полный бэкап и FULL модель востановления.

    2) Вслучае если у нас к примеру отвалился диск(mdf не доступен), но лог лежит на томже месте с темже названием :

    2.1) Открываем Server Management Studio. Видем что база не доступна фиг с ней главное, что она там есть.

    2.2) Бэкапим лог. backup log [db] to disk = 'C:\backup.trn' with no_truncate

    2.3) Убиваем базу. Затем востанавливаем фул бэкап и лог.

    3) Вслучае если у нас к примеру отвалился диск(mdf не доступен) и умер сервер, но у нас остался фул бэкап и ldf :

    3.1) Перетаскиваем фул бэкап и ldf на новый сервер. Создаем точно такую же бд и файлы с темже названием.

    3.2) Останавливаем службу сервера. Удаляем mdf, а ldf подкладываем со старого сервера. Важно!!! На место mdf ничего не кладем!!!

    3.3) Стартуем сервер.

    3.4) Открываем Server Management Studio. Видем что база не доступна, но в списке есть.

    3.5) Бэкапим лог. backup log [db] to disk = 'C:\backup.trn' with no_truncate

    3.6) Убиваем базу. Затем востанавливаем фул бэкап и лог.

     

    Сам проделал все работает!

    14 сентября 2010 г. 10:30

Все ответы

  • А бэкапа лог-файла нет? =)


    http://www.t-sql.ru
    9 сентября 2010 г. 11:45
    Отвечающий
  • нет. Просто я это тестирование затеял из принципа. Много читал о правильности установки баз. И что если хранить файлы  хранить на разных дисках, то имея лог и полный бэкап можно восстановится до состояния на момент падения. Осталось понять, как это сделать.

    9 сентября 2010 г. 12:03
  • нет. Просто я это тестирование затеял из принципа. Много читал о правильности установки баз. И что если хранить файлы  хранить на разных дисках, то имея лог и полный бэкап можно восстановится до состояния на момент падения. Осталось понять, как это сделать.


    схема проста, если рекавери модель у БД полная, то снимаем Бэкап Лога, затем востанавливаем из полного бэкапа БД с опцией NORECOVERY, затем из бэкапа лога востанавливаем БД на тот момент, на какой вам нужно...вплодь до секунды или транзакции
    http://www.t-sql.ru
    9 сентября 2010 г. 13:47
    Отвечающий
  • Разносить лог и данные по разным физическим дискам имеет смысл, как правило, из-за позитивного влияния такого разнесения на производительность. Расценивать это как способ повышения надёжности не нужно. Даже если и возможен какой-то финт ушами с вытаскиванием данных из ldf в базу(при помощи ПО третьих фирм, к примеру), не надо строить на этом стратегию обеспечения сохранности данных. У вас пока ещё ничего не случилось. Сделайте всё по человечески, благо средств для этого сейчас хватает.
    9 сентября 2010 г. 14:00
  • А можно пример, как его забэкапить?

    10 сентября 2010 г. 5:44
  • А можно пример, как его забэкапить?


    http://msdn.microsoft.com/en-us/library/ms186865.aspx

    В конце статьи примеры.

    Если хотите сделать это на регулярной основе, то напишите скрипт и сделайте запуск по расписанию на SQL Agent. У меня например скрипт бэкапит логи транзакций каждые 15 минут в файл формата <Database Name>_YYYYMMDD.trn Т.е. каждый день новый файл и все бэкапы за день в одном файле.

    10 сентября 2010 г. 5:53
  • Вот общий формат бэкапа лога:

    Backing Up the Transaction Log (full and bulk-logged recovery models)
    BACKUP LOG { database_name | @database_name_var } 
     TO <backup_device> [ ,...n ] 
     [ <MIRROR TO clause> ] [ next-mirror-to ]
     [ WITH { <general_WITH_options> | <log-specific_optionspec> } [ ,...n ] ]
    [;]
    

    Я напоминаю, что лог у меня не подцеплен к базе(так как она типа поломалась) и валяется на диске. Вот. А при бекапе я должен указать базу BACKUP LOG  database_name <-- что тут мне писать? Или мене нужно создать БД подсунуть лог и потом его забэкапить?

    10 сентября 2010 г. 6:49
  • BACKUP LOG [database_name] TO DISK = 'C:\Temp\test.trn'

    Где database_name - это имя базы данных.

    10 сентября 2010 г. 14:16
  • Всем привет!

    Вот эмулирую падение сервера. Расмотрим ситуацию. К примеру я сделал все по правилам, на сервере файл данных (mdf) положил на один диск, а лог (ldf) на доругой диск. Вот у меня навернулся диск с данными. У меня есть full backup и test_db.ldf. Как мне востановить базу на момент падения? Может глупый вопрос, но не много погуглив сходу не нашел ответ. Версия ms sql 2008 r2 


    Резервное копирование (BACKUP), не обеспечивает возможности восстановления данных до момента падения при физическом повреждении файлов базы. Так как резервное копирование активной части журнала транзакций в этом случае невозможно. Для повышения  уровня доступности базы, используют например синхронное зеркальное отображение базы данных.
    Gruß Yury
    10 сентября 2010 г. 20:39
  • Процесс востановления такой:

    1) Нужно обязательно иметь полный бэкап и FULL модель востановления.

    2) Вслучае если у нас к примеру отвалился диск(mdf не доступен), но лог лежит на томже месте с темже названием :

    2.1) Открываем Server Management Studio. Видем что база не доступна фиг с ней главное, что она там есть.

    2.2) Бэкапим лог. backup log [db] to disk = 'C:\backup.trn' with no_truncate

    2.3) Убиваем базу. Затем востанавливаем фул бэкап и лог.

    3) Вслучае если у нас к примеру отвалился диск(mdf не доступен) и умер сервер, но у нас остался фул бэкап и ldf :

    3.1) Перетаскиваем фул бэкап и ldf на новый сервер. Создаем точно такую же бд и файлы с темже названием.

    3.2) Останавливаем службу сервера. Удаляем mdf, а ldf подкладываем со старого сервера. Важно!!! На место mdf ничего не кладем!!!

    3.3) Стартуем сервер.

    3.4) Открываем Server Management Studio. Видем что база не доступна, но в списке есть.

    3.5) Бэкапим лог. backup log [db] to disk = 'C:\backup.trn' with no_truncate

    3.6) Убиваем базу. Затем востанавливаем фул бэкап и лог.

     

    Сам проделал все работает!

    14 сентября 2010 г. 10:30