Восстановление баз данных с помощью Veeam Explorer for Microsoft SQL Server

После разбора теории процессов и практических советов для резервного копирования виртуализованного SQL Server перейдем к рассказу о восстановлении баз данных с помощью Veeam Explorer for Microsoft SQL Server. Этот инструмент позволяет восстановить базу на исходный или на другой сервер без необходимости поднимать сам сервер из резервной копии.В общем виде процесс восстановления с участием Veeam Explorer происходит так: d37ae760a5544d2f8d0b20d0da108c88.png

Ответственный за восстановление администратор запускает консоль Veeam Backup & Replication и использует свою любимую опцию восстановления (из предлагаемых Veeam), чтобы смонтировать SQL Server (прямо из резервной копии, как она есть в репозитории) на сервер Veeam backup, вместе с файловой системой и всеми имеющимися на SQL Server инстансами и базами. Veeam Explorer for Microsoft SQL Server добывает информацию о иерархии инстансов и баз на этом сервере SQL и в своей консоли создает представление для пользователя. Пользователь может просматривать все дерево и, найдя нужную базу (базы), выбрать и запустить требуемый сценарий восстановления. Поддерживаются следующие сценарии восстановления и экспорта: В состояние, соответствующее выбранной точке восстановления (той, которая в текущий момент смонтирована на сервер Veeam backup) В состояние на выбранный момент времени В состояние накануне выбранной транзакции Первый из этих сценариев задействует только целевой SQL Server; для остальных же потребуется как целевой сервер, так и вспомогательный SQL сервер (staging server) согласно вот этой таблице: Сервер Восстановление на момент времени Восстановление на транзакцию Экспорт на момент времени Экспорт на транзакцию Вспомогательный Не используется Используется для отображения логов Используется Используется для отображения и «наката» логов Целевой Используется для «наката» логов Используется для «наката» логов Не используется Не используется Наконец, база данных полностью «воссоздается» на целевом Microsoft SQL Server и готова к работе. Если же вы использовали сценарий экспорта, то можно приаттачить базу к нужному серверу. Определяемся, что и как хотим восстанавливатьБезусловно, ориентируемся на предписания политик восстановления; чтобы выбрать нужный сценарий и подготовить всё небходимое для его успешного выполнения, неплохо составить чек-лист и ответить на основные вопросы: Будете ли вы восстанавливать базу на момент создания точки восстановления SQL, или необходимо обеспечить возможность восстановления на любой момент времени (в том числе в промежуток между точками восстановления сервера)? В последнем варианте понадобятся бэкапы логов, чтобы «накатить» их на выбранную точку, так что необходимо будет выбрать опцию Backup logs при настройках задания резервного копирования сервера. Планируется ли восстановление базы на состояние, предшествовавшее какой-либо операции (например, удалению записи из таблицы)? Для восстановления с таким уровнем гранулярности понадобятся: бэкапы журналов транзакций вспомогательный SQL сервер (о требованиях к нему скажу чуть позже), который позволит вывести в консоли перечень операций, чтобы пользователь смог их просмотреть и выбрать нужную, а затем выполнить «накат» логов. Будет ли база восстанавливаться на исходный Microsoft SQL Server или на другой? Проверьте настройки соединения сервера Veeam backup с данным сервером. Убедитесь, что у учетной записи, под которой планируется выполнять восстановление, есть все необходимые права. Проверьте версионность SQL Server, куда будете восстанавливать (восстановление базы с сервера более новой версии на сервер более старой поддержано не будет). Кто будет заниматься восстановлением баз? Вы лично, или другие пользователи (группы пользователей)? Во втором случае разумно делегировать восстановление, задействуя для этого функциональность Enterprise Manager. Отмечу, что в процессе восстановления не нужно целиком восстанавливать и запускать собственно сервер. Вместо этого резервная копия (в том виде, в котором она хранится в репозитории, т.е. после сжатия и дедупликации) монтируется на бэкап-сервер Veeam. (Для того, чтобы корректно смонтировать файловую систему этой виртуальной машины и отобразить ее в привычном нам виде в окне браузера Veeam Backup Browser, используется специальный драйвер Veeam.)Далее можно выбрать, с помощью какого инструмента будем выполнять восстановление базы данных: Veeam Explorer for Microsoft SQL Server — позволяет восстановить базу на исходный либо на другой сервер (требуется коммерческая лицензия), в состояние, соответствующее выбранному бэкапу самого сервера/указанному моменту времени/накануне выбранной транзакции. Этот инструмент и сценарии я опишу ниже в подробностях. Veeam Backup Enterprise Manager — позволяет делегировать возможности восстановления другим пользователям, дав им права работать с определенными серверами (также требуется коммерческая лицензия Enterprise Plus). Поддерживается восстановление на исходный либо другой сервер, в состояние, соответствующее выбранному бэкапу сервера/указанному моменту времени. Для особо увлеченных можно использовать мастер гранулярного восстановления (U-AIR) и создать запрос к бэкап-администратору на восстановление базы, таблицы или результатов запроса в состояние на момент выбранного бэкапа SQL сервера. Поскольку этот способ задействует виртуальную лабораторию и требует более тонких настроек, а сам инструмент выдается теперь по запросу, рекомендуется для такого случая обращаться в службу поддержки. Если же вы всё еще работаете с версией 7, то можно почитать документацию. Итак, остановимся на восстановлении базы данных с использованием Veeam Explorer for Microsoft SQL Server.

Что нужно сделать до запуска Veeam Explorer? Всего-навсего выполнить 5 несложных подготовительных действий. Рекомендую составить небольшой чек-лист, который поможет вам сэкономить время и нервы на случай, когда они будут особенно необходимы.Шаг 1: Проверить, открыты ли порты

Для связи бэкап-сервера Veeam с гостевой ОС вашего SQL сервера, скорее всего, на бэкап-сервере понадобится открыть порты TCP 1433 и TCP 1434. Остальные (если понадобятся) будут зависеть от конфигурации вашего SQL Server; за подробностями добро пожаловать в http://msdn.microsoft.com/en-us/library/cc646023.aspx#BKMK_ssde.

Шаг 2: Подготовить вспомогательный сервер (при необходимости)

Если вам нужно восстановить базу на состояние, соответствующее выбранному бэкапу SQL сервера, никаких дополнительных машин не потребуется. Но если вы собираетесь выбрать другой сценарий, то вам будет нужен вспомогательный сервер (staging server), который обеспечивает следующие операции (см.также таблицу выше):

Восстановление базы в состояние накануне выбранной транзакции Экспорт базы (файлов .MDF и .LDF) в том состоянии, в котором она была в выбранный момент времени или накануне выбранной транзакции По умолчанию, в качестве вспомогательного будет использован SQL Server, установленный вместе с бэкап-сервером Veeam. Вы можете указать другой сервер, запустив Veeam Explorer for SQL (например, из меню Start) и выбрав в главном меню пункт Options.Важно! Главное здесь — обязательно указать локальный инстанс SQL Server-а (т.е. стоящий на одной машине с Veeam Explorer и бэкап-сервером) и проверить, что его версия не младше той, что у SQL, чью базу вы планируете восстановить (т.е. нельзя использовать SQL Server 2008 для восстановления/экспорта базы с SQL Server 2014).

Шаг 3: Назначить права учетной записи

На разных этапах процесса могут потребоваться следующие права (в случае необходимости обратитесь к администратору БД за их выдачей):

Учетная запись, которую вы планируете использовать для доступа к гостевой ОС вашего SQL Server (та самая, которую вы указали на шаге Guest Processing при настройке задания резервного копирования), должна входить в фиксированную серверную роль sysadmin на данном SQL Server (если это не так, содержимое баз не будет отображаться в окне Veeam Explorer). См. также статью Veeam Knowledge Base. Учетная запись, под которой вы вы планируете запускать Veeam Explorer — как правило, это та, под которой работает сервис Veeam Backup Service, о требованиях к которому рассказано здесь, — для сценария с экспортом базы данных должна иметь права на папку, в которую будет идти экспорт файлов БД (как минимум это Read и Write) Учетная запись, под которой будет выполняться подключение к целевому SQL Server для восстановления базы (это может быть оригинальный или другой сервер), должна входить в фиксированную серверную роль sysadmin на целевом SQL Server. Еще вам может понадобиться учетная запись, под которой будет осуществляться доступ к ОС Windows сервера, куда будут копироваться для последующего «наката» бэкапы журналов транзакиций (в зависимости от сценария это будет либо целевой сервер, либо вспомогательный). Эта учетная запись должна иметь доступ к административной папке на указанном сервере (как минимум с правами Read и Write). Шаг 4: Изучить ограничения и особенности операцийВ текущей версии в качестве вспомогательного сервера не поддерживается инстанс SQL Server на удаленной машине. Используйте только локальные инстансы. Если у вас в качестве вспомогательного будет использован SQL Server Express (например, поставляемый вместе с Veeam сервер SQL Express 2012), помните, что у него есть ограничение по размеру поддерживаемых баз — это 10 ГБ. Подробнее см. здесь. По умолчанию, системные базы (master и др.) исключены из процессинга. Если вам нужно их восстановить, можно воспользоваться, например, процедурой восстановления файлов гостевой системы (как описано здесь). В текущей версии не поддерживается восстановление из реплики на выбранный момент времени. Если необходимо восстановить закриптованную базу данных, изучите вот эту статью из Veeam Knowledge Base. Шаг 5: Подготовить файлы к восстановлению

Для этого можно воспользоваться любой опцией восстановления из поддерживаемых Veeam Backup & Replication; удобнее всего использовать мастер SQL Restore Wizard (как описано здесь) — он выполнит нужные операции в автоматическом режиме и сам запустит Veeam Explorer. При необходимости — например, если вы работаете с VeeamZIP — аналогичные операции можно выполнить вручную (как описано здесь) — тогда финальным пунктом нужно будет добавить необходимую базу данных в консоль Veeam Explorer с помощью команды Add Database (подробнее см. здесь).

Итак, сценарии восстановления базы данных Важно! Восстановление баз на SQL сервер (команды меню Restore) поддерживается для редакций Veeam Backup & Replication Enterprise и Enterprise Plus. Для всех редакций (включая Free и Standard) можно выполнить восстановление путем экспорта файлов базы и затем аттач к нужному серверу.

Сценарий №1. Восстановление на состояние «как в выбранном бэкапе SQL сервера»

Вам понадобится точка восстановления (резервная копия, реплика, VeeamZIP), созданная с учетом работы приложения. Требуемые настройки конфигурации:

Модель восстановления для вашей базы — может быть любой. В настройках задания резеврного копирования на шаге Guest Processing должна быть выбрана галка Enable application-aware image processing: image

В диалоге настроек процессинга виртуальной машины на табе General надо выбрать вот такие опции: В секции Applications — Require successful processing (recommended) В секции Transaction logs — Process transaction logs with this job (recommended)image

В том же диалоге на табе SQL можно выбрать любую из опций обработки логов (разумеется, с пониманием, что будет с ними при этом происходить). Примечание: Для тех, кто забыл или пропустил описание этих настроек — про них рассказывалось в первой серии.Данный сценарий (при наличии лицензии Veeam Backup & Replication Enterprise или Enterprise Plus) позволяет восстановить базу на исходный сервер или на другой выбранный вами.

Вариант 1: восстановление на исходный сервер

Для этого удобно использовать быстрое восстановление 1-Click Restore, которое пойдет со следующими настройками по умолчанию:

База будет восстановлена на состояние «как в выбранном бэкапе SQL сервера» Файлы базы будут скопированы на исходный сервер и затем приаттачены к исходному инстансу (тому, который был забэкаплен и посейчас работает в продакшене) Для соединения с этим сервером будет использована учетная запись, под которой работает Veeam Explorer, и аутентификация Windows. Если у этой учетки не хватит прав, то Veeam попробует использовать учетную запись, указанную вами при конфигурации задания резервного копирования на шаге Guest Processing. Если и она не подойдет, то последует запрос на ввод имени пользователя и пароля (проверьте наличие админских прав!) Осознав эти факты, выбираем нужную базу из дерева в консоли Veeam Explorer, а из меню выбираем команду Restore Database > Restore current_state_date to server\instance.Примечание: Здесь current_state_date — это дата, когда был создан бэкап SQL сервера, чье содержимое сейчас смонтировано на сервер Veeam и показывается вам через Veeam Explorer; таким образом, здесь будет либо «latest» — если был выбран последний бэкап, либо соответствующая дата.

image

Полезно: Можно выбрать несколько баз — все базы с одного инстанса или все базы с одного сервера — выбрав соответствующий узел (инстанс или сервер) в дереве.

Вариант 2: восстановление на выбранный сервер

Для восстановления на выбранный сервер (не исходный) придется пройти по шагам мастера:

На шаге Specify restore point выбираем опцию Restore to the current restore point, т.е. восстановление в состояние «как в выбранном бэкапе SQL сервера»: image

Затем на шаге Specify target SQL Server connection parameters указываем все, что требуется: имя сервера, куда хотим восстановить базу, имя базы, учетную запись, под которой будем подключаться к целевому серверу. Не забываем проверить, что у этой учетной записи есть нужные права (вообще-то это был Шаг 3 из списка предварительных действий выше:-)).image

Несколько пояснительных слов:

Если хотим восстанавливать на конкретный инстанс, указываем его в формате сервер\инстанс. Указанный целевой сервер должен иметь версию не ниже, чем исходный (т.е. не стоит пытаться восстанавливать базу SQL 2014 на SQL 2008). (для более ранних версий SQL): проверьте, чтобы целевая база не была в режиме mirror (такое восстановление не поддерживается) Если не указать имя целевой базы, будет использовано то же имя, что и у исходной (из бэкапа). Важно! Если база с таким именем существует на целевом сервере, то по умолчанию она будет удалена, и ей на смену придет восстановленная из бэкапа, поэтому в таком варианте после нажатия Next вам нужно будет подтвердить данное действие (либо отменить и ввести новое имя базы).

Если указанный целевой сервер поддерживает AlwaysOn Availability Groups, на шаге Specify Always ON restore options можно будет выбрать группу, в которую мы хотим включить восстановленную базу: image

Далее указываем, под какой учетной записью нужно будет стучаться к гостевой ОС целевого сервера (чтобы, в частности, скопировать туда файлы базы): image

Затем говорим, куда именно складывать эти файлы (.MDF и .LDF): image

Наконец, жмём кнопку Restore и дожидаемся рапорта о завершении процесса. Сценарий №2. Восстановление на указанный момент времени

Этот сценарий позволяет восстановить базу на выбранный вами момент времени (который может отличаться от момента создания резервной копии самого сервера). Фактически, база будет восстановлена на состояние «как в ближайшем предшествовавшем бэкапе сервера», а затем будет выполнен «накат» логов из их бэкапа — так база будет приведена в нужное состояние. Следовательно, для реализации данного сценария понадобятся вот такие настройки конфигурации:

Модель восстановления SQL Server должна быть Full либо Bulk-logged. Точка восстановления SQL Server должна быть создана с учетом работы приложения (включено Enable application-aware image processing). В диалоге настроек процессинга виртуальной машины на табе General надо выбрать: В секции Applications — Require successful processing (recommended) В секции Transaction logs — Process transaction logs with this job (recommended) В настройках процессинга журналов транзакций должно быть выбрано Backup logs. Примечание: В текущей версии данный сценарий не поддерживается для реплик и бэкапов, сохраненных в репозиторий с помощью заданий архивирования.

В этом сценарии также поддерживаются восстановление на исходный или на выбранный сервер; на соответствующий шаг мастера Restore Wizard можно попасть, выбрав из меню команду Restore Database > Restore point-in-time state to или Restore to another server.

image

Здесь нужно будет выбрать опцию Restore to a point in time и воспользоваться слайдером («бегунком»), чтобы указать конкретный момент времени, на который хотим восстановить базу.

Сценарий 3. Восстановление на состояние перед выбранной транзакцией

Здесь пользователь может просмотреть список операций за выбранный период, найти нужную (например, удаление записи из таблицы) и затем восстановить базу на состояние, в котором она была до выполнения этой операции (полный список операций приведен здесь).Для реализации данного сценария понадобятся вот такие настройки конфигурации:

Модель восстановления SQL Server должна быть Full либо Bulk-logged. Точка восстановления SQL Server должна быть создана с учетом работы приложения (включено Enable application-aware image processing). В диалоге настроек процессинга виртуальной машины на табе General надо выбрать вот такие опции: В секции Applications — Require successful processing (recommended) В секции Transaction logs — Process transaction logs with this job (recommended) В настройках процессинга журналов транзакций должно быть выбрано Backup logs. Потребуется вспомогательный сервер — с его помощью будет отображаться список операций из бэкапа журнала транзакций. Если база входит в группу AlwaysOn Availability Group, проверьте, что все узлы этой группы расположены в одном часовом поясе. Примечание: Если восстановление выполнялось для вторичного узла (secondary node) группы, в некоторых случаях может возникнуть ошибка вида «The specified STOPAT time is too early». В этом случае нужно выполнить восстановление с первичного узла (primary node).Подробное описание шагов данного сценария приведено в документе «Базовые сценарии использования». Вкратце скажу только, что на шаге мастера Specify restore point нужно будет выбрать опцию Restore to a point in time, а также зачекать галку Perform restore to specific transaction, чтобы на следующем шаге Fine-tune the restore point просмотреть список транзакций.

image

Что еще почитать и посмотреть

© Habrahabr.ru