2016-09-13

Обзор

Не так давно Azure анонсировала поддержку MySQL для Azure Application Services, aka WebApp.

Благодаря ей – вам не требуется больше беспокоиться о развёртывании MySQL сервера и баз на нём, достаточно установить элемент “MySQL in-app(Preview)” в ON при создании WebApp – и Azure развернёт его вместе с базой данных.

Преимущества in-app MySQL:

поддержка любых приложений, требующих MySQL базу – WordPress, Joomla , Drupal и т.д.;

сервер MySQL работаем на том же инстансе, что и веб-сервер с вашим приложением, что положительно (теоретически) влияет на производительность;

дисковый объём вашего приложения делится вместе с файлами баз данных (имейте ввиду, что на Free и Shared хостинг-ланах – вы можете столкнутся с нехваткой места);

вы можете включить slow_query лог для MySQL (имейте ввиду – что это может повлиять на производительность приложения – не стоит его оставлять включенным на PROD-окружении).

Недостатки/ограничения:

Auto scale не поддерживается;

Local Cache не поддерживается;

удалённый доступ к базам данных не поддерживается (только через phpMyAdmin или утилиты KUDU, хотя на самом деле – через локальный mysql клиент – вполне нормально получилось подключиться и работать с базой);

App Service Environment не поддерживается.

Подключение in-app MySQL к запущенному WebApp с WordPress

У нас имеется WordPress, уже работающий с ClearDB (падения баз которой на пару часов – совершенно нормальная вещь для Azure), которое мы хотим перенести на MySQL In App.

Обратите внимание – что теперь при создании WebApp можно сразу выбрать ClearDB или MySQL In App:



После развёртывания – переходим по адресу приложения, и заканчиваем установку как обычно:



Что бы проверить текущие настройки подключения WordPress приложения к MySQL – открываем App Service Editor, доступный по адресу https://<application-name>.scm.azurewebsites.net/dev/wwwroot/ и проверяем wp-config.php:

Функция preg_replace() получает из переменных окружения строку defaultConnection, которая есть в Application Settings и выглядит примерно так:

И задаёт значение переменных с именем хоста, базой, пользователем и паролем.

Подключение MySQL In App

Переходим к приложению, и переключаем MySQL In App в On:

Через KUDU => ProcessExplorer – проверяем наличие процесса mysqld:

Копировать базу вручную не пришлось, сразу после подключения MySQL In App – база уже доступна через phpMyAdmin по адресу https://<application-name>.scm.azurewebsites.net/phpMyAdmin или – через mysql клиент:

Проверяем:

Логи:

Каталог с данными:

В случае с уже действующем приложением – включаем MySQL In App, затем через KUDU (https://<application-name>.scm.azurewebsites.net/dev/wwwroot/wp-config.php) – обновляем настройки WordPress:

Создаём копию текущей ClearDB базы:

Загружаем дамп в новую базу MySQL:

Проверяем список пользователей сейчас:

Добавляем пользователя в панели управления WP:

Обычное дело при работе с ClearDB в Azure – проявилось и тут:

Проверяем список:

Готово. Используется новая база.

Сравнение Azure MySQL in-app vs Azure ClearDB

Устанавлваем Apache Bench:

Проверяем при работе с MySQL In App:

И ClearDB:

Ссылки по теме

Announcing MySQL in-app (Preview) for Web Apps

Exporting your database to MySQL in-app database

Show more