Миграция базы данных с сервера Microsoft SQL Server on-premises в Azure SQL managed instance посредством backup/restore

Tags: Microsoft, Azure, restore, SQL Server, cloud

В данном руководстве описан процесс миграции базы данных с сервера Microsoft SQL Server on-premises в Azure SQL managed instance.

Перед началом процесса миграции следует обеспечить выполнение следующих необходимых условий:

Логин на сервере on-premises, с которого нужно перенести базу (под которым предполагается выполнять этот перенос) должен входить в роль сервера sysadmin.

Должна быть создана подписка в Azure.

Должен быть создан ресурс Azure SQL managed instance в Azure.

В Azure SQL managed instance также должен быть создан логин, входящий в роль сервера sysadmin.

Сам процесс миграции состоит из следующих шагов:

- Создание в Azure ресурса storage account, в котором будет размещён бэкап базы данных.

- Бэкап базы данных с сервера on-premises в blob контейнер в Azure storage account.

- Рестор базы данных из blob контейнера в Azure storage account в Azure SQL managed instance.                                                                              

Создание в Azure ресурса storage account, в котором будет размещён бэкап базы данных

  1. Открывает в браузере portal.azure.com и входим в свою учётную запись.
  2. Нажимаем кнопку “Create a resource” в верхней части страницы портала.

3. В открывшейся странице выбираем “Storage account”.

4. На открывшейся странице “Create a storage account” указываем следующие значения.

Поле

Значение

Subscription

Подписка, в которой создаётся storage account.

Resource group

Существующая или новая группа в зависимости от предпочтений.

Storage account name

Имя создаваемого storage аккаунта. Должно быть уникальным среди всех storage аккаунтов в Azure, от 3 до 24 символов, только строчные буквы и цифры. На скриншоте ниже - frdsstorageacc.

Region

Регион в котором будет создан storage account. Рекомендуется использовать тот же регион, в котором создан Azure SQL managed instance.

Performance

Standard или Premium (что по сути означает HDD или SSD для создаваемого storage account) в зависимости от потребностей и бюджета. На скриншоте выбрано значение по умолчанию Standard.

Redundancy

Куда будет реплицироваться storage account, для обеспечения high availability. Выбирается опция в зависимости от потребностей и бюджета. На скриншоте выбрано значение по умолчанию Geo-redundant storage (GRS).

Make read access to data available in the event of regional unavailability.

Оставляем значение по умолчанию.

      5. Нажимаем “Review + create” и после валидации всех настроек ещё раз “Create”. Создание storage account может занять пару минут.

      6. После завершения создания жмём “Go to resource”. 

      7. В левой части страницы созданного storage account нажимаем “Containers”.

        8. На открывшейся странице нажимаем “+ Container”. 

      9. Указываем желаемое имя контейнера, остальные настройки оставляем по умолчанию. 

     10. Нажимаем “Create” - контейнер будет создан и отображён на странице аккаунта.

На этом процесс создания storage account и настройки контейнера можно считать завершённым. Страницу аккаунта в браузере следует оставить открытой, при бэкапе базы данных она потребуется для получения доступа к контейнеру.

Бэкап базы данных с сервера on-premises в blob контейнер в Azure storage account

  1. Открываем SSMS и подключаемся к серверу on-premises под логином, входящим в роль сервера sysadmin.
  2. Открываем окно для выполнения запросов.
  3. Сначала нужно создать credential, под которым SSMS будет выполнять бэкап базы данных в Azure storage account. Для создания потребуется Access key созданного storage account. Возвращаемся в браузер с открытой страницей созданного аккаунта и нажимаем “Access keys”.

          4. В открывшемся окне нажимаем “Show keys”.

Одно из значений Key для key1 или key2 нужно будет использовать на следующем шаге для создания credential.

     5. В общем случае запрос для этого выглядит следующим образом

create credential [AzureStorageBackups] with

     identity = '<storage account name>'

,    secret = '<storage account key from portal (Access key)>';

go

Здесь <storage account name> нужно заменить на имя созданного storage account - frdsstorageacc, а <storage account key from portal (Access key)> - на одно из значений Key из предыдущего шага.

create credential [AzureStorageBackups] with

     identity = 'frdsstorageacc'

,    secret = 'sidxe6IRr9lJ4i4HaTnlxQYs2xfw5JNhED1nkMqVYvDtElm00K1LY3QldryLjluhgzKHVXH7bvLVUMM2Oy/uSA==';

go

       6. Нажимаем F5 - будет создан credential. 

     7. Далее нужно получить URL контейнера, который был создан последним шагом при создании storage account в Azure. Переходим в браузер и             в  левой части страницы аккаунта нажимаем “Containers”.

 

        8. Находим созданный контейнер (на скриншоте - backups) и кликаем по нему правой кнопкой мыши, а затем нажимаем к контекстном меню                “Container properties”. 

        9. На появившейся странице видим URL с адресом контейнера.

 

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

backup database [<database name>]

to url = N'<container address>/<backup_file_name>'

with credential = '<credential>';

go

Здесь вместо <database name> указывается имя базы данных, вместо <container address> - URL контейнера из предыдущего шага, вместо <backup_file_name> - имя файла бэкапа и вместо <credential> - credential, созданный на шаге 6.

        

backup database [DataWarehouse]

to url = N'https://frdsstorageacc.blob.core.windows.net/backups/DataWarehouse_backup_20210525.bak'

with credential = 'AzureStorageBackups';

go

       11. Нажимаем F5 - бэкап будет создан в контейнере внутри Azure storage account. 

     12. Вернувшись в браузер и открыв страницу контейнера, можно убедиться, что он содержит page blob с указанным на предыдущем шаге                      именем. 

На этом процесс создания бэкапа можно считать завершённым. Страницу storage account в браузере следует оставить открытой, т.к. она понадобится на следующем шаге.

Рестор базы данных из blob контейнера в Azure storage account в Azure SQL managed instance

  1. В SSMS подключаемся к Azure SQL managed instance под логином, входящим в роль сервера sysadmin.
  2. Открываем окно для выполнения запросов.
  3. Перед выполнением рестора нужно создать credential, под которым SSMS будет обращаться к Azure storage account. Credential, создаваемый на этом шаге отличается от того, который создавался для бэкапа базы данных. Возвращаемся на страницу контейнера в браузере и нажимаем “Shared access signature”.

        4. На открывшейся странице можно оставить все опции по умолчанию и нажать “Generate SAS token and URL”. 

         5. На появившейся странице видим Blob SAS token. 

        6. Запрос для создания credential выглядит так.

create credential [<container address>] with

     identity = 'SHARED ACCESS SIGNATURE'

,    secret = '<SAS token>';

go

Здесь вместо <container address> нужно указать URL контейнера, тот же самый, который использовался при бэкапе, а вместо <SAS token> - значение Blob SAS token из предыдущего шага.

create credential [https://frdsstorageacc.blob.core.windows.net/backups] with

     identity = 'SHARED ACCESS SIGNATURE'

,    secret = 'sp=r&st=2021-05-25T12:11:13Z&se=2021-05-25T20:11:13Z&spr=https&sv=2020-02-10&sr=c&sig=9k57zcE2nzO666LPgIee%2Bx%2F%2Ba4lAj%2FbWbb%2FdX81fq04%3D';

go

        7. Нажимаем F5 - будет создан credential.

       8. Запрос для рестора базы данных:

restore database [DataWarehouse]

from url = N'<container address>/<backup_file_name>';

go

Здесь вместо <container address> нужно указать URL контейнера, а вместо вместо <backup_file_name> - имя файла бэкапа. Полный URL должен получиться точно таким же, какой использовался для бэкапа базы данных на сервере on-premises.

restore database [DataWarehouse]

from url = N'https://frdsstorageacc.blob.core.windows.net/backups/DataWarehouse_backup_20210525.bak';

go

       9. Нажимаем F5 - через какое-то время база данных будет восстановлена.

На этом процесс миграции базы данных с сервера Microsoft SQL Server on-premises в Azure SQL managed instance можно считать завершённым.

 

Полезные ссылки

Backup database to Azure Blob Storage:

https://dallasdbas.com/sql-backups-azure-storage/

Restore database to Azure SQL Managed Instance from Azure Blob Storage:

https://docs.microsoft.com/en-us/azure/azure-sql/managed-instance/restore-sample-database-quickstart

No Comments

Add a Comment