Поделиться через


Перезапуск экземпляра с помощью ручной отработки отказа, инициированного пользователем, Управляемый экземпляр SQL Azure

Область применения: Управляемый экземпляр SQL Azure

В этой статье объясняется, как перезапустить Управляемый экземпляр SQL Azure путем выполнения ручной отработки отказа, инициированного пользователем, на дополнительный вычислительный узел с помощью PowerShell, Azure CLI или REST API.

Можно выполнить отработку отказа первичного узла на уровнях служб общего назначения (GP) и критически важный для бизнеса (BC), а также вручную выполнить отработку отказа вторичного узла реплики только для чтения на уровне служб BC.

Примечание.

Отработка отказа в этой статье ссылается на запуск процесса ядра СУБД SQL Server на вторичном узле и не связана с отработкой отказа между регионами групп отработки отказа.

Когда следует использовать отработку отказа вручную

Доступность, фундаментальная часть платформы Управляемый экземпляр SQL, прозрачно работает для приложений базы данных, предоставляя локальные резервные вычислительные узлы для размещения процесса ядра СУБД SQL Server. Отработка отказа возникает, когда процесс ядра СУБД SQL Server выполняется в автономном режиме на основном вычислительном узле и подключен к сети на вторичном вычислительном узле. Как правило, отработка отказа между вычислительными узлами управляемого экземпляра SQL выполняется автоматически и управляется платформой при обнаружении сбоя, узле снижается или во время регулярных ежемесячных обновлений программного обеспечения.

Вся операция отработки отказа состоит из подключения ядра СУБД SQL Server к сети на вторичном узле, проверки состояния базы данных, а затем, наконец, перенаправления клиентских подключений к новому первичному узлу. Клиентские подключения завершаются сбоем только в течение короткого периода времени, как правило, в течение минуты во время последней операции отработки отказа.

Вы можете выполнить отработку отказа вручную, чтобы перезапустить процесс обработчика на другом узле по следующим причинам:

  • Сбой входа или замедление работы из-за проблем с производительностью.
  • Тестирование приложения для устойчивости отработки отказа перед развертыванием в рабочей среде.
  • Тестирование комплексных систем для отказоустойчивости при автоматической отработки отказа.
  • Тестирование того, как отработка отказа влияет на существующие сеансы базы данных.
  • Снижение производительности запросов (перезапуск экземпляра может помочь устранить проблему с производительностью).

Обеспечение устойчивости приложений к отработке отказа перед развертыванием в рабочей среде помогает снизить риск сбоев приложений в рабочей среде и способствует доступности приложений для клиентов. Дополнительные сведения о тестировании приложений для готовности к облаку с помощью следующего видео:

В следующей таблице описывается ожидаемое поведение Управляемый экземпляр SQL во время операции отработки отказа на основе уровня служб и модели доступности:

Уровень служб Модель доступности Ожидаемое поведение отработки отказа Потенциальное поведение отработки отказа (исключения)
Общего назначения Локальная избыточность
(отдельная зона доступности)
Процесс SQL перезапускается на той же виртуальной машине. Процесс SQL перезапускается на другой виртуальной машине.
Общего назначения Избыточность зоны (предварительная версия)
(Несколько зон доступности)
Процесс SQL перезапускается на той же виртуальной машине. Процесс SQL перезапускается на другой виртуальной машине.
Критически важный для бизнеса Локальная избыточность
(отдельная зона доступности)
Случайная вторичная реплика повышена до первичной. Н/П
Критически важный для бизнеса Избыточность зоны
(Несколько зон доступности)
Случайная вторичная реплика повышена до первичной или другой зоны доступности. Н/П

Разрешения

Пользователи, инициирующие отработку отказа, должны иметь одну из следующих ролей Azure:

  • роль владельца подписки; или
  • роль участника Управляемый экземпляр SQL или
  • настраиваемая роль со следующим разрешением: .
    • Microsoft.Sql/managedInstances/failover/action

Перезапуск экземпляра с помощью отработки отказа вручную

Экземпляр можно перезапустить с помощью ручной отработки отказа с помощью PowerShell, Azure CLI или REST API.

Минимальная версия Az.Sql — v 2.9.0. Рассмотрите возможность использования Azure Cloud Shell из портала Azure, где всегда доступна последняя версия PowerShell.

Предварительное требование: используйте следующий сценарий PowerShell для установки необходимых модулей Azure. Кроме того, выберите подписку, в которой находится Управляемый экземпляр SQL, где находится отработка отказа.

$subscription = 'enter your subscription ID here'
Install-Module -Name Az
Import-Module Az.Accounts
Import-Module Az.Sql

Connect-AzAccount
Select-AzSubscription -SubscriptionId $subscription

Используйте команду PowerShell Invoke-AzSqlInstanceFailover в следующем примере, чтобы инициировать отработку отказа основного узла, применимую к уровню служб BC и GP.

$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName

Используйте следующую команду PowerShell для отработки отказа вторичного узла, применимого только к уровню служб BC.

$ResourceGroup = 'enter resource group of your MI'
$ManagedInstanceName = 'enter MI name'
Invoke-AzSqlInstanceFailover -ResourceGroupName $ResourceGroup -Name $ManagedInstanceName -ReadableSecondary

Контроль отработки отказа

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

Чтобы отслеживать ход выполнения отработки отказа, инициированной пользователем, используйте:

  • sys.dm_os_sys_info проверить время работы системы на уровне служб общего назначения.
  • sys.dm_hadr_fabric_replica_statesчтобы проверить доступные реплики для уровня служб критически важный для бизнеса.

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

Уровень служб "Общего назначения"

В следующем примере T-SQL показано время простоя процесса SQL на узле для уровня служб общего назначения :

SELECT sqlserver_start_time, sqlserver_start_time_ms_ticks FROM sys.dm_os_sys_info

Время начала процесса SQL — это время начала процесса ядра СУБД SQL Server на узле. Время перезапускается после завершения отработки отказа. Выполните этот запрос до и после запуска отработки отказа экземпляра на уровне служб общего назначения для мониторинга хода выполнения операции отработки отказа.

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

В следующем примере T-SQL указывается, какой узел в настоящее время является основной репликой для уровня служб критически важный для бизнеса:

SELECT DISTINCT replication_endpoint_url, fabric_replica_role_desc FROM sys.dm_hadr_fabric_replica_states

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

Примечание.

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

Ограничения

Рассмотрим следующие функциональные ограничения, инициированные пользователем, отработки отказа вручную.

  • На одном Управляемый экземпляр SQL каждые 1 минуты может выполняться только одна отработка отказа (1).
  • Отработка отказа не допускается:
    • До завершения первой полной резервной копии для новой базы данных автоматическими системами резервного копирования.
    • Если выполняется восстановление базы данных.
  • Например, на уровне служб критически важный для бизнеса:
    • Для принятия запроса отработки отказа необходимо существовать кворум реплик.
    • Невозможно указать, какую читаемую вторичную реплику можно инициировать отработку отказа.