Автоматизация задач базы данных для масштабируемости

Завершено

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

Azure Automation

служба автоматизации Azure позволяет выполнять автоматизацию процессов, управление конфигурацией, полную интеграцию с параметрами платформы Azure, например управление доступом на основе ролей и идентификатор Microsoft Entra, а также управлять azure и локальными ресурсами.

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

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

Компоненты

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

Компонент Description
Модуль runbook Модули Runbook являются единицей выполнения в службе автоматизации Azure. Модули Runbook определяются как один из трех типов: графический модуль Runbook на основе PowerShell, скрипта PowerShell или скрипта Python. Модули Runbook PowerShell чаще всего используются для управления ресурсами SQL Azure.
Модуль служба автоматизации Azure определяет контекст выполнения для кода PowerShell или Python, выполняемого в модулю Runbook. Чтобы выполнить код, необходимо импортировать вспомогательные модули. Например, если требуется запустить Get-AzSqlDatabase командлет PowerShell, необходимо импортировать Az.SQL модуль PowerShell в учетную запись службы автоматизации.
Учетные данные Учетные данные хранят конфиденциальную информацию, которую модули Runbook или конфигурации могут использовать во время выполнения.
Запланировать Расписания связаны с модулями Runbook и активируют модуль Runbook в определенное время.

Дополнительные сведения о командах Azure CLI и PowerShell, доступных для управления База данных SQL Azure и Управляемый экземпляр SQL Azure ресурсов, см. в следующих ссылках: модуль PowerShell для SQL Azure и Azure CLI для Azure SQL.

Задания обработки эластичных БД

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

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

Архитектура

Функция эластичных заданий позволяет запускать набор скриптов T-SQL для коллекции серверов или баз данных в качестве одноразового задания или с помощью определенного расписания. Задания обработки эластичных баз данных работают аналогично заданиям агента SQL Server, за исключением того, что они ограничены выполнением T-SQL. Задания работают на всех уровнях Базы данных SQL Azure.

Screenshot of the elastic job architecture diagram.

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

Давайте рассмотрим компоненты заданий обработки эластичных баз данных:

  • Агент эластичных заданий — ресурс Azure для выполнения заданий и управления ими.
  • База данных заданий — база данных, выделенная для управления заданиями.
  • Целевая группа — коллекция серверов, эластичных пулов и отдельные базы данных, в которых будет выполняться задание.
  • Задание — один или несколько сценариев T-SQL, составляющих шаг задания.

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

Screenshot of the elastic job agent creation page.

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

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

Write-Output "Creating a new job..."
$jobName = "MyFirstElasticJob"
$job = $jobAgent | New-AzSqlElasticJob -Name $jobName -RunOnce

Write-Output "Creating job steps for $($jobName) job..."
$sqlText1 = "IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id('MyTable')) CREATE TABLE [dbo].[MyTable]([Id] [int] NOT NULL);"

$job | Add-AzSqlElasticJobStep -Name "Step1" -TargetGroupName $serverGroup.TargetGroupName -CredentialName $jobCred.CredentialName -CommandText $sqlText1

Наконец, запустите эластичное задание MyFirstElasticJob .

Write-Output "Start the job..."
$jobExecution = $job | Start-AzSqlElasticJob
$jobExecution

Варианты использования

Задания обработки эластичных баз данных можно использовать в следующих сценариях:

  • Автоматизация задач управления для выполнения в определенном расписании.
  • Развертывание изменений схемы.
  • Перемещения данных.
  • Сбор и агрегирования данных для создания отчетов или других целей.
  • Загрузите данные из хранилища BLOB-объектов Azure.
  • Настройка заданий для выполнения в коллекции баз данных на постоянной основе, например в часы наименьшей нагрузки.
  • обработка данных большого количества баз данных, например сбор данных телеметрии. Затем результаты собираются в одну целевую таблицу для дальнейшего анализа.

Перенос заданий агента SQL в эластичные задания

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

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

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

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

Перенос заданий агента SQL в агент SQL в Azure

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

Предположим, что в нашем сценарии мы переносили локальный SQL Server в Управляемый экземпляр SQL Azure. Нам нужно перенести и настроить несколько заданий агента SQL, чтобы они эффективно функционировали в среде Azure.

  • Оценка зависимостей. Определите задание агента SQL, которое требуется перенести. Вывод списка зависимостей, таких как связанные серверы, учетные данные и базы данных, на которые зависит задание.

  • Скрипт задания агента SQL: скрипт задания агента SQL в SQL Server в качестве скрипта SQL. Это можно сделать, щелкнув правой кнопкой мыши задание в СРЕДЕ SQL Server Management Studio (SSMS) и выбрав "Задание скрипта как" -> CREATE To -> "Создать Редактор запросов окно".

  • Изменение зависимостей заданий: просмотрите скрипт SQL и измените все зависимости заданий, которые, возможно, изменились из-за миграции. Например, если задание ссылается на связанный сервер или путь к файлу на локальном сервере, обновите его в соответствии с новой средой.

  • Создание задания AZURE SQL MI: откройте SSMS или Azure Data Studio и подключитесь к Управляемый экземпляр SQL Azure. Создайте новое задание агента SQL с помощью скрипта, созданного ранее.

  • Создание зависимостей в AZURE SQL MI. Если задание агента SQL использует связанные серверы или учетные данные, создайте их в среде AZURE SQL MI. Убедитесь, что они соответствуют конфигурации из локального SQL Server.

  • Запланируйте задание: настройте расписание заданий в AZURE SQL MI с помощью агент SQL Server. Вы можете создать новое расписание и связать его с заданием.

  • Тестирование. Тщательно проверьте задание агента SQL в среде AZURE SQL MI, чтобы убедиться, что он выполняется должным образом. Проверьте наличие ошибок или проблем, которые могут возникнуть из-за различий между локальным SQL Server и Azure SQL MI.

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