Упражнение. Высокий уровень доступности на уровне "Критически важный для бизнеса"

Завершено

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

Вы будете использовать средство ostress, с помощью которого вы создавали рабочую нагрузку в предыдущем модуле. Затем вы инициируете отработку отказа с помощью модуля Azure PowerShell в Azure Cloud Shell. Наконец, вы увидите результат отработки отказа в рабочей нагрузке ostress.

Базовая высокая доступность в SQL Azure — уровень "Критически важный для бизнеса"

В этом упражнении вы выполните следующие действия.

  1. Разверните базу данных из предыдущего упражнения на уровне "Критически важный для бизнеса".
  2. Запуск рабочей нагрузки ostress.
  3. Запуск отработки отказа с помощью PowerShell.
  4. Просмотр результатов в ostress.
  5. Подключение к вторичной реплике для чтения.

Развертывание одной и той же базы данных на уровне "Критически важный для бизнеса"

В предыдущем модуле вы узнали, как масштабировать базу данных с помощью T-SQL. Цель этого упражнения — повысить уровень базы данных, которая использовалась в предыдущем упражнении, с "Общего назначения" до "Критически важный для бизнеса". Для обновления базы данных вы будете использовать Azure Cloud Shell. Так как существует ограничение по частоте отработки отказа, вы используете тот же образец базы данных, но с именем AdventureWorks-bc.

  1. В терминале Azure Cloud Shell справа на этой странице выполните указанную ниже команду PowerShell, чтобы настроить среду:

    $resourceGroup = "<rgn>[sandbox resource group name]</rgn>"
    $database = "AdventureWorks-bc"
    $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup
    $server = $server.ServerName
    
    # Specify your default resource group and Azure SQL Database logical server
    az configure --defaults group=$resourceGroup sql-server=$server
    
    # Confirm the defaults are set
    az configure --list-defaults
    
  2. Выполните эту команду, чтобы создать базу данных на уровне служб "Критически важный для бизнеса":

    az sql db create --name $database `
    --edition BusinessCritical `
    --family Gen5 `
    --capacity 2 `
    --sample-name AdventureWorksLT `
    --read-scale Enabled `
    --zone-redundant false
    

    Эта команда занимает некоторое время. Пока она выполняется, вы можете ознакомиться с некоторыми из используемых параметров:

    • family: этот параметр указывает создание оборудования. Для согласованности с предыдущим упражнением используется значение Gen5.

    • capacity: этот параметр указывает количество единиц DTU или виртуальных ядер. Для согласованности с предыдущим упражнением для параметра количества виртуальных ядер мы указали значение 2.

    • sample-name: Чтобы соответствовать предыдущему упражнению, мы использовали AdventureWorksLT пример базы данных.

    • edition: это немного вводящая в заблуждение имя параметра. На самом деле оно относится к уровню служб, который не совпадает с выпуском, используемым в SQL Server.

    • read-scale: этот параметр не включен по умолчанию, но с ним нет дополнительных затрат. Включив его, вы включаете одну из вторичных реплик, которая будет использоваться в качестве вторичной реплики для чтения.

    • zone-redundant: по умолчанию этот параметр имеет значение false. Вы можете задать значение true, если требуется развертывание с несколькими зонами доступности, без дополнительных затрат. Дополнительные сведения о зонах доступности см. в следующем уроке.

      Примечание.

      Зоны доступности можно использовать только в определенных регионах. На данный момент они недоступны в Управляемом экземпляре SQL Azure.

  3. После создания базы данных вы увидите подробные сведения об обновлениях в выходных данных Azure Cloud Shell. Вы увидите две основные категории (а также индикаторы в некоторых других свойствах):

    • currentServiceObjectiveName: должно быть BC_Gen5_2. BC означает "Критически важный для бизнеса".
    • currentSku:
      • name: должно быть BC_Gen5.
      • tier: должно быть BusinessCritical.
  4. Еще один способ проверить уровень служб — перейти к базе данных на портале Azure. На вкладке Обзор см. Ценовая категория.

    Совет

    Существует много других способов просмотра этих обновлений. Например, можно использовать SSMS. Чтобы просмотреть изменения, щелкните базу данных правой кнопкой мыши и выберите Свойства>Настройка целевого уровня обслуживания.

Запуск рабочей нагрузки ostress

Как и в предыдущем упражнении, вы будете использовать ostress для многократного выполнения запросов к базе данных SQL Azure.

  1. Если вы закрыли командную строку, используемую в предыдущем упражнении, откройте новое окно командной строки на локальном компьютере. Используйте cd, чтобы перейти в каталог с модулем доступности в репозитории, который вы клонировали или скачали ранее. Например, можно использовать следующую команду:

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    

    Рабочая нагрузка ostress устанавливает подключение и выполняет простой запрос 50 000 раз.

  2. Используйте следующий скрипт ostress для запуска рабочей нагрузки. Замените serverName именем логического сервера базы данных Azure SQL. заменив password собственным паролем; Эта команда немного отличается от команды в предыдущем упражнении. Теперь имя базы данных — AdventureWorks-bc.

    .\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks-bc" -P"password" -n1 -r50000
    

    Если рабочая нагрузка выполняется правильно, вы должны увидеть результат запроса 847, многократно отображаемый в окне командной строки.

    Если вы хотите прервать выполнение рабочей нагрузки ostress до ее завершения, нажмите CTRL+C в окне терминала.

    Если вы снова захотите запустить эту рабочую нагрузку, просто выполните команду еще раз.

Инициация отработки отказа и просмотр результатов

  1. Настройте окна так, чтобы видеть одновременно этот браузер и окно командной строки.

  2. Выполните приведенный ниже код в терминале Azure Cloud Shell. Это та же команда, которая использовалась в предыдущем упражнении.

    # create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  3. Во время выполнения этой команды нужно следить за изменениями, возникающими в терминале. Вы заметите, что при отработке отказа база данных будет недоступна. Но только на очень короткий период. Подключение должно быть восстановлено примерно через 5 секунд. Эта отработка отказа выполняется в шесть с лишним раз быстрее, чем на уровне "Общего назначения".

    Помните, что базы данных или управляемые экземпляры на уровне служб критически важный для бизнеса по сути имеют группу доступности AlwaysOn, развернутую за кулисами, поэтому при отработке отказа все это изменение указателей в серверной части, так как Azure перенаправляет вас на один из вторичных файлов. Именно поэтому отработка отказа выполняется гораздо быстрее, чем на уровне "Общего назначения".

Подключение к реплике, доступной только для чтения

Так как вы включили параметр read-scale, можно использовать одну из вторичных реплик для рабочих нагрузок, доступных только для чтения. Чтобы получить доступ к реплике только для чтения в приложениях, нужно просто добавить этот параметр в строку подключения для базы данных:

ApplicationIntent=ReadOnly;
  1. В среде SSMS создайте новое подключение с запросом. (Выберите Файл>Создать>Запрос к ядру СУБД.)

    Снимок экрана: создание подключения с запросом

  2. В диалоговом окне Подключение к серверу выберите конфигурацию, которую вы использовали для подключения к логическому серверу базы данных SQL Azure. (То есть, используйте Проверка подлинности SQL Server.) Выберите параметры.

    Снимок экрана: диалоговое окно

  3. Выберите Свойства подключения и Сбросить все. Затем в разделе Подключение к базе данных выберите Обзор сервера и базу данных AdventureWorks-bc. Нажмите ОК.

  4. Выберите Дополнительные параметры подключения, а затем скопируйте и вставьте следующий текст в текстовое поле. Нажмите Подключиться.

    ApplicationIntent=ReadOnly;
    

    В среде SSMS необходимо указать сервер и базу данных, к которым нужно подключиться только для чтения. Это связано с тем, что на сервере может быть несколько баз данных с разными возможностями для чтения вторичных реплик.

  5. Для проверки выполните указанный ниже новый запрос к ядру СУБД. Просмотрите результаты. Это то, чего вы ожидали?

    SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability')
    

    Снимок экрана: ответ только для чтения.

  6. При необходимости можно выполнить повторное подключение и обновить дополнительные параметры подключения. (Замените ReadOnlyReadWriteна .) Убедитесь, что вы обращаетесь к первичной реплике чтения и записи. ReadWrite используется по умолчанию, поэтому если вы ничего не выбираете, вы получаете следующий результат:

    Снимок экрана: ответ для чтения/записи.