Обзор
Не так давно 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