none
Резервное копирование и восстановление MS SQL RRS feed

  • Вопрос

  • Добрый день, коллеги.

    Появилась интересная задача. Есть две БД на MS SQL: db-2016 и db-2016-recovery. Задача следующая: необходимо автоматизировать задачу резервного копирования БД db-2016 и восстановления в БД db-2016-recovery по расписанию. БД db-2016 является рабочей. Резервное копирование/восстановление необходимо выполнять без отключения пользователей от базы db-2016 (она в продакшене).

    По большому счету, необходимо сделать так, чтобы БД db-2016-recovery была максимально приближена к db-2016.

    Подскажите скриптом ;) Заранее всем благодарен.


    • Изменено A.Dobrynin 28 июня 2016 г. 14:42
    28 июня 2016 г. 14:39

Ответы

  • Смотрите в сторону типов репликации, возможно найдете что-то подходящее для себя - https://technet.microsoft.com/ru-ru/library/ms152565(v=sql.105).aspx

    Если решать задачу что называется на коленке, то вы можете реализовать её через платы обслуживания, которые поддерживают в том числе и кастомные скрипты (а уж тут пространство для деятельности не ограничено).

    28 июня 2016 г. 16:15
  • Самое простое - использовать штатные бекапы боевой базы, которые вы и так, я надеюсь, делаете. Если у вас full recovery model, то можно и логи транзакций накатывать с небольшой задержкой. У решения есть недостатки - в процессе накатывания db-2016-recovery будет недоступна, все коннекции придётся прибить.
    Либо, как уже было предложено, подумайте про репликацию.

    Надо понимать, что простые решения имеют свои ограничения. К примеру, скорее всего, вы не должны давать разработчикам тех же прав в боевой системе, которыми они обладают в тестовой. Если права хранятся в самой базе, с этим придётся что-то делать.

    29 июня 2016 г. 7:10

Все ответы

  • script:
      backup
      restore
     
    Не очень ясно, в чём именно состоит ваш вопрос. В MSSQL резервное копирование всегда делается без отключения пользователей. Технологии со времён DBase довольно далеко шагнули вперёд. :)

    Если же вы хотите спроектировать отказоустойчивое решение, а похоже именно на это, то начать надо с того, чего же именно вы хотите достичь в результате. Существует множество способов решения вашей задачи, но вы обозначьте хоть какие-то подробности, пожалуйста.

    Из вашего поста, к примеру, складывается ощущение, что всё происходит на одном сервере. Это действительно так?
    28 июня 2016 г. 15:14
  • Опишу задачу более подробно. Есть БД db-2016. Есть штат программистов, которые в качестве котиков используют БД db-2016-recovery. Так вот необходимо сделать так, чтобы БД db-2016-recovery была максимально свежей копией БД db-2016 и автоматизировать это.

    Все в рамках одного сервера.


    • Изменено A.Dobrynin 28 июня 2016 г. 15:35
    28 июня 2016 г. 15:34
  • Смотрите в сторону типов репликации, возможно найдете что-то подходящее для себя - https://technet.microsoft.com/ru-ru/library/ms152565(v=sql.105).aspx

    Если решать задачу что называется на коленке, то вы можете реализовать её через платы обслуживания, которые поддерживают в том числе и кастомные скрипты (а уж тут пространство для деятельности не ограничено).

    28 июня 2016 г. 16:15
  • Самое простое - использовать штатные бекапы боевой базы, которые вы и так, я надеюсь, делаете. Если у вас full recovery model, то можно и логи транзакций накатывать с небольшой задержкой. У решения есть недостатки - в процессе накатывания db-2016-recovery будет недоступна, все коннекции придётся прибить.
    Либо, как уже было предложено, подумайте про репликацию.

    Надо понимать, что простые решения имеют свои ограничения. К примеру, скорее всего, вы не должны давать разработчикам тех же прав в боевой системе, которыми они обладают в тестовой. Если права хранятся в самой базе, с этим придётся что-то делать.

    29 июня 2016 г. 7:10