Jakiś czas temu zrobiłem aplikacje stacji pogodowej do mierzenia temperatury. Aplikacja korzysta z dedykowanej bazy MSSQL Azure. Miesięczny koszt bazy wynosi 5,10EUR. Termometr obecnie jest odłaczony od aplikacji, nie ma bierzących wyników pomiaru temperatury, przechowywane są tylko dane historyczne. Baza MSSQL Azure wykorzystywana jest w 1.2%. Nie ma większego sensu by opłacać praktycznie niewykorzystywaną bazę. Azure umożliwia podłączenie bazy MySql, która znajduje się razem z aplikacją i korzysta z tych samych zasobów w ramach tego samego planu usługi App Service. W tym wpisie opisze jak można skorzystać z darmowej bazy danych w portalu Azure.
Modyfikacje aplikacji
W projekcie aplikacji WeatherStation wprowadziłem kilka modyfikacji. Po pierwsze zaktualizowałem wersje .Net Core do 2.1. Następnie za pomocą nugeta dodałem MySql.Data.EntityFrameworkCore do projektu.
W pliku Startup.cs w metodzie ConfigureServices ustawiłem połączenie do bazy MySql:
services.AddDbContext<MyDbContext>(options => options.UseMySQL(Configuration.GetConnectionString("MySQLConnection")));
Wymagane również było zmienienie typu kolumny ExternalKey z Guid na string (MySql nie obsługuje tyu danych Guid).
Utworzenie Wep App + MySql
W portalu Azurew sekcji utworzenia nowego zasobu w wyszukiwarce wpisujemy Wep App + MySql z listy wybieramy Aplikacja sieci Web + baza danych MySQL. Podajemy unikalną nazwę, wybieramy grupę zasobów, w polu Dostawca bazy danych wybieramy MySQL in APP i klikamy utwórz.
W ustawieniach aplikacji dodajemy parametr połączenia MySQLConnection do bazy MySql o wartości:
Database=weatherstation;Data Source=127.0.0.1;User Id=azure;Password=********;Port=54683
Port musi być podany osobno. Informacje jak podłączyć się do bazy MySql znajdują się w pliku d:\home\data\mysql\MYSQLCONNSTR_localdb w Azure, aby się tam dostać należy otworzyć narzędzia zaawansowane (Kudu) z menu wybrać Debug console -> CMD przejść do katalogu D:\home\data\mysql i edytować plik MYSQLCONNSTR_localdb.ini
W międzyczasie można opublikować nową wersje aplikacji na platformę Azure.
Dostęp do bazy MySQL In App
Przez narzędzie phpMyAdmin możemy zarządzać bazą MySql. W sekcji MySQL In App wybieramy zarządzaj.
Gdyby pojawiły się komunikat błędu z odmową dostępu do bazy MySql:
Należy otworzyć link aplikacji. Gdy aplikacja zostanie uruchomiana można podłączyć się do bazy MySql.
Po zmigrowaniu danych z bazy MSSQL Azure do bazy MySql stara aplikacja została wyłączona. Baza danych MySQL In App nie jest zalecana do rozwązań produkcyjnych, jednak dla małych niewymagających aplikacji sądzę, że dobrze się sprawdzi. Nowa wersja aplikacji jest dostępna pod adresem https://weatherstationmysql.azurewebsites.net/.