Поделиться через


Восстановление отдельного клиента приложения SaaS, использующего одну базу данных на клиент

Область применения:База данных SQL Azure

Модель с одной базой данных на клиент упрощает восстановление отдельного клиента до предыдущей точки во времени, не влияя на работу других клиентов.

В рамках этого руководства вы изучите два шаблона восстановления данных:

  • восстановление базы данных в параллельную базу данных (параллельное восстановление);
  • восстановление базы данных "на месте" с заменой существующей базы данных.
Шаблон Описание
Восстановление в параллельную базу данных Этот шаблон можно использовать для таких задач, как проверка, аудит и обеспечение соответствия, чтобы клиент мог проверять свои данные по состоянию на более ранний момент времени. Текущая база данных клиента остается в сети и не изменяется.
Восстановление на месте Обычно этот шаблон используется для восстановления клиента до предыдущей точки во времени после случайного удаления или повреждения данных. Исходная база данных переводится в автономный режим и заменяется восстановленной базой данных.

Для работы с этим руководством выполните следующие предварительные требования:

Общие сведения о шаблонах восстановления клиента SaaS

Данные отдельного клиента можно восстановить с использованием двух простых шаблонов. Так как базы данных клиента изолированы, восстановление одного клиента не влияет на данные других клиентов. В обоих шаблонах используется функция восстановления до точки во времени (PITR) базы данных SQL Azure. Служба PITR всегда создает новую базу данных.

  • Параллельное восстановление. В первом шаблоне новая база данных создается параллельно с текущей базой данных клиента. Затем клиенту предоставляется доступ только для чтения к восстановленной базе данных. Восстановленные данные можно просмотреть и потенциально использовать для перезаписи текущих значений данных. Разработчик приложения определяет, как клиент получает доступ к восстановленной базе данных и какие возможности восстановления предоставляются. В некоторых случаях достаточно просто позволить клиенту просмотреть свои данные по состоянию на более ранний момент времени.

  • Восстановление "на месте". Второй шаблон пригодится в тех случаях, когда данные потеряны или повреждены и клиент хочет восстановить состояние данных на предыдущий момент времени. На время восстановления базы данных клиент отключается от сети. Исходная база данных удаляется, а восстановленная база данных переименовывается соответствующим образом. Цепочка резервных копий остается доступной после удаления исходной базы данных, что позволяет при необходимости восстановить базу данных до более ранней точки во времени.

Если вы используете базу данных с активной георепликацией, мы рекомендуем выполнить параллельное восстановление и скопировать необходимые данные из восстановленной копии в исходную базу данных. После замены исходной базы данных восстановленной необходимо перенастроить и повторно синхронизировать георепликацию.

Получение сценариев для приложения SaaS Wingtip Tickets, использующего одну базу данных на клиент

Скрипты и исходный код приложения SaaS Wingtip Tickets c мультитенантной базой данных размещены в репозитории GitHub WingtipTicketsSaaS-DbPerTenant. Инструкции по скачиванию и разблокированию скриптов приложения SaaS Wingtip Tickets см. в статье Общие рекомендации по работе с примерами приложений SaaS Wingtip Tickets.

Перед началом работы

После создания базы данных может пройти 10–15 минут, прежде чем станет возможным ее восстановление из первой полной резервной копии. Если вы только что установили приложение, подождите несколько минут, прежде чем применять этот сценарий.

Моделирование случайного удаления данных клиента

Чтобы продемонстрировать эти сценарии восстановления, сначала "случайно" удалите событие в одной из баз данных клиента.

Просмотр текущих событий в приложении "События"

  1. Откройте центр событий (http://events.wtp.<user>.trafficmanager.net) и выберите Contoso Concert Hall.

    A screenshot of the events hub page of the sample application. The entry for Contoso Concert Hall is boxed in red.

  2. Прокрутите список событий и запишите последнее из них.

    A screenshot from the sample application. The last event appears.

"Случайное" удаление последнего события

  1. В среде сценариев PowerShell откройте ...\Learning Modules\Business Continuity and Disaster Recovery\RestoreTenant\Demo-RestoreTenant.ps1и задайте следующее значение:

    • $DemoScenario = 1, Delete last event (with no ticket sales).
  2. Нажмите клавишу F5, чтобы запустить скрипт и удалить последнее событие. Вы увидите следующее сообщение с подтверждением.

    Deleting last unsold event from Contoso Concert Hall ...
    Deleted event 'Seriously Strauss' from Contoso Concert Hall venue.
    
  3. После этого откроется страница событий Contoso. Прокрутите вниз и убедитесь, что событие исчезло. Если событие по-прежнему в списке, щелкните Обновить и проверьте его еще раз. A screenshot from the sample application. The last event is removed.

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

Эти действия позволяют восстановить базу данных Contoso Concert Hall до точки во времени перед удалением события. В этом сценарии предполагается, что вы намерены просмотреть удаленные данные в параллельной базе данных.

Сценарий Restore-TenantInParallel.ps1 создает параллельную базу данных клиента ContosoConcertHall_old и параллельную запись каталога. Этот шаблон лучше всего подходит для восстановления после незначительной потери данных. Кроме того, его можно использовать при восстановлении данных для аудита или обеспечения соответствия. Мы также рекомендуем его для баз данных с активной георепликацией.

  1. Выполните действия из раздела Моделирование случайного удаления данных клиента.
  2. В среде сценариев PowerShell откройте ...\Learning Modules\Business Continuity and Disaster Recovery\RestoreTenant\Demo-RestoreTenant.ps1файл .
  3. Задайте $DemoScenario = 2 и выполните восстановление клиента в параллельном режиме.
  4. Нажмите клавишу F5, чтобы запустить скрипт.

Этот сценарий восстанавливает базу данных клиента до точки во времени перед удалением события. База данных восстанавливается в новой базе данных с именем ContosoConcertHall_old. Метаданные каталога, которые существуют в этой восстановленной базе данных, удаляются, а затем база данных добавляется в каталог с помощью ключа, созданного ContosoConcertHall_old из имени.

Демонстрационный сценарий открывает в браузере страницу событий для этой новой базы данных клиента. Обратите внимание на следующий фрагмент URL-адреса: http://events.wingtip-dpt.<user>.trafficmanager.net/contosoconcerthall_old. Элемент _old в имени означает, что данные на странице получены из восстановленной базы данных.

Просмотрите список событий в браузере и убедитесь, что событие, удаленное в предыдущем разделе, восстановилось.

В реальной среде вы вряд ли будете предоставлять доступ к восстановленному клиенту, создавая дополнительный клиент с отдельным приложением Events. Они служат только для демонстрации шаблона восстановления. Обычно предоставляется доступ только для чтения к старым данным, а восстановленная база данных сохраняется на определенный период. В этом примере после завершения запись восстановленного клиента можно удалить, вызвав сценарий Remove restored tenant (Удаление восстановленного клиента).

  1. Задайте $DemoScenario = 4, Remove restored tenant.
  2. Нажмите клавишу F5, чтобы запустить скрипт.
  3. После этого запись ContosoConcertHall_old удаляется из каталога. Закройте в браузере страницу событий для этого клиента.

Восстановление клиента "на месте" с заменой имеющейся базы данных

Эти действия позволяют восстановить клиент Contoso Concert Hall до точки во времени перед удалением события. Скрипт Restore-TenantInPlace восстанавливает базу данных клиента в новую базу данных и удаляет исходную базу данных. Этот шаблон лучше всего подходит для восстановления после серьезного повреждения данных, к которому, возможно, придется адаптировать клиент.

  1. В среде сценариев PowerShell откройте Demo-RestoreTenant.ps1 файл.
  2. Установите $DemoScenario = 5, восстановите клиент.
  3. Нажмите клавишу F5, чтобы запустить скрипт.

Этот сценарий восстанавливает базу данных клиента то точки во времени перед удалением события. Сначала он отключает клиент Contoso Concert Hall от сети, чтобы предотвратить дальнейшие обновления. Затем из точки восстановления создается параллельная база данных. В ее имя добавляется метка времени, чтобы не возникало конфликтов между именами восстановленной и существующей баз данных клиента. Затем старая база данных клиента удаляется, а восстановленной базе данных присваивается имя исходной. После этого работа клиента Contoso Concert Hall возобновляется и приложение получает доступ к восстановленной базе данных.

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

После восстановления базы данных нужно снова подождать 10–15 минут, прежде чем появится полная резервная копия, доступная для восстановления данных.

Примечание.

Восстановление из мультитенантных баз данных в один клиент невозможно.

Дальнейшие действия

В этом руководстве вы узнали, как выполнять следующие задачи:

  • восстановление базы данных в параллельную базу данных (параллельное восстановление);
  • восстановление базы данных "на месте".

Дополнительные ресурсы