Процесс создания storage account мы разбирали в статье, посвященной Blob Service REST API (http://blogs.technet.com/b/isv_team/archive/2012/10/25/3528566.aspx) и сейчас не будем на этом подробно останавливаться. Напомню на всякий случай, что создавать его имеет смысл в том же датацентре, где находится виртуальная машина с SQL Server, на которой предполагается восстановливать резервную копию, чтобы сэкономить на трафике между датацентрами. Например, в моем случае виртуальная машина lvmtest4 с экземпляром SQL Server по умолчанию, расположена в локации North Europe. Там же будет создана учетная запись сториджа tststorage для передачи бэкапа базы. Более подробно процесс создания описан в документации к Windows Azure (http://msdn.microsoft.com/en-us/library/windowsazure/gg433066.aspx). Внутри эккаунта мы создадим контейнер container1 (заглавные буквы в названии контейнера не поддерживаются). В целях безопасности контейнер будет создан как private, что означает, что для доступа к его содержимому потребуется указывать Access Key (первичный или вторичный), посмотреть которые можно в свойствах Storage Account.
Из пререквизитов нам еще понадобится установленный на локальном SQL Server 2012 CU2 к SP1. Как водится, кумулятивные апдейты будут, скорее всего, включены в следующий сервис-пак, но на момент написания данной статьи требуется на SQL Server 2012 установить Service Pack 1 (если он еще не установлен) (http://www.microsoft.com/en-us/download/details.aspx?id=35575), а затем кумулятивный апдейт 2 к этому сервис-паку (http://support.microsoft.com/kb/2790947). Когда мы проходили этот вопрос на Windows Azure Summit, слушатели обратили внимание на фразу This service pack contains SQL Server 2012 Cumulative Update 1 (CU1) and Cumulative Update 2 (CU2), поэтому, наверно, лучше лишний раз уточнить. В ней речь идет про кумулятивные апдейты к “голому” SQL Server 2012. Нам нужен CU2 к SP1. По ссылке открывается форма, в форме отмечаем, какой именно файл нужен (я отметил все три) и указываем e-mail, на который буквально сразу приходит письмо от hotfix@microsoft.com, содержащее ссылки, откуда что брать. Для наших целей достаточно поставить SQLServer2012_SP1_CU2_2790947_11_0_3339_x64, чтобы select @version была не ниже Microsoft SQL Server 2012 (SP1) — 11.0.3339.0 (X64), Jan 14 2013 19:02:10, Build 9200.
Чтобы локальный SQL Server смог доступиться до облачного сториджа, на нем предварительно нужно создать удостоверение (credential), в котором будут указаны название учетной записи сториджа и один из его ключей доступа (первичный или вторичный, без разницы).
if exists (select 1 from sys.credentials where name = 'SqlToAzureStorage' and credential_identity = 'tststorage') drop credential SqlToAzureStorage CREATE CREDENTIAL SqlToAzureStorage WITH IDENTITY= 'tststorage' --storage account , SECRET = 'oY1AUn6/5/IWz8dfQJzidOVY8HRUKOz1k5MsSnV86xV46fEtQCAigC3Fd8Lgkn2fv6SotsRpZm6w2tRaQVAovw=='
Скрипт 1
Ключи доступа можно найти в управлении учетной записью сториджа в Windows Azure Management Portal, если в верхнем меню выбрать пункт Configure, а в нижнем — Manage Keys.
Рис.1
Рис.2
Собственно, все. Создаем резевную копию любимой базы AdventureWorks в облачный сторидж.
BACKUP DATABASE AdventureWorks2012 TO URL = 'https://tststorage.blob.core.windows.net/container1/AdventureWorks2012.bak' WITH CREDENTIAL = 'SqlToAzureStorage', INIT, STATS = 10
Скрипт 2
Здесь все понятно. Строка URL формируется по принципу <имя учетной записи Azure Storage>. blob.core.windows.net/<название контейнера>/<как будет называться файл бэкапа, созданный в этом контейнере>’. Ее можно посмотреть в Windows Azure Management Portal в свойствах контейнера:
Рис.3
Если CU2 к SP1 не установлен, при выполнении этой команды происходит ошибка Msg 155, Level 15, State 1, Line 2. ‘URL’ is not a recognized Device Type option. Но мы его установили, поэтому все выполняется успешно.
Рис.4
Если теперь зайти в контейнер container1 на Рис.3, мы увидим, что там создался бэкап AdventureWorks2012.bak.
Комментарии:
• Максимальный размер резервной копии не должен превышать 1 ТБ, что связано с ограничениями Azure Blob Storage.
• Поддерживается создание не только полной резервной копии базы, но и резервных копий журнала транзакций, файловых групп, дифференциальное резервное копирование, а также сжатие бэкапов.
• Если файл с таким именем уже существует в контейнере, произойдет ошибка. Чтобы его переписать, используйте опцию FORMAT.
• Из интерфейса SSMS создание резервной копии базы в Azure Blob Storage пока не поддерживается.
Теперь заходим на облачную виртуалку с установленным на ней SQL Server, создаем удостоверение (Скрипт 1) и совершенно симметрично восстанавливаем на ней базу из свежесозданного облачного бэкапа. Понятно, что на том SQL Server также должен стоять SP1 CU2.
RESTORE DATABASE AdventureWorks2012 FROM URL = 'https://tststorage.blob.core.windows.net/container1/AdventureWorks2012.bak' WITH CREDENTIAL = 'SqlToAzureStorage', REPLACE, STATS = 10
Скрипт 3
Рис.5
Аналогично можно делать в обратном направлении: создавать резервную копию в Облаке и поднимать ее на on-premise SQL Server, а также передавать базу между облачными или on-premise машинами.
ссылка на оригинал статьи http://habrahabr.ru/post/171901/
Добавить комментарий