Миграция: SQL Server в управляемый экземпляр SQL, активированный с помощью Azure Arc

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

Использование хранилища блобов Azure

Используйте хранилище BLOB-объектов Azure для миграции в Управляемый экземпляр SQL, поддерживаемый Azure Arc.

Этот метод использует Azure Blob Storage в качестве временного хранилища, в которое можно создать резервную копию и из которого можно восстановиться.

Предпосылки

Шаг 1. Подготовка хранилища BLOB-объектов в Azure

  1. Выполните действия, описанные в статье "Создание учетной записи хранения BLOB-объектов Azure"
  2. Запуск обозревателя службы хранилища Azure
  3. Войдите в Azure , чтобы получить доступ к хранилищу BLOB-объектов, созданному на предыдущем шаге
  4. Щелкните правой кнопкой мыши учетную запись хранения BLOB-объектов и выберите "Создать контейнер BLOB-объектов ", чтобы создать новый контейнер, в котором будет храниться файл резервной копии.

Шаг 2. Получите учетные данные для BLOB-объектов хранилища

  1. В обозревателе хранилища Azure щелкните правой кнопкой мыши по контейнеру BLOB-данных, который только что был создан, и выберите "Получить Подписанный Доступ"

  2. Выбор элемента "Чтение", " Запись " и "Список"

  3. Выберите 'Создать'

    Запишите URI и строку запроса на этом экране. Они потребуются в последующих шагах. Нажмите кнопку "Копировать ", чтобы сохранить в Блокноте или OneNote и т. д.

  4. Закройте окно подписанного URL-адреса .

Шаг 3. Резервное копирование файла базы данных в хранилище BLOB-объектов Azure

На этом шаге мы подключимся к исходному SQL Server и создадим файл резервной копии базы данных, которую мы хотим перенести в управляемый экземпляр SQL — Azure Arc.

  1. Запустите Visual Studio Code.

  2. Подключитесь к экземпляру SQL Server с базой данных, которую требуется перенести в управляемый экземпляр SQL — Azure Arc

  3. Щелкните базу данных правой кнопкой мыши и выберите команду "Создать запрос"

  4. Подготовьте запрос в следующем формате, заменив заполнители, указанные <...> с помощью сведений из подписи общего доступа на предыдущих шагах. После замены значений запустите запрос.

    IF NOT EXISTS  
    (SELECT * FROM sys.credentials
    WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>')  
    CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
      WITH IDENTITY = 'SHARED ACCESS SIGNATURE',  
       SECRET = '<SAS_TOKEN>';  
    
  5. Аналогичным образом подготовьте команду BACKUP DATABASE следующим образом, чтобы создать файл резервной копии для контейнера BLOB-объектов. После замены значений запустите запрос.

    BACKUP DATABASE <database name> TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
    
  6. Откройте обозреватель службы хранилища Azure и убедитесь, что файл резервной копии, созданный на предыдущем шаге, отображается в контейнере BLOB-объектов.

Дополнительные сведения о резервном копировании по URL-адресу см. здесь:

Шаг 4. Восстановление базы данных из хранилища BLOB-объектов Azure в Управляемый экземпляр SQL — Azure Arc

  1. В Visual Studio Code выполните вход и подключитесь к SQL Managed Instance - Azure Arc.

  2. Разверните системные базы данных, щелкните правой кнопкой мыши базу данных master и выберите "Создать запрос".

  3. В окне редактора запросов подготовьте и выполните тот же запрос из предыдущего шага, чтобы создать учетные данные.

    IF NOT EXISTS  
    (SELECT * FROM sys.credentials
    WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>')  
    CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
      WITH IDENTITY = 'SHARED ACCESS SIGNATURE',  
      SECRET = '<SAS_TOKEN>';  
    
  4. Подготовьте и выполните приведенную ниже команду, чтобы убедиться, что файл резервной копии доступен для чтения и нетронут.

    RESTORE FILELISTONLY FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
    
  5. Подготовка и выполнение команды RESTORE DATABASE , как показано ниже, чтобы восстановить файл резервной копии в базе данных в Управляемом экземпляре SQL — Azure Arc

    RESTORE DATABASE <database name> FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>/<file name>.bak'
    WITH MOVE 'Test' to '/var/opt/mssql/data/<file name>.mdf'
    ,MOVE 'Test_log' to '/var/opt/mssql/data/<file name>.ldf'
    ,RECOVERY;  
    GO
    

Метод 2. Копирование файла резервной копии в управляемый экземпляр SQL Azure — pod Azure Arc с помощью kubectl

В этом методе показано, как создать файл резервной копии с помощью любого метода, а затем скопировать его в локальное хранилище в модуле управляемого экземпляра SQL Azure, чтобы восстановить его из него так же, как и в обычной файловой системе Windows или Linux. В этом сценарии вы будете использовать команду kubectl cp для копирования файла из одного места в файловую систему pod.

Предпосылки

  • Установите и настройте kubectl, чтобы указать кластер Kubernetes, где развернуты службы данных Azure Arc.
  • Установите и подключите SQL Server Management Studio (SSMS) к SQL Server, где вы хотите создать файл резервного копирования, ИЛИ используйте уже существующий файл .bak в вашей локальной файловой системе.

Шаг 1. Резервное копирование базы данных, если вы еще не сделали

Резервное копирование базы данных SQL Server в локальный путь к файлу, как и любое обычное резервное копирование SQL Server на диск:

BACKUP DATABASE Test
TO DISK = 'C:\Backupfiles\test.bak'
WITH FORMAT, MEDIANAME = 'Test' ;
GO

Шаг 2. Копирование файла резервной копии в файловую систему pod

Найдите имя модуля pod, в котором развернут экземпляр SQL. Обычно это должно выглядеть следующим образом. pod/<sqlinstancename>-0

Получите список всех модулей pod, выполнив следующую команду:

kubectl get pods -n <namespace of data controller>

Пример:

Скопируйте файл резервной копии из локального хранилища в модуль pod SQL в кластере.

kubectl cp <source file location> <pod name>:var/opt/mssql/data/<file name> -n <namespace name> -c arc-sqlmi

#Example:
kubectl cp C:\Backupfiles\test.bak sqlinstance1-0:var/opt/mssql/data/test.bak -n arc -c arc-sqlmi

Шаг 3. Восстановление базы данных

Подготовка и запуск команды RESTORE для восстановления файла резервной копии в управляемом экземпляре SQL Azure — Azure Arc

RESTORE DATABASE test FROM DISK = '/var/opt/mssql/data/<file name>.bak'
WITH MOVE '<database name>' to '/var/opt/mssql/data/<file name>.mdf'  
,MOVE '<database name>' to '/var/opt/mssql/data/<file name>_log.ldf'  
,RECOVERY;  
GO

Пример:

RESTORE DATABASE test FROM DISK = '/var/opt/mssql/data/test.bak'
WITH MOVE 'test' to '/var/opt/mssql/data/test.mdf'  
,MOVE 'test' to '/var/opt/mssql/data/test_log.ldf'  
,RECOVERY;  
GO

Узнайте больше о функциях и возможностях управляемого экземпляра SQL с поддержкой Azure Arc

Начните с создания контроллера данных

Создание управляемого экземпляра SQL через Azure Arc