Experimentální MySQL v Azure Web Apps

Nová preview funkce MySQL in-app přináší do Azure App Service dlouho žádanou nativní podporu MySQL databáze. Tedy alespoň částečně, pro účely vývoje a testování.

Jak název napovídá, databáze běží ve stejné instanci jako aplikace (in-app). Důsledkem je vynikající výkon, ale také riziko – pokud vypnete webovou aplikaci, nepoběží ani databáze. Z tohoto důvodu je také vhodné aktivovat funkci Always-On, která udrží webový server "vzhůru", i když na něj nebudou proudit žádné požadavky.

Omezení:

  • Databáze běží ve stejné instanci jako web, z toho plyne, že když se vypne webová aplikace, nepoběží ani databáze.
  • Úložiště je sdílené s webovou aplikací – Free a Shared plány mohou snadno narazit na limity.
  • Nepodporuje škálování na více instancí.
  • Nepodporuje Local cache.
  • Nepodporuje vzdálený přístup přes nástroje pro správu.
  • Databázi nemůžete nasadit přímo, je potřeba ji nejprve exportovat jako SQL skript a ten poté nahrát třeba přes phpMyAdmin.

Pokud jde o funkcionalitu databáze, ta je nedotčena. Určení je tedy jasné: vývoj a testování, primárně PHP a MySQL aplikací v Azure. Jakmile je aplikace připravena pro produkci, je doporučeno přejít třeba na ClearDB.

Jak na to?

V ovládacím panelu Web App, v sekci Settings je nová položka "MySQL In App (preview) ", kde můžete zapnout MySQL přepínačem na hodnotu On.

image

Následně máte dvě možnosti, jak s databází pracovat: phpMyAdmin a KUDU.

Webový phpMyAdmin je automatickou součástí MySQL in-app a není potřeba jej instalovat zvlášť. Jednoduše v sekci MySQL In App klikněte v záhlaví na ikonu Manage:

image

V novém tabu se otevře důvěrně známé administrační rozhraní (na adrese https://[web].scm.azurewebsites.net/phpMyAdmin). Databáze se jmenuje azuredb.

image

Druhá varianta je otevřít KUDU (https://[web].scm.azurewebsites.net) a přejít na Debug console. Tam je v Program Files nainstalovaný nástroj mysql.exe:
cd D:\Program Files (x86)\mysql\5.7.9.0\bin\mysql.exe -e "[SQL příkaz]" --user=azure --password=password --port=[port databáze, např. 49667] --bind-address=127.0.0.1
Detailní popis s ukázkou použití najdete na oficiálním blogu.

Martin