Миграция БД на Windows Azure SQL VM через виртуальный дискИсточник: habrahabr alexje
Предыдущий способ переноса резервной копии базы с локального компьютера на виртуальную машину с SQL Server в Облаке использовал Azure Storage, который не является NTFS-видимым. Таким образом, перед восстановлением бэкап базы нужно было скопировать из Azure Storage на виртуальный диск, чтобы установленный на виртуалке SQL Server его увидел. В случае БД значительного объема это ведет к неоправданному расходу пространства в Azure Storage и, как следствие, к дополнительным затратам: сначала бэкап загружается в облачное хранилище, а затем копируется в vhd, который хранится там же. Чтобы избежать этих затрат, в этой статье мы рассмотрим иной способ. Локально будет создан отдельный vhd, на котором будет размещен бэкап базы. Затем vhd будет загружен в Azure Storage и приаттачен в качестве дополнительного диска облачной виртуалки. С него будет произведено восстановление резервной копии.
Теперь сертификат нужно положить в Облако. Заходим в Azure Management Portal, кликаем на Settings в левой панели, внизу нажимаем кнопку Upload. Находим файл сертификата c:\Temp\MyCert.cer, созданный в Скрипте 1 и указываем его для загрузки. Сертификат успешно загружается. Для загрузки vhd в Azure Storage должен иметься Storage Account. Как минимум, один был создан автоматически на этапе создания виртуальной машины, а второй мы создали в предыдущей статье для загрузки файла бэкапа. Не имеет значения, какой из них использовать. Я возьму последний (tststorage), в котором создам приватный контейнер myvhds, чтобы положить туда свежесозданный виртуальный диск с бэкапом базы. Напомню, что заглавные буквы в названии контейнера не воспринимаются. Для использования утилиты csupload требуется сформировать строку соединения. Это можно сделать непосредственно в момент загрузки или предварительно.
Параметр ServiceManagementEndpoint является константой. Основными параметрами при формировании строки соединения выступают SubscriptionID и CertificateThumbprint. Их можно скопировать в свойствах сертификата. Ширины колонок раздвигаются и, при необходимости, скроллируются по горизонтали. В непосредственно загрузке диска тоже все понятно: откуда берем vhd-файл (LiteralPath), куда кладем (Storage Account\контейнер блобовского сториджа - Destination) и как обзываем (Label). Параметр Add-Disk указывает, что загружается именно диск, а не, скажем, образ. В параметре OS - что это будет диск для виртуальной машины Windows, а не Linux. По умолчанию, предполагается, естественно, Windows. Подробно ознакомиться с параметрами утилиты csupload можно в документации.
После загрузки свежеположенный диск можно видеть в Azure Management Portal -> Virtual Machines -> Disks. Остается присоединить его к облачной виртуалке. Виртуалку при этом можно не гасить. В верхней строке переключаемся на Virtual Machine Instances, в нижней жмем Attach и выбираем диск среди доступных загруженных и неподключенных. В нашем примере такой сейчас всего один. Ждем, когда статус виртуалки сменяется с Running (Updating) на просто Running и соединяемся с ней по удаленному RDP-подключению. Видим диск F: с Volume Label = aaa, как заказывали, а на нем резервную копию базы AdventureWorks2012.bak, с которой восстанавливаемся. После чего диск aaa нам больше не нужен. Отсоединяем его аналогично подключению (кнопка Detach Disk в нижней строке) и удаляем из дисков вместе с соответствующим ему vhd-файлом (не из Storage), нажав кнопку Delete Disk -> Delete the associated VHD, чтобы не платить за лишнее место. |