Область применения:
Управляемый экземпляр SQL Azure
В этой статье описывается, как остановить и запустить экземпляр, чтобы сэкономить на затратах на выставление счетов при использовании Управляемый экземпляр SQL Azure на уровне служб общего назначения. Вы можете запустить и остановить экземпляр с помощью портала Azure, Azure PowerShell, Azure CLI или REST API.
Примечание
Функция остановки и запуска управляет выставлением счетов и не должна использоваться для перезапуска экземпляра как шаг устранения неполадок.
Чтобы сэкономить на счетах, вы можете остановить управляемый экземпляр общего использования, если вы не используете его. Остановка экземпляра аналогична высвобождению ресурсов виртуальной машины. Если экземпляр находится в остановленном состоянии, вам больше не начисляют плату за вычисления и лицензии, но по-прежнему выставляется счёт за хранение данных и резервные копии.
Остановка управляемого экземпляра очищает все кэшированные данные.
Эта особенность вводит три новых состояния управляемого экземпляра, как показано на следующей схеме.
- Остановка
- Остановлено
- Начало
После запуска операции остановки обычно требуется около 5 минут, чтобы остановить экземпляр. Однако запуск экземпляра занимает около 20 минут с момента старта операции. Только управляемые экземпляры в состоянии готовности могут быть остановлены. После остановки экземпляра он остается в остановленном состоянии, пока не начнется операция по запуску – либо вручную, либо по запланированному расписанию. Можно перезапустить только экземпляры, которые находятся в остановленном состоянии.
При создании управляемого экземпляра, запуске остановленного управляемого экземпляра или изменении его размера (например, изменении уровня обслуживания, объема хранилища, поколения оборудования или количества виртуальных ядер), Azure выделяет вычислительные ресурсы для базового виртуального кластера. Несмотря на постоянные инвестиции в дополнительную инфраструктуру для поддержки спроса клиентов, могут возникнуть случайные сбои распределения ресурсов из беспрецедентного роста спроса на службы Azure в определенных регионах. Это может привести к длительной продолжительности операции (примерно 4 часа при наличии новой сборки виртуального кластера в соответствии с длительностью операций управления), или к сбою запуска экземпляра, в таком случае попробуйте снова позже.
Важно!
В качестве платформы как услуги (PaaS) Управляемый экземпляр SQL отвечает за соответствие всех системных компонентов. Если требуется срочное обслуживание системы, для которого необходимо, чтобы экземпляр находился в сети, Azure может инициировать его запуск и поддерживать онлайн до завершения обслуживания, после чего Azure остановит экземпляр. Плата за вычислительные ресурсы и лицензии взимается за все время, когда экземпляр находится в активном режиме.
Существует два способа остановки и запуска экземпляра: вручную по запросу или путем создания расписания.
Вы можете использовать команды вручную, чтобы немедленно вызвать остановку и запуск. Ручные команды хороши для случаев, когда у них длительные периоды простоя при отсутствии регулярных шаблонов или для тестирования. Кроме того, можно использовать расписания в Azure Automation или любое пользовательское решение, которое создает настраиваемые и более гибкие расписания, которые нельзя настроить с помощью встроенного планировщика остановки и запуска в SQL Managed Instance.
Вы также можете создать расписание с одним или несколькими моментами времени, при которых запускается или останавливается действие. Запланированные команды хорошо подходят для экземпляров, имеющих регулярные шаблоны, такие как запуск экземпляра каждый рабочий день в 8 утра, остановка его в 5 вечера, а затем запуск в выходные дни в 7 утра и остановка его в 11:00. Планирование ваших команд устраняет необходимость создания пользовательских решений или использования службы автоматизации Azure для создания расписаний для остановки и запуска.
Запланированные элементы представляют точки во времени, когда инициируются события остановки и запуска, а не когда экземпляр уже работает. При создании расписания учитывайте длительность операции. Например, если вы хотите, чтобы ваш экземпляр был запущен в 8:00, можно задать расписание, которое начинает работу в 7:40.
Рассмотрим следующие правила для расписания остановки и начала:
- Запланированные элементы определяются как пара начал и остановки, причём они должны иметь заполненные значения как для начала, так и для остановки. Невозможно иметь заполненное значение остановки с отсутствующим начальным значением, и наоборот.
- Запланированные пары не могут перекрываться. Если есть перекрытие запланированного времени, API возвращает ошибку.
- Интервал времени между двумя последовательными действиями (то есть запуск после остановки или остановки после начала) должен быть не менее одного часа. Например, если запуск запланирован на 10 часов утра, действие остановки не может быть запланировано до 11 утра.
- Если возникают конфликтующие операции при срабатывании остановки (например, масштабирование vCore в процессе), механизм повторяет попытку через 10 минут. Если через 10 минут конфликтующая операция будет по-прежнему активной, операция остановки будет пропущена.
Остановленные экземпляры не тарифицируются за виртуальные ядра и лицензию SQL; плата взимается только за хранение данных и резервных копий. Однако плата за виртуальные ядра и лицензии взимается за каждый начатый час. Например, в 12:01 будет взиматься плата за полный час, даже если экземпляр будет остановлен в течение этого времени.
Преимущество гибридного использования Azure
Для каждого ресурса применяется Преимущество гибридного использования Azure (AHB). Если ваш экземпляр использует Преимущество гибридного использования Azure для экономии на затратах на лицензирование, и вы хотите применить это преимущество к другому ресурсу, когда экземпляр находится в остановленном состоянии, вам необходимо сначала отключить Преимущество гибридного использования Azure на экземпляре, а затем остановить экземпляр. Аналогичным образом, после перезапуска экземпляра необходимо повторно использовать AHB для применения преимущества лицензирования.
Резервирование Azure применяется для виртуальных ядер и начисленных часов. Если экземпляр, подходящий для резервного ценообразования, останавливается, резервное ценообразование автоматически перенаправляется на другой экземпляр, если такой существует. Вы можете использовать функцию остановки и запуска для переоценки зарезервированных экземпляров.
Например, предположим, что вы приобрели управляемый экземпляр с резервом на 16 виртуальных ядер. Вы можете запускать два экземпляра с 8 виртуальными ядрами каждый с 13:00 до 14:00, остановить оба экземпляра, а затем запустить два других экземпляра с 8 виртуальными ядрами каждый с 14:00 до 15:00. Этот подход будет использовать ваше ограничение на 16 виртуальных ядер в течение каждого часа, распределяя его среди четырёх экземпляров в общей сложности.
Скидки на бронирование предлагаются на основе "если не использовать, то потеряете". То есть, если у вас нет соответствующих ресурсов в течение указанного часа, количество резервирования за этот час теряется. Неиспользуемые зарезервированные часы не могут быть перенесены.
Ограничения функции остановки и запуска
Необходимо учитывать следующие ограничения.
- Остановка и запуск экземпляра в настоящее время возможна только для экземпляров на уровне служб общего назначения.
- Вы не можете остановить те экземпляры, которые:
- Хотя управляемый экземпляр находится в остановленном состоянии, изменить его свойства конфигурации невозможно. Чтобы изменить какие-либо свойства, необходимо запустить экземпляр.
- Пока экземпляр находится в остановленном состоянии, невозможно выполнять резервное копирование. Например, предположим, что у вас настроены долгосрочные резервные копии с ежегодными резервными копиями. Если остановить экземпляр на период ежегодного резервного копирования, резервная копия будет пропущена. Рекомендуется поддерживать экземпляр в рабочем состоянии в течение ежегодного периода резервного копирования.
- Невозможно отменить операцию остановки или запуска после ее запуска.
- Если запланирована проверка уязвимостей для Управляемого экземпляра SQL, и экземпляр остановлен, операция сканирования все равно будет инициирована, и выполнение сканирования завершится ошибкой.
-
Уведомления об обслуживании не будут запускаться для экземпляров, которые находятся в остановленном состоянии. Это приводит к следующим результатам:
- Неполная последовательность уведомлений (например, расширенное уведомление не отправляется, отправляется уведомление о ходе выполнения).
- Управляемый экземпляр SQL отсутствует в списке затронутых ресурсов в содержимом уведомления.
- Журналы ошибок, доступные в управляемом экземпляре SQL, не сохраняются и автоматически удаляются при остановке этого экземпляра.
Чтобы использовать функцию остановки и запуска экземпляра, экземпляр должен находиться в служебном уровне "Общий доступ".
Экземпляры, не соответствующие предварительным требованиям, имеют отключенные элементы управления остановкой и запуском на странице Обзор ресурса управляемого экземпляра SQL в портале Azure. При наведении указателя мыши на элемент управления объясняется, почему компонент не может использоваться экземпляром.
Подготовка среды командной строки
Пропустите этот шаг, если вы используете портал Azure.
Если вы хотите остановить или запустить экземпляр с помощью PowerShell или Azure CLI, необходимо подготовить среду, настроив средства командной строки и определив параметры.
Кроме того, чтобы настроить средства командной строки, можно также использовать Azure Cloud Shell, которая является бесплатной интерактивной оболочкой, которую можно использовать для выполнения действий, описанных в этой статье. Он имеет стандартные предварительно установленные средства Azure и настроен для использования с вашей учетной записью. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Чтобы открыть Cloud Shell, выберите Попробовать в правом верхнем углу блока кода. Cloud Shell можно также запустить в отдельной вкладке браузера, перейдя на страницу https://shell.azure.com.
Чтобы остановить и запустить экземпляр с помощью PowerShell, можно установить Azure PowerShell или использовать Azure Cloud Shell.
Когда откроется Cloud Shell, убедитесь, что для вашей среды выбран PowerShell. Последующие сеансы используют Azure CLI в среде PowerShell. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить его.
После запуска PowerShell или Cloud Shell определите параметры:
$SubscriptionId = "<Subscription-ID>"
$SqlMIName = "<SQL-MI-name>"
$RgName = "<SQL-MI-resource-group>"
# Login-AzAccount
Select-AzSubscription -SubscriptionName $SubscriptionID
Чтобы остановить и запустить экземпляр с помощью Azure CLI, можно установить Azure CLI или использовать Azure Cloud Shell.
Когда откроется Cloud Shell, убедитесь, что для вашей среды выбран вариант Bash. Последующие сеансы используют Azure CLI в среде Bash. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить его.
Автоматическая проверка подлинности Cloud Shell выполняется с использованием первой учетной записи, с которой был выполнен вход. Используйте следующий скрипт, чтобы войти с другой подпиской, указав вместо <Subscription ID>
идентификатор нужной подписки Azure.
subscription="<Subscription-ID>"
instanceName="<SQL-MI-name>"
resourceGroupName="<SQL-MI-resource-group>"
az account set -s $subscription # ...or use 'az login'
Дополнительные сведения см. в разделе задание активной подписки или интерактивный вход.
Остановка управляемого экземпляра
Инстанцию можно остановить с помощью:
- Портал Azure
- PowerShell
- Интерфейс командной строки Azure
- Вызов вызова REST API с помощью любого средства
Чтобы остановить управляемый экземпляр с помощью портал Azure, перейдите на страницу обзора экземпляра и нажмите кнопку "Остановить".
Если экземпляр уже остановлен, кнопка Остановить недоступна.
Чтобы остановить управляемый экземпляр с помощью PowerShell, используйте Stop-AzSqlInstance, например следующий пример сценария:
Stop-AzSqlInstance -Name $SqlMIName -ResourceGroupName $RgName
Чтобы остановить управляемый экземпляр с помощью Azure CLI, используйте az sql mi stop, например следующий пример сценария:
az sql mi stop --mi $instanceName -g $resourceGroupName
Остановите управляемый экземпляр, вызвав API SQL Managed Instances - Stop:
POST
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.Sql/managedInstances/{managedInstanceName}/stop?api-version=2021-08-01-preview
Запуск управляемого экземпляра
Вы можете запустить инстанцию с помощью:
- Портал Azure
- PowerShell
- Интерфейс командной строки Azure
- Вызов вызова REST API с помощью любого средства
После остановки управляемого экземпляра, чтобы запустить его с помощью портал Azure, перейдите на страницу обзора экземпляра и нажмите кнопку "Пуск".
Если инстанция уже запущена, кнопка "Пуск" недоступна.
Чтобы запустить управляемый экземпляр с помощью PowerShell, используйте Start-AzSqlInstance, например следующий пример сценария:
Start-AzSqlInstance -Name $SqlMIName -ResourceGroupName $RgName
Чтобы запустить управляемый экземпляр с помощью Azure CLI, используйте az sql mi start, например следующий пример скрипта:
az sql mi start --mi $instanceName -g $resourceGroupName
Запустите управляемый экземпляр с помощью API SQL Managed Instances - Start (Запуск управляемых экземпляров SQL).
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.Sql/managedInstances/{managedInstanceName}/start?api-version=2021-08-01-preview
Управление расписанием остановки и начала
Вы можете управлять расписанием остановки и запуска с помощью:
- Портал Azure
- PowerShell
- Интерфейс командной строки Azure
- Вызов вызова REST API с помощью любого средства
Чтобы управлять расписанием запуска и остановки с помощью портала Azure, перейдите к вашему экземпляру и выберите пункт Расписание запуска и остановки в меню ресурсов.
На панели "Расписание запуска и остановки" можно:
- Просмотр существующих расписаний.
- Укажите часовой пояс запланированных событий в раскрывающемся списке часовых поясов .
- Создайте новое расписание, выбрав "Создать элемент расписания".
- Измените существующее расписание, выбрав значок карандаша.
- Удалите существующее расписание, выбрав значок корзины.
Чтобы создать расписание остановки и запуска управляемого экземпляра с помощью PowerShell, используйте New-AzSqlInstanceStartStopSchedule и New-AzSqlInstanceScheduleItem, например следующий пример сценария:
$newSchedule = [System.Collections.ArrayList]::new()
$newScheduleMonday = New-AzSqlInstanceScheduleItem -StartDay Monday -StopDay Monday -StartTime "09:00" -StopTime "17:00"
$newSchedule.add($newScheduleMonday)
$newScheduleTuesday = New-AzSqlInstanceScheduleItem -StartDay Tuesday -StopDay Tuesday -StartTime "09:00" -StopTime "17:00"
$newSchedule.add($newScheduleTuesday)
$newScheduleWednesday = New-AzSqlInstanceScheduleItem -StartDay Wednesday -StopDay Wednesday -StartTime "07:00" -StopTime "19:00"
$newSchedule.add($newScheduleWednesday)
$newScheduleThursday = New-AzSqlInstanceScheduleItem -StartDay Thursday -StopDay Thursday -StartTime "09:00" -StopTime "17:00"
$newSchedule.add($newScheduleThursday)
$newScheduleFriday = New-AzSqlInstanceScheduleItem -StartDay Friday -StopDay Friday -StartTime "11:00" -StopTime "17:00"
$newSchedule.add($newScheduleFriday)
New-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName -TimeZone "Central Europe Standard Time" -ScheduleList $newSchedule
Чтобы проверить существующее расписание, используйте Get-AzSqlInstanceStartStopSchedule, например следующий пример сценария:
$currentSchedule = Get-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName
$scheduleItemsList = $currentSchedule.ScheduleList
$scheduleItemsList
Чтобы обновить существующее расписание остановки и запуска управляемого экземпляра, используйте New-AzSqlInstanceStartStopSchedule и New-AzSqlInstanceScheduleItem, например следующий пример сценария:
$currentSchedule = Get-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName
$scheduleItemsList = $currentSchedule.ScheduleList
# Remove Thursday item
$scheduleItemsList = $scheduleItemsList | Where-Object { $_.StartDay -ne "Thursday" }
# Adjust Friday item
$fridaySchedule = $scheduleItemsList | Where-Object { $_.StartDay -eq "Friday" }
$fridaySchedule.StartTime = "09:00"
# Add new Thursday item
$newScheduleThursday = New-AzSqlInstanceScheduleItem -StartDay Thursday -StopDay Thursday -StartTime "12:00" -StopTime "18:00"
$scheduleItemsList += $newScheduleThursday
# Update schedule with new configuration
New-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName -TimeZone "Central Europe Standard Time" -ScheduleList $scheduleItemsList
Чтобы удалить существующее расписание, используйте Remove-AzSqlInstanceStartStopSchedule, например следующий пример сценария:
Remove-AzSqlInstanceStartStopSchedule -InstanceName $SqlMIName -ResourceGroupName $RgName
Чтобы создать расписание остановки и запуска управляемого экземпляра с помощью Azure CLI, используйте az sql mi start-stop-schedule create, например следующий пример сценария:
scheduleItems="[{'startDay':'Monday','startTime':'10:00','stopDay':'Monday','stopTime':'18:00'},{'startDay':'Tuesday','startTime':'10:00','stopDay':'Tuesday','stopTime':'18:00'},{'startDay':'Wednesday','startTime':'12:00','stopDay':'Wednesday','stopTime':'22:00'},{'startDay':'Thursday','startTime':'14:00','stopDay':'Thursday','stopTime':'20:00'},{'startDay':'Friday','startTime':'14:00','stopDay':'Friday','stopTime':'20:00'}]"
timezone="Central Europe Standard Time"
az sql mi start-stop-schedule create --mi "$instanceName" -g "$resourceGroupName" --timezone-id "$timezone" --schedule-list "$scheduleItems"
Чтобы проверить существующее расписание, используйте az sql mi start-stop-schedule show, например следующий пример сценария:
az sql mi start-stop-schedule show --mi "$instanceName" -g "$resourceGroupName"
Чтобы обновить существующее расписание для остановки и запуска управляемого экземпляра, используйте az sql mi start-stop-schedule update, например следующий пример сценария:
# append an item
newScheduleItem="{'startDay':'Friday','startTime':'09:00 PM','stopDay':'Friday','stopTime':'11:00 PM'}"
az sql mi start-stop-schedule update --mi $instanceName -g $resourceGroupName --add schedule_list "$newScheduleItem"
# remove an item
#items in list are indexed (0 based)
az sql mi start-stop-schedule update --mi $instanceName -g $resourceGroupName --remove schedule_list 2
Чтобы удалить существующее расписание, используйте az sql mi start-stop-schedule delete, например следующий пример сценария:
az sql mi start-stop-schedule delete --mi "$instanceName" -g "$resourceGroupName"
Создание или обновление расписания
Чтобы создать или обновить расписание для остановки и запуска управляемого экземпляра, вызовите API Start Stop SQL Managed Instance Schedules - Create Or Update и отредактируйте содержимое в соответствии с вашим расписанием.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/managedInstances/{managedInstanceName}/startStopSchedules/default?api-version=2022-08-01-preview
{
"properties": {
"timeZoneId": "Central European Standard Time",
"description": "This is a schedule for our Dev/Test environment.",
"scheduleList": [
{
"startDay": "Monday",
"startTime": "07:30",
"stopDay": "Wednesday",
"stopTime": "17:00"
},
{
"startDay": "Thursday",
"startTime": "15:00",
"stopDay": "Friday",
"stopTime": "15:00"
}
]
}
}
Чтобы проверить существующее расписание, вызовите API Start Stop SQL Managed Instance Schedules - Get:
GET
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.Sql/managedInstances/{managedInstanceName}/startStopSchedules/default?api-version=2022-08-01-preview
Чтобы удалить существующее расписание, вызовите API "Start Stop SQL Managed Instance Schedules - Delete".
DELETE
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.Sql/managedInstances/{managedInstanceName}/startStopSchedules/default?api-version=2022-08-01-preview
Примечание
В настоящее время журнал действий записывает только операции, инициированные с помощью Azure Resource Manager (ARM). Запланированные операции запуска и остановки не отслеживаются в журнале действий. Таким образом, в настоящее время невозможно просмотреть журнал запланированных операций запуска и остановки с помощью журнала действий в портал Azure или через любой мониторинг, основанный на таких журналах.