Рекомендации по архитектуре Azure Database for MySQL

Azure Database for MySQL — это полностью управляемая гибкая служба реляционной базы данных, готовая к использованию в промышленном режиме и основанная на MySQL Community Edition. Она обеспечивает зональную избыточность и локальную избыточность для высокой доступности (HA), управляемые периоды обслуживания, автоматическое резервное копирование с восстановлением на определенный момент времени и эластичное масштабирование на трех уровнях вычислительных ресурсов.

В этой статье предполагается, что в качестве архитектора вы рассмотрели дерево принятия решений data store и выбрали Azure Database for MySQL в качестве базы данных для рабочей нагрузки.

В этой статье приведены рекомендации по архитектуре, сопоставленные с принципами Well-Architected платформы.

Область технологий

В этом обзоре рассматриваются взаимосвязанные решения для следующих Azure ресурсов:

  • База данных Azure для MySQL

Reliability

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

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

Контрольный список разработки рабочей нагрузки

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

  • Известные проблемы и ограничения служб, которые могут повлиять на надежность: Гибкий сервер Azure Database for MySQL имеет ограничения, влияющие на надежность. Просмотрите эти ограничения перед подготовкой серверов, чтобы избежать повторного создания сервера. Подтвердите требования высокой доступности с избыточностью между зонами и метод подключения к сети при создании, так как эти параметры невозможно изменить позже.

    Спланируйте начальное выделение хранилища тщательно, так как вы можете масштабировать хранилище только и не можете уменьшить его. Избегайте использования реплик для чтения, если вам нужна функция остановки и запуска, и предусмотрите бюджет для процедур дампа и восстановления при обновлении основных версий. Выберите уровни "Общего назначения" или "Оптимизированная для памяти", если для рабочей нагрузки требуется отказоустойчивость или реплики для чтения.

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

    Failure Смягчение последствий
    Сбой оборудования или процесса сервера базы данных приводит к прерыванию работы службы. Включите зонально-избыточный режим высокой доступности для автоматического перехода на резервный режим, который достигает нулевой точки восстановления (RPO). Настройте логику повтора подключения на уровне доступа к данным.
    Полный сбой зоны доступности нарушает службы базы данных в затронутой зоне. Разверните зонально-избыточную конфигурацию высокой доступности (HA), чтобы разместить первичные и резервные серверы по зонам для автоматического переключения в случае отказа.
    Случайное удаление или неправильное обновление данных может повредить или уничтожить их. Используйте восстановление данных на конкретный момент времени, чтобы восстановить информацию до любой секунды в пределах срока хранения резервных копий. Удаленные серверы можно восстановить в течение пяти дней.
  • Реализуйте избыточность с помощью конфигураций высокого уровня доступности: Используйте конфигурацию высокого уровня доступности для распределения компонентов базы данных между доменами сбоя и устранения отдельных точек сбоя. Развертывание зоны с избыточной высокой доступностью для размещения основных и резервных серверов в разных зонах доступности, использующих зонально-избыточное хранилище (ZRS), которое обеспечивает автоматическое переключение в течение 60–120 секунд и с нулевым RPO для подтвержденных транзакций.

    Учитывайте высокую доступность в пределах одной зоны, если рабочая нагрузка допускает риск на уровне зоны или ориентируется на оптимизацию затрат с использованием локально избыточного хранилища (LRS). Этот параметр защищает от сбоев на уровне сервера, но не от сбоев зон.

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

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

    • Запланируйте изменения уровня вычислений во время низких периодов трафика, чтобы управлять кратким перезапуском по мере миграции рабочей нагрузки на новый экземпляр. Используйте серверы, имеющие высокий уровень доступности, чтобы сократить основное время простоя, так как они выполняют масштабирование в резервном режиме. Тщательно оптимизируйте начальные выделения хранилища. Вы можете увеличить емкость хранилища только после поставки, но не уменьшать ее.

    • Используйте реплики чтения, чтобы распределять рабочие нагрузки для чтения между максимум 10 экземплярами с помощью асинхронной репликации двоичных журналов. Выберите уровни "Общего назначения" или "Оптимизированная для памяти" для серверов, которым требуются реплики, и отслеживайте задержку репликации, так как она зависит от тома записи на основном сервере.

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

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

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

  • Применение методов настройки и самосохранения для защиты от сбоев: Применение мер по настройке базы данных и защите платформы для повышения устойчивости резервного копирования и предотвращения дрейфа конфигурации.

    • Добавьте явные первичные ключи ко всем таблицам, чтобы повысить производительность репликации и сократить длительность переключения.

    • Настройте логику повторных попыток подключения на уровне доступа к данным для обработки кратких перебоев во время плановой замены на резервные системы, обслуживания и увеличения систем. Учитывайте задержку распространения системы доменных имен (DNS) после переключения на резервный сервер, настраивая приложения для повторной попытки восстановления прерванных подключений.

    • Примените блокировки ресурсов Azure и Azure Policy для защиты от смещения конфигурации.

  • Создайте стратегию аварийного восстановления, которая включает возможности резервного копирования и геоизбыточности: Определите, как резервное копирование, геоизбыточное и межрегионное восстановление используются для соответствия требованиям RPO и времени восстановления (RTO).

    • Задайте частоту автоматического резервного копирования и периоды хранения для достижения RPO рабочей нагрузки. Настройте интервалы резервного копирования для ускорения восстановления больших баз данных.

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

    • Выберите соответствующий уровень избыточности. Развертывания без высокой доступности и высокой доступности в одной зоне по умолчанию используют LRS, а развертывания с высокой доступностью между зонами используют ZRS. Включите геоизбыточное резервное копирование для репликации данных клиента за пределами развернутого региона.

Рекомендации по настройке

Recommendation Преимущества
Включите межзональную избыточность высокой доступности при создании сервера и выберите предпочтительные зоны доступности для основного сервера и резервных серверов. Перед созданием сервера убедитесь, что рабочая нагрузка поддерживает режим Global Transaction Identifier (GTID) и что целевой регион поддерживает несколько зон доступности. Изоляция отказов между зонами защищает от сбоев в одной зоне доступности посредством автоматического переключения на резервный экземпляр, обеспечивая время восстановления (RTO) от 60 до 120 секунд и отсутствие потери данных для подтвержденных транзакций.
Включите функцию автоматического увеличения емкости хранилища, чтобы автоматически увеличивать емкость, когда свободное пространство падает ниже порогового значения. Отслеживайте тенденции использования хранилища и помните, что каждое увеличение является постоянным. Запрещает серверу вводить режим только для чтения, если емкость хранилища истекает и автоматизирует управление емкостью без ручных действий.
Создайте реплики для чтения в одном регионе или между регионами для разгрузки операций чтения и отчетной нагрузки на основной.

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

Реплики между различными регионами обеспечивают операции чтения с низкой задержкой для географически распределенных пользователей.
Создайте оповещения Azure Monitor на HA IO Status и HA SQL Status для обнаружения сбоев синхронизации в резервном режиме. Задайте пороговые значения задержки репликации , которые соответствуют требованиям RPO рабочей нагрузки.

Настройте оповещения ЦП и памяти на устойчивых уровнях использования и отслеживайте процент хранения перед активацией автоматического увеличения. Маршрутизация критически важных оповещений надежности через группы действий Azure Monitor.

Включите оповещения о работоспособности ресурсов для событий доступности, инициированных платформой, и используйте рабочие книги Azure Monitor для визуализации тенденций.
Раннее обнаружение проблем синхронизации в режиме ожидания предотвращает непредвиденные отказы процессу переключения. Упреждающие оповещения о насыщенности ресурсов поддерживают действия масштабирования, прежде чем насыщенность ресурсов влияет на доступность.
Добавьте явные первичные ключи ко всем таблицам InnoDB, включая таблицы, перенесенные из старых версий MySQL. Включите сгенерированный параметр невидимого первичного ключа (GIPK). На серверах с поддержкой высокой доступности избегайте многоэтапных инструкций, чтобы предотвратить 102586 ошибок MySQL.

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

Улучшение производительности репликации по репликам чтения снижает задержку, вызванную поиском позиций по строкам.
Настройте автоматические повторные попытки подключения с использованием экспоненциальной задержки для перебоев из-за отказа. Настройте логику повторных попыток для задержек распространения DNS после отказа системы высокой доступности и протестируйте принудительный отказ для проверки восстановления. Регистрация событий повторных попыток для отслеживания частотности временных сбоев. Автоматическая повторная попытка обрабатывает кратковременные разрывы подключений во время отработки отказа, обслуживания и масштабирования без воздействия на пользователя. Этот подход поддерживает обслуживание с почти нулевым временем простоя путем аккуратной обработки коротких перезапусков сервера во время применения патчей.
Включите хранилище гео-избыточного резервного копирования при создании сервера для репликации данных в парный регион Azure. Используйте универсальное геовосстановление для несопряжённых регионов. Убедитесь, что сервер не использует пользовательский порт, так как они не поддерживают геовосстановление.

Задокументируйте этапы геовосстановления и проверьте процесс для измерения фактического RTO. Учитывайте время до одного часа для RPO и планируйте задачи после восстановления, включая повторную активацию высокой доступности, настройку правил брандмауэра и обновления DNS.
Репликация резервного копирования между регионами обеспечивает защиту от сбоев всего региона и обеспечивает устойчивость данных резервного копирования 99.99999999999999% (16 девять).

Глобальное восстановление на уровне географии поддерживает восстановление в парных или непарных регионах, когда основной регион становится недоступным.
Настройте хранение резервных копий в диапазоне от 1 до 35 дней на основе требований точки восстановления. Уменьшите частоту резервного копирования до 6-часовых интервалов для больших баз данных, чтобы ускорить восстановление до точки во времени. Используйте резервные копии по запросу перед основными изменениями схемы или операциями обслуживания. Оптимизированное хранение сопоставляет покрытие резервных копий с требованиями к восстановлению, а настраиваемая частота резервного копирования сокращает время восстановления для больших баз данных, минимизируя воспроизведение журнала транзакций.

Безопасность

Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.

Принципы проектирования Security обеспечивают высокоуровневую стратегию проектирования для достижения этих целей, применяя подходы к техническому проектированию Azure Database for MySQL.

Контрольный список разработки рабочей нагрузки

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

  • Просмотрите базовые показатели безопасности для Azure Database for MySQL: Базовые показатели безопасности сопоставляют возможности гибкого сервера MySQL с контрольными показателями облачной безопасности Майкрософт по сетевой безопасности, управлению идентификацией, привилегированному доступу, защите данных, журналированию и резервному копированию. Просмотрите этот базовый план, чтобы понять доступные средства управления безопасностью и подходы к реализации.

    Используйте встроенные определения Azure Policy для применения элементов управления ключами, включая использование частной конечной точки, принудительное применение протокола SSL, шифрование ключей, управляемое клиентом, и проверку подлинности Microsoft Entra. Примените эти политики для проверки соответствия конфигурации в экземплярах сервера.

  • Сегментирование доступа с помощью управления доступом на основе ролей (RBAC): Настройте многоуровневый контроль доступа на уровне управления и плоскостей данных, чтобы обеспечить минимальный доступ к привилегиям и ограничить доступ администратора.

    • Используйте Azure RBAC для управления операциями в области управления и собственными привилегиями MySQL для управления операциями в плоскости данных. Гибкий сервер не поддерживает Azure RBAC для доступа к каналу данных.

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

    • Ограничьте конфигурацию администратора Microsoft Entra одной на экземпляр сервера и зарезервируйте учетную запись администратора сервера только для аварийного доступа. Используйте Customer Lockbox для управления доступом службы поддержки Microsoft во время обращений в службу поддержки.

  • Централизируйте управление удостоверениями с помощью Microsoft Entra ID: Microsoft Entra-идентификация полностью исключает потребность в доступе на основе паролей. Настройте приложения для проверки подлинности с использованием краткосрочных токенов через управляемые удостоверения или служебные принципалы. Назначьте пользовательское управляемое удостоверение и определите администратора Microsoft Entra для каждого экземпляра сервера. Каждый сервер поддерживает только одного администратора.

    Используйте объединенную проверку подлинности MySQL и Microsoft Entra для поддержки постепенной миграции с пароля на доступ на основе маркеров. Запланируйте график перехода на режим только для Microsoft Entra после миграции всех подключений, так как аутентификация только MySQL не имеет централизованного управления идентификацией.

  • Ограничить доступ к сети с помощью элементов управления подключениями: Используйте интеграцию виртуальной сети, чтобы внедрить сервер в управляемую клиентом виртуальную сеть с частным IP-адресом в делегированной подсети, что устраняет уязвимость к общедоступному Интернету. Настройте необходимое делегирование подсети перед развертыванием и примените правила группы безопасности сети (NSG) для управления потоком трафика.

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

  • Шифрование неактивных и передаваемых данных: Защита хранимых данных и сетевого трафика с помощью механизмов шифрования как для неактивных, так и для транзитных сценариев.

    • Шифрование неактивных данных использует ключи, управляемые платформой, по умолчанию для всех сохраненных данных, резервных копий и журналов транзакций. Используйте управляемые клиентом ключи с помощью Azure Key Vault или Azure Key Vault управляемого устройства HSM для дополнительного контроля над жизненным циклом ключа.

    • Применение протокола TLS 1.2 по умолчанию и использование TLS 1.3 в MySQL 8.0 и более поздних версий для более надежной безопасности. Задайте параметр для управления принудительным применением TLS. Наборы шифров, совместимые с федеральными стандартами обработки информации (FIPS), применяются автоматически.

    • Доверять только корневым центрам сертификации (ЦС) в конфигурациях клиентов, чтобы избежать сбоев подключения. Azure управляет сертификатами сервера с помощью корневого ЦС DigiCert Global Root G2 и корневого ЦС Microsoft RSA Root CA 2017. Промежуточные обновления центров сертификации обычно выполняются без объявления.

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

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

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

    • Используйте проверку удостоверения личности с помощью удостоверений управляемых Microsoft Entra ID, чтобы заменить статические пароли краткосрочными токенами. Задайте строки подключения, используя проверку подлинности Microsoft Entra, чтобы избежать использования встроенных паролей.

    • Сохраните оставшиеся пароли собственной проверки подлинности MySQL, включая пароль администратора сервера от подготовки, в Key Vault и примените ограниченный доступ.

    • Внимательно отслеживайте Key Vault доступ при использовании шифрования ключей, управляемых клиентом, так как потеря доступа делает сервер недоступным в течение 10 минут. Создайте оповещения для Key Vault сбоев доступа или событий удаления ключей и сохраняйте резервные копии ключей с помощью документированных процедур восстановления.

  • Включите ведение журнала мониторинга безопасности и аудита: Используйте журналы аудита для отслеживания событий подключения, операций администрирования, языка определения данных (DDL) и инструкций языка обработки данных (DML) и доступа к таблицам. Включите параметр сервера и выберите типы событий в зависимости от требований безопасности.

    Маршрутизация журналов аудита в Azure Monitor с помощью параметров диагностики для назначений Log Analytics, Azure Event Hubs или Azure Storage. Используйте встроенную книгу аудита для визуализации событий безопасности и создайте оповещения для необычных шаблонов подключений и неудачных попыток проверки подлинности.

Рекомендации по настройке

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

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

Поддерживает требования соответствия требованиям для разделения обязанностей и минимального доступа к привилегиям между средами базы данных.
Настройте аутентификацию только с Microsoft Entra с управляемым удостоверением, назначенным пользователю, и назначенным администратором Microsoft Entra для подготовки пользователей. Перед отключением проверки подлинности MySQL перенесите существующие подключения на аутентификацию на основе токенов и обновите клиентские библиотеки. Устраняет уязвимости проверки подлинности на основе паролей и затраты на управление учетными данными. Централизует управление удостоверениями с помощью политик условного доступа Microsoft Entra ID и многофакторной аутентификации (MFA).

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

Выберите режим подключения перед развертыванием сервера, так как этот параметр является постоянным. Убедитесь, что делегированная подсеть имеет достаточное адресное пространство IP для сервера и потенциальных реплик, а затем настройте делегирование.
Исключает подключение к общедоступному Интернету для трафика базы данных и сохраняет данные в пределах магистральной инфраструктуры Azure и сетевых границ, управляемых клиентом. Соответствует требованиям по частному подключению.
Установите значение TLS 1.3 на серверах MySQL 8.0 и включите для предотвращения незашифрованных подключений. Убедитесь, что все клиентские приложения и драйверы поддерживают TLS 1.3 перед применением изменений в рабочей среде. Предоставляет самый надежный протокол шифрования, который обеспечивает улучшенную производительность по протоколу TLS 1.2. Запрещает незашифрованные подключения, которые предоставляют данные для перехвата и соответствуют отраслевым стандартам защиты от передачи данных.
Создайте Key Vault или управляемый HSM в том же регионе, что и сервер, с включенными функциями мягкого удаления и защитой от очистки. Задайте для хранения значение 90 дней и создайте асимметричный ключ RSA 2048, 3072 или 4096. Просмотрите требования к клиентскому ключу для проверки полноты необходимых условий.

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

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

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

Отслеживайте изменения параметров с помощью журнала действий Azure и используйте Azure Policy для применения необходимых конфигураций на экземплярах сервера.
Сокращает область атак, отключая ненужные функции, предотвращая смещение конфигурации, которая приводит к уязвимостям и устанавливает согласованную защиту с помощью конфигураций, применяемых политикой.
Сохраните пароль администратора сервера в секрете Key Vault и используйте Azure RBAC, чтобы ограничить доступ только к сценариям аварийного реагирования. Включите ведение журнала аудита Key Vault для отслеживания всех доступа к сохраненным учетным данным.

Перенос подключений приложений на аутентификацию на основе токенов Microsoft Entra ID с использованием управляемых удостоверений. Удалите жестко закодированные пароли из кода приложения, файлов конфигурации и переменных среды. Аудит конвейеров непрерывной интеграции и непрерывной доставки (CI/CD) для внедренных ссылок на учетные данные.
Централизует хранение учетных данных в защищенном, проходящего аудит хранилище вместо распределённых конфигурационных файлов и снижает риск утечки учетных данных через репозитории исходного кода или артефакты развертывания.

Создает контрольный след для аудита всех процессов извлечения учетных данных базы данных.
Задайте и выберите типы событий, включая отслеживание проверки подлинности, доступ к данным и изменения схемы. Настройте маршрут MySqlAuditLogs к Log Analytics через параметры диагностики.

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

Оптимизация затрат

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

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

Контрольный список разработки рабочей нагрузки

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

  • Разработайте модель затрат на рабочую нагрузку базы данных: Затраты гибкого сервера Azure Database for MySQL охватывают несколько категорий выставления счетов, включая вычисления, хранилище, операции ввода-вывода и репликацию. Создайте модель затрат, которая учитывает все эти области и их взаимозависимости.

    • Сравните цены на оплату по мере использования, которые почасово взимается за вычислительные ресурсы и за гигабайт (ГБ) для хранения с зарезервированными экземплярами, которые предлагают скидки на более длительные сроки. Учет затрат на вычисления, которые значительно различаются на разных уровнях. Наиболее экономичный вариант — это облачные вычисления с возможностью временного увеличения производительности, а оптимизированный для памяти вариант — самый дорогой.

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

    • Ожидается, что HA удвоит затраты на вычисления, так как он развертывает резервную реплику с выделенным хранилищем и вычислениями. При чтении реплики взимается независимая плата за те же тарифы, что и сервер-источник.

    • Вычислите затраты на хранилище резервных копий. Хранилище резервных копий предоставляется бесплатно до 100% выделенного объема хранилища сервера, но стоимость геоизбыточного резервного копирования вдвое выше по сравнению с локально избыточным. Учтите дополнительные затраты на функции, которые варьируются в зависимости от уровня и конфигурации HA (высокой доступности).

  • Метрики затрат базы данных и тенденции расходов с использованием Azure Monitor: Используйте метрики Azure Monitor для получения видимости использования вычислительных ресурсов, потребления хранения, использования операций ввода-вывода в секунду и хранилища резервных копий, которые напрямую связаны с затратами на обслуживание.

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

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

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

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

    • Три уровня вычислений обеспечивают различные компромиссы по производительности затрат. Используйте возможность бустера для временных рабочих нагрузок, общего назначения для сбалансированных рабочих нагрузок и оптимизацию по памяти для нагрузок с большим объемом памяти. Выберите уровень, соответствующий шаблону рабочей нагрузки, чтобы избежать перерасхода.

    • Задайте для хранения резервных копий минимальный период, соответствующий требованиям восстановления. Этот параметр сводит к минимуму затраты на хранилище резервных копий за пределы бесплатного пособия. Используйте локально избыточное хранилище резервных копий для рабочих нагрузок, которым не требуется гео-катастрофическое восстановление. Географически резервируемое хранилище удваивает затраты.

    • Выделяйте хранилище консервативно, так как его объём может только увеличиваться. Включите автоматическое увеличение в качестве подстраховки, а не изначальное завышение ресурсов.

    • Сравните цены на создание оборудования в разных регионах. Один и тот же уровень может иметь разные затраты в зависимости от того, какие поколения доступны в каждом регионе.

  • Установите контроль расходов для ресурсов базы данных: Используйте Azure Policy, RBAC и управление бюджетом, чтобы внедрить механизмы контроля, которые предотвращают дорогостоящие конфигурации баз данных и несанкционированные изменения ресурсов.

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

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

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

    • Выберите уровень "Общего назначения" или "Оптимизированная для памяти" для производства, исходя из требований к производительности рабочей нагрузки, и оцените, оправданы ли удвоенные затраты на вычисления для обеспечения высокой доступности с избыточностью между зонами. Настраивайте размер реплик чтения в соответствии с фактической нагрузкой на чтение, а не для зеркального копирования спецификаций сервера-источника.

    • Используйте бесплатный уровень для проверки концепции и начальной разработки. Уменьшите срок хранения резервных копий до 1–7 дней и выберите локально избыточное хранилище резервных копий для непроизводственных сред.

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

  • Консолидации ресурсов базы данных для повышения экономичности: Azure Database for MySQL гибкий сервер поддерживает размещение нескольких баз данных на одном экземпляре сервера, который распределяет фиксированные затраты на инфраструктуру между рабочими нагрузками. Оцените кандидатов на консолидацию на основе совместимых требований к производительности, требований изоляции безопасности и приемлемого риска шумного соседа для улучшения использования ресурсов.

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

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

Рекомендации по настройке

Recommendation Преимущества
Создайте оповещения о бюджете с несколькими порогами в Microsoft Cost Management для групп ресурсов базы данных и включите оповещения о прогнозе, чтобы выявлять превышения расходов до их возникновения.

Настройте обнаружение аномалий для выявления непредвиденных пиков затрат из-за авторасширения хранилища или изменений потребления IOPS.
Обнаруживает превышение затрат и непредвиденные шаблоны расходов, прежде чем они влияют на бюджет. Предоставляет раннее предупреждение о скрытых увеличениях затрат и масштабировании IOPS.
Правильно настройте уровень вычислений на основе фактических моделей использования рабочей нагрузки. Оцените потребление кредитов ЦП на серверах с переменной производительностью, чтобы определить, требуется ли обновить нагрузку на сервер до General Purpose.

Оцените, могут ли серверы общего назначения с постоянно высокой нагрузкой на память воспользоваться уровнем, оптимизированным для работы с памятью. Используйте масштабирование вычислений для настройки виртуальных ядер при изменении спроса на рабочую нагрузку. Для события масштабирования требуется перезапуск сервера, который занимает 60–120 секунд.
Устраняет избыточное использование вычислительных ресурсов, превышающих фактические требования к рабочей нагрузке, и обеспечивает соответствие затрат на вычислительные ресурсы требованиям рабочей нагрузки, выбирая наиболее экономичный ценовой уровень.
Приобретение зарезервированных экземпляров для серверов с прогнозируемым устойчивым использованием вычислительных ресурсов. Выберите 1-летние или 3-летние резервирования. Более длинные обязательства дают большую экономию.

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

Примените политики тегов на серверах баз данных, чтобы убедиться, что теги распределения затрат существуют для отслеживания финансовых ресурсов. Ограничить регионы развертывания, чтобы предотвратить развертывание между регионами, которые повышают затраты на передачу данных.
Предотвращает случайное развертывание дорогостоящих конфигураций через автоматическое применение политик и обеспечивает согласованное отслеживание затрат за счёт обязательной маркировки ресурсов.
Выберите экземпляры серии B с возможностью увеличения производительности для нагрузок разработки и тестирования, которые имеют переменный спрос на ЦП. Уровень "Взрывообразный" не поддерживает отказоустойчивость или реплики чтения, что соответствует допустимому уровню непроизводственного использования для кратковременных сбоев.

Начните с самой малой начальной конфигурации Burstable SKU и увеличивайте масштаб только в том случае, если для тестирования рабочей нагрузки потребуется больше ресурсов.
Уменьшает затраты на вычисление, непроизводственные, по сравнению с уровнем общего назначения. Подбирает вычислительную мощность в соответствии с периодическими шаблонами нагрузки для разработки и тестирования.
Используйте возможность остановки и запуска , чтобы остановить непроизводственные серверы за пределами рабочих часов или между циклами тестирования. Учитывайте 30-дневный максимальный период остановки, так как Azure автоматически перезапускает остановленные серверы после этого срока.

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

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

Операционное превосходство

Операционное совершенство в основном сосредоточено на процедурах, касающихся практик разработки , наблюдаемости и управления релизами.

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

Контрольный список разработки рабочей нагрузки

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

  • Определите инфраструктуру сервера с помощью шаблонов кода: Используйте инфраструктуру как код (IaC) через шаблоны Azure Resource Manager (шаблоны ARM), Bicep, Terraform или Azure CLI для декларативного гибкого предоставления сервера.

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

    • Параметризовать уровень вычислений, SKU, размер хранилища, IOPS и время хранения резервных копий для вариантов конкретной среды.

    • Разверните сетевые ресурсы перед созданием сервера при использовании интеграции виртуальной сети, затем настройте параметры диагностики и RBAC на последующих этапах.

    • Настройте обнаружение смещения, чтобы определить параметры, измененные вручную через портал, а не через рабочие процессы IaC.

  • Автоматизация развертываний схемы базы данных в конвейерах: Интеграция изменений схемы базы данных в конвейеры развертывания с помощью скриптов миграции с возможностями проверки и отката. Используйте такие средства, как Flyway, Liquibase или пользовательские скрипты для изменений схемы управления версиями и применяйте их с помощью этапов конвейера CI/CD.

    Включите проверку предварительной подготовки для проверки несовместимых операций GTID при выборе серверов с поддержкой высокого уровня доступности. Серверы с поддержкой высокой доступности не поддерживают такие инструкции. Тестирование изменений схемы на тестовых серверах с использованием уровня "Burstable" чтобы снизить затраты и проверить совместимость.

  • Настройка мониторинга и ведения журнала: настройка интеграции Azure Monitor для сбора метрик, журналов ресурсов, параметров диагностики и шаблонов книг для оперативной видимости. Собирать метрики платформы для ЦП, памяти, хранилища, операций ввода-вывода, подключений и задержки репликации с частотой в одну минуту и хранением данных в течение 30 дней.

    Сбалансируйте уровень детализации журналов с воздействием на производительность, так как подробное ведение журнала влияет на пропускную способность сервера. Настройте функцию журналов сервера для краткосрочного файлового доступа вместе с диагностическими параметрами для долгосрочного анализа данных. Планирование маршрутизации журналов в Центры событий для интеграции сведений о безопасности и управлении событиями (SIEM) или Azure Storage для архивации соответствия требованиям.

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

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

    • Перепланируйте события обслуживания, когда они конфликтуют с критическими бизнес-периодами. Поддержку этого функционала обеспечивают только уровни общего назначения и оптимизированные для памяти. Настройте Azure Service Health оповещения для получения уведомлений о событиях обслуживания и инцидентах службы.

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

  • Установите безопасные методики развертывания для обновлений сервера: Координация операций обслуживания, стратегий исправления и изменения параметров для минимизации сбоев при сохранении безопасности и функциональности. Сбалансируйте возможности почти нулевого простоя с правильным тестированием и планированием с учетом рабочей нагрузки.

    • Настройте настраиваемое окно обслуживания для рабочих нагрузок, чтобы контролировать время обслуживания. Чтобы свести к минимуму нарушения, служба управляет проведением технического обслуживания, используя патчинг с почти нулевым временем простоя. Используйте политики обслуживания раннего доступа для непроизводственных серверов, чтобы проверить совместимость исправлений перед развертыванием рабочей среды.

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

    • Различает динамические параметры, которые немедленно применяются к новым подключениям от статических параметров, требующих перезапуска сервера. Учет того, как статический параметр изменяет перезапуск основных и резервных серверов при включении высокой доступности. Проверка изменений параметров в непроизводственных средах.

  • Автоматизируйте задачи управления и мониторинга: Используйте встроенные функции автоматизации и интеграцию с Azure Monitor для уменьшения операционных затрат. Настройте автоматические резервные копии с настраиваемыми интервалами и периодами хранения для обслуживания RPOS. Периодически проверяйте рекомендации Azure Advisor по оптимизации производительности, надежности и стоимости.

    Автоматизация управления конфигурацией с помощью скриптов Azure CLI или REST API для применения согласованных конфигураций параметров сервера между парками серверов. Настройте автоматические проверки соответствия для сравнения текущих параметров с базовыми конфигурациями и обнаружения смещения. Планирование резервных копий по запросу с помощью автоматизации до запланированных операций обслуживания или изменений.

Рекомендации по настройке

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

Параметризируйте уровень вычислений, имя SKU, размер хранилища, IOPS и срок хранения резервных копий для развертывания, специфичного для среды.

Используйте модули шаблонов Bicep или ARM из кратких руководств по гибкому серверу MySQL в качестве отправных точек. Расширьте эти шаблоны, чтобы включить параметры диагностики, правила брандмауэра и назначения RBAC.
Предотвращает дорогостоящую повторную разработку сервера благодаря сохранению всех неизменяемых параметров в шаблоне первоначального развертывания. Параметризация среды поддерживает согласованную подготовку в среде разработки, промежуточной и производственной.
Включите функцию журналов сервера для записи журналов медленных запросов и журналов аудита в качестве загружаемых файлов для краткосрочного рабочего доступа. Задайте для параметра сервера значение, чтобы можно было перечислить и скачать записи журнала с помощью портала, ИНТЕРФЕЙСА командной строки или REST API.

Настройте параметры диагностики вместе с журналами сервера для маршрутизации MySqlSlowLogs и MySqlAuditLogs в рабочую область Log Analytics для долгосрочного хранения и анализа с использованием языка запросов Kusto (KQL).
Журналы сервера обеспечивают немедленный доступ на основе файлов к медленным запросам и данным журнала аудита для быстрого устранения неполадок, не требуя Log Analytics запросов.

Объединение журналов сервера с параметрами диагностики обеспечивает как краткосрочный рабочий доступ, так и долгосрочное хранение аналитики.
Включите в параметрах сервера и выберите такие типы событий, как , , и , которые соответствуют требованиям соответствия.

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

Создайте параметр диагностики для отправки MySqlAuditLogs в рабочую область Log Analytics. Используйте книгу аудита для визуализации событий подключения, действий администратора и сводок доступа к таблицам.
Предоставляет отслеживание действий на уровне базы данных для аудита соответствия требованиям, которые регистрируют попытки подключения, изменения схемы и изменения привилегий. Книга аудита предоставляет готовые визуализированные решения для анализа событий аудита, не требуя пользовательских запросов KQL.
Перед миграцией схемы, изменениями параметров или обновлениями версий требуется резервное копирование по требованию, чтобы создать надёжную точку отката.

Отслеживайте использование резервных копий с ограничением на 50 резервных копий на сервер и включите очистку устаревших резервных копий в операционные подпрограммы.

Включите проверку восстановления в контрольный список развертывания, чтобы команды могли убедиться, что резервная копия фактически работает, прежде чем продолжить изменение.
Предоставляет явную точку восстановления для каждого изменения, что снижает потенциальную потерю данных при необходимости отката. Этот подход интегрирует дисциплину резервного копирования в рабочий процесс управления изменениями вместо того чтобы полагаться только на автоматические ежедневные моментальные снимки.
Добавьте блокировку управления в рабочие ресурсы гибкого сервера MySQL, чтобы предотвратить случайное удаление с помощью портала, интерфейса командной строки или автоматизации. Для автоматического применения блокировок во время развертывания добавляйте ресурсы блокировки в шаблоны IaC.

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

Управляющие блокировки обеспечивают уровень безопасности, не влияя на обычные рабочие процессы, такие как изменения конфигурации или перезапуски.
Выберите политику пользовательского управляемого обслуживания и укажите предпочтительный день и время начала в формате UTC, которое соответствует периодам наименьшей рабочей нагрузки. Окно обслуживания продлится 60 минут. Назначьте сервера на обслуживание в пакет 1 или пакет 2, чтобы разнести обновления во времени между тестовой и промышленной средой.

Отслеживайте предстоящее обслуживание через раздел статуса технического обслуживания на портале и перепланируйте мероприятия, если возникнут конфликты с запланированными бизнес-событиями.
Выравнивает плановое обслуживание с минимальными периодами трафика, чтобы свести к минимуму нарушения рабочей нагрузки во время исправления. Распределение пакетов между средами позволяет обнаружить проблемы на раннем этапе, до обновления в рабочей среде.
Автоматизация конфигурации параметров сервера в разных парках серверов для применения согласованных базовых показателей для медленного ведения журнала запросов, ведения журнала аудита и ограничений подключения.

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

Интегрируйте валидацию параметров в конвейеры CI/CD, чтобы развертывания инфраструктуры могли завершаться только после проверки соответствия критически важных параметров сервера ожидаемой конфигурации.
Согласованные базовые показатели параметров в средах предотвращают инциденты, связанные с конфигурацией, вызванные незапланированными изменениями портала.

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

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

Эффективность производительности

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

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

Контрольный список разработки рабочей нагрузки

Начните стратегию проектирования на основе контрольного списка проектирования для эффективности производительности. Определите базовые показатели, основанные на ключевых показателях производительности для Azure Database for MySQL.

  • Планирование емкости: Ваши решения по вычислительным ресурсам, хранению и IOPS (операциям ввода-вывода в секунду) определяют максимальную производительность. Запустите планирование емкости для оценки потребностей виртуальных ядер и памяти на основе сложности запросов, одновременных подключений и типа рабочей нагрузки. Учитывайте распределение памяти в буферном пуле InnoDB, которое зависит от размера вычислительных ресурсов и определяет эффективность кэширования. Кроме того, учитывайте пределы, зависящие от объёма доступной памяти.

    Оценка роста хранилища. Вы можете масштабировать только выделение, а не уменьшить его. Вычисляйте требования к операциям ввода-вывода в секунду на основе соотношения операций чтения и записи, объема транзакций и пиковых требований. Используйте метрики "Процент операций ввода-вывода в хранилище " и "Число операций ввода-вывода в хранилище ", чтобы определить базовые шаблоны использования.

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

  • Выберите уровни вычислительных ресурсов и номера SKU на основе требований к производительности: В Azure Database for MySQL предлагается три уровня вычислительных ресурсов, которые имеют различные особенности производительности и функций. Соответствие выбора уровня требованиям к производительности рабочей нагрузки, требованиям к масштабируемости и зависимостям компонентов.

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

    • Выберите оптимизированный для памяти уровень, если рабочие нагрузки требуют более высоких соотношений памяти к vCore для сценариев, зависящих от кэша, и сценариев с высокой степенью параллелизма. Этот уровень обеспечивает наименьшую задержку и самые высокие запросы в секунду (QPS). Используйте этот уровень для рабочих нагрузок с интенсивным объемом памяти, имеющих большие рабочие наборы или требования с высоким параллелизмом.

    • Ограничьте уровень "Ускорение" средам разработки и тестирования, так как модель кредита ЦП регулируется при устойчивой нагрузке. Этот уровень не поддерживает HA, реплики чтения или ускоренные журналы, что соответствует требованиям непроизводственной среды.

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

  • Определите стратегию масштабирования: Планирование изменений уровня вычислений для периодов низкого трафика. Для этих изменений требуется перезапуск сервера, который занимает 60–120 секунд, что приводит к краткому нарушению рабочей нагрузки. Подключите увеличение хранилища онлайн, но помните, что уменьшить его выделение невозможно. Используйте автомасштабирование операций ввода-вывода для автоматического масштабирования операций ввода-вывода в зависимости от спроса без вмешательства вручную.

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

  • Мониторинг метрик производительности базы данных: Отслеживайте процент ЦП, процент памяти и процент операций ввода-вывода в хранилище , чтобы определить насыщенность ресурсов, прежде чем он влияет на производительность запросов. Отслеживайте метрики буферного пула InnoDB, например , и коэффициенты запросов чтения для измерения эффективности кэша и давления памяти.

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

    Используйте метрики Azure Monitor, журналы медленных запросов и рабочую тетрадь Query Performance Insight для анализа на уровне запросов. Используйте Log Analytics для анализа исторических тенденций с помощью запросов Kusto.

  • Выполните тестирование производительности: Создайте рабочие нагрузки нагрузочного теста, которые отражают рабочие шаблоны запросов, включая коэффициенты чтения и записи, сложности транзакций и уровни параллелизма. Включите имитацию пиковых периодов, чтобы проверить поведение IOPS автоматического масштабирования и запас вычислительных ресурсов. Используйте объемы данных, представляющие рабочие среды, в тестах, поскольку производительность буферного пула InnoDB и планы запросов зависят от размера данных.

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

  • Оптимизация производительности базы данных с помощью конфигурации и функций: Настройка параметров ядра MySQL и функций Azure в соответствии с характеристиками рабочей нагрузки для максимизации производительности запросов, уменьшения конфликтов ресурсов и повышения общей эффективности базы данных.

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

    • Настройте пул подключений на уровне прокси-сервера или приложения, чтобы уменьшить затраты на создание и отключение подключения при высокой параллелизме. Чтобы уменьшить емкость для активных запросов, отслеживайте и закрывайте неактивные подключения, использующие ресурсы потока сервера.

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

Рекомендации по настройке

Recommendation Преимущества
Включите автоматическое масштабирование IOPS для переменных или непредсказуемых характеристик ввода-вывода, чтобы динамически изменять масштабы в соответствии с потребностью. Используйте предварительно настроенные IOPS для рабочих нагрузок с постоянной и предсказуемой пропускной способностью.

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

Отслеживайте процент операций ввода-вывода в хранилище и количество операций ввода-вывода в хранилище , чтобы убедиться, что модель соответствует потребностям рабочей нагрузки. Устойчивые значения около 100% указывают на регулирование, требующее изменения модели или обновления уровня.
Автоматическое масштабирование IOPS предотвращает ограничение скорости хранилища во время пиков рабочей нагрузки, динамически регулируясь под спрос. Предварительно подготовленные операции ввода-вывода обеспечивают прогнозируемую производительность для стабильных рабочих нагрузок, имеющих фиксированные требования к пропускной способности.
Выгрузите запросы на чтение для чтения реплик в свободную емкость на основном сервере для операций записи. Создайте реплики в том же регионе или в разных регионах, исходя из требований к задержке сигнала и потребностей в восстановлении.

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

Отслеживание задержки репликации для обнаружения задержек и задания оповещений о задержке, превышающей допустимые пороговые значения. Убедитесь, что все исходные таблицы имеют первичные ключи, так как отсутствующие ключи увеличивают задержку репликации.
Разгрузка запросов чтения с сервера-источника освобождает вычислительные ресурсы и емкость ввода-вывода для операций записи. Межрегионные реплики приближают данные к пользователям, что снижает задержку чтения в распределенных приложениях.
Запланируйте масштабирование вычислительных уровней во время низких периодов трафика, чтобы свести к минимуму влияние необходимого перезапуска. Включите автоматическое увеличение хранилища, чтобы запретить серверу вводить режим только для чтения при истечении емкости.

Перед масштабированием исходного сервера обновите вычислительные ресурсы реплики до равного или превышения исходной конфигурации. Проверьте, что приложения автоматически подключают и возобновляют операции во время 60–120-секундного перезапуска.
Запланированное масштабирование снижает влияние необходимых перезапусков сервера на активные рабочие нагрузки. Автоматическое увеличение хранилища запрещает серверу вводить режим только для чтения, который останавливает операции записи.
Установите значение, настройте от 10 секунд по умолчанию, чтобы соответствовать вашему базовому уровню, и включите полное сканирование таблиц. Отправьте MySqlSlowLogs в рабочую область Log Analytics для анализа запросов Kusto. Определяет конкретные запросы, которые приводят к снижению производительности с помощью анализа времени выполнения и анализа шаблонов сканирования. Исторические данные тренда обнаруживают постепенную регрессию, прежде чем они влияют на пользователей.
Создание оповещений о процентах использования центрального процессора, процентах использования памяти и процентах ввода-вывода хранилища, когда они приближаются к насыщению. Оповещение о заполнении хранилища для обнаружения ограничений емкости перед активацией автоматического увеличения объема, а также мониторинг задержки репликации на резервных репликах.

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

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

Сохраняйте настройки по умолчанию для операций временной сортировки с SSD-скоростью во время онлайн-процессов.

Включите соответствующую настройку для баз данных, у которых таблицы находятся близко к пределу в 8 терабайт (ТБ) системного пространства таблиц. Измените значение, если это указывает на чрезмерное количество проходов слияния во время сортировки.
Выделение доступной памяти для кэширования буферного пула InnoDB максимизирует эффективность кэша страниц. Оптимальный размер журнала транзакций сбалансирует пропускную способность записи и время аварийного восстановления.

политики Azure

Azure предоставляет широкий набор встроенных политик, связанных с Azure Database for MySQL и его зависимостями. Некоторые из предыдущих рекомендаций можно проверить с помощью Azure Policy. Например, можно проверить, можно ли:

  • На гибких серверах включена аутентификация Microsoft Entra.
  • Microsoft Entra аутентификация настроена для централизованного управления идентификацией.
  • Ключи, управляемые клиентом, используются для шифрования неактивных данных.

Для комплексного управления ознакомьтесь со встроенными определениями Azure Policy для Azure Database for MySQL и других политик, которые могут повлиять на безопасность базы данных.

рекомендации Azure Advisor

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

Дополнительные сведения см. в разделе Azure Advisor.

Пример архитектуры

Базовая архитектура, демонстрирующая основные рекомендации: WordPress на Azure App Service.