Службы баз данных MySQL и PostgreSQL в Azure

Завершено

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

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

Здесь вы познакомитесь с Базой данных Azure для MySQL, Базой данных Azure для MariaDB и Базой данных Azure для PostgreSQL, а также с вариантами развертывания, которые можно использовать с ними. Вы также узнаете о преимуществах использования баз данных с открытым исходным кодом на виртуальных машинах или контейнерах в Azure и о подходе "инфраструктура как услуга" (IaaS).

Доступность

Уровень доступности, гарантированный соглашениями об уровне обслуживания Azure (SLA), зависит от конкретных деталей реализации, но он всегда высок. Например, для Базы данных Azure для PostgreSQL корпорация Майкрософт гарантирует доступность в 99,99 % без дополнительной платы. Для обеспечения еще более высокой доступности можно использовать гибкий сервер.

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

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

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

Масштабируемость

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

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

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

IaaS и PaaS

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

  • Инфраструктура как услуга (IaaS). Если выбран подход IaaS, Azure выполняет роль физической инфраструктуры. Вы создаете виртуальные машины и виртуальные сети, в которые они объединены, а затем устанавливаете необходимое программное обеспечение и данные. Использование виртуальной машины аналогично использованию физического сервера. Вы обслуживаете операционную систему и программное обеспечение, но вам не нужно беспокоиться о центре обработки данных, контроле параметров окружающей среды или подключении к Интернету.
  • Платформа как услуга (PaaS). В случае выбора подхода PaaS Azure играет роль физической инфраструктуры, необходимых виртуальных серверов и программного обеспечения баз данных. Вам не нужно выполнять задачи по настройке или обслуживанию этих компонентов. Например, Azure автоматически применяет пакеты обновления. Вы можете сосредоточиться на администрировании базы данных. Предложения PaaS для поддержания баз данных с открытым исходным кодом в Azure включают в себя Базу данных Azure для MySQL, Базу данных Azure для MariaDB и Базу данных Azure для PostgreSQL.

Что из себя представляют службы Базы данных Azure для MySQL, MariaDB и PostgreSQL?

Если у вас есть локальная система баз данных, основанная на MySQL, MariaDB или PostgreSQL, и вы хотите переместить эту базу данных в облако, рассмотрите возможность использования Базы данных Azure для MySQL, Базы данных Azure для MariaDB или Базы данных Azure для PostgreSQL. Эти службы также можно использовать для реализации новых баз данных. Например, если разработчики и администраторы баз данных имеют опыт работы с этими серверами баз данных и нежелательно, чтобы они тратили время на изучение новой системы, применение Базы данных Azure для MySQL, Базы данных Azure для MariaDB или Базы данных Azure для PostgreSQL позволяет сотрудникам использовать имеющиеся знания. База данных Azure для MySQL, База данных Azure для MariaDB и База данных Azure для PostgreSQL являются системами PaaS, поэтому вам не нужно будет беспокоиться о проектировании или реализации виртуальных серверов или сетей.

Что такое база данных Azure для MySQL

База данных Azure для MySQL — это PaaS-реализация MySQL в облаке Azure на основе MySQL Community. В настоящее время, в зависимости от ваших потребностей, вы можете выбрать поддержку для MySQL версий 5.6, 5.7 и 8.0. Поддержка дополнительных версий будет предоставляться по мере развития MySQL.

База данных Azure для MySQL предоставляет следующие возможности:

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

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

Можно выбрать один из двух вариантов развертывания.

База данных Azure для MySQL — гибкий сервер

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

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

Что такое база данных Azure для MariaDB

MariaDB — это вилка MySQL, созданная сообществом в ответ на приобретение MySQL Oracle. База данных Azure для MariaDB — это реализация платформы MariaDB как услуги в облаке Azure.

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

  • Структуры и индексы баз данных
  • Команды определений данных
  • Клиентские протоколы, структуры и API
  • Программы mysqldump и mysqladmin

Это сходство между MySQL и MariaDB означает, что задачи миграции MySQL в Базу данных Azure для MySQL очень похожи на задачи миграции MariaDB в Базу данных Azure для MariaDB. Существуют и некоторые различия между системами. Например, MariaDB поддерживает кэш ColumnStore и Redis, которые можно использовать для оптимизации производительности.

Примечание.

Так как процессы миграции баз данных из MySQL и из MariaDB в Azure настолько похожи, они будут обсуждаться вместе в этом курсе.

Важно!

На момент написания этой статьи не существует варианта развертывания гибкого сервера для Базы данных Azure для MariaDB.

Что такое база данных Azure для PostgreSQL

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

Можно выбрать один из трех вариантов развертывания.

Гибкий сервер Базы данных Azure для PostgreSQL

База данных Azure для PostgreSQL (гибкий сервер) предоставляет те же преимущества, что и гибкий сервер MySQL. Ее можно использовать для обеспечения максимального уровня доступности и удобного перезапуска.

Параметры IaaS для использования MySQL, MariaDB и PostgreSQL в Azure

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

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

Lift-and-shift

Одним из подходов является зеркальное отображение локальной архитектуры в облаке путем создания инфраструктуры виртуальной сети, соответствующей вашему центру обработки данных. Вы создаете виртуальную машину для каждого сервера в локальной системе. Вы устанавливаете и настраиваете программное обеспечение системы управления базами данных (MySQL, MariaDB или PostgreSQL) на виртуальных машинах. Затем вы проводите операцию lift-and-shift над этой системой, перенося ее в облако без изменений в коде клиента или конфигурации.

В рамках этой стратегии выполняется пошаговый процесс миграции. Части системы переносятся в облако (с сохранением других элементов локально) при помощи сетевого шлюза Azure. Используйте этот гибридный подход для стабилизации системы на каждом шаге и отката при необходимости.

Использование готовых виртуальных машин

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

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

Использование контейнеров MySQL, MariaDB или PostgreSQL

Другая технология виртуализации, которую стоит рассмотреть, — это контейнеризация. Контейнер похож на виртуальную машину, но использует операционную систему совместно с компьютером, на котором расположен. Контейнеры меньше, чем виртуальные машины, поэтому их можно разместить больше на одном компьютере и быстрее запускать новые. Однако, для примера, контейнер Linux нельзя запустить на компьютере Windows, так как операционная система является общей. Для запуска контейнеров на физическом сервере требуется программное обеспечение узла контейнера, например Docker. Контейнеры развертываются из образов. Как и виртуальные машины, эти образы могут включать в себя программное обеспечение баз данных, например MySQL, MariaDB и PostgreSQL.

Если вы хотите запустить небольшое число контейнеров в Azure, установите Docker на виртуальной машине. Как вариант, если используется служба "Экземпляры контейнеров", контейнеры можно запускать в Azure, без настройки собственных виртуальных машин. Если вы хотите легко управлять большим числом контейнеров, которые должны взаимодействовать друг с другом, используйте службу Azure Kubernetes.