­čÉČ MariaDB / MySQL

MariaDB / MySQL w AIS

image

:warning: Opis ten ma charakter edukacyjny
Podobnie jak w przypadku Node-RED, PostgreSQL, InfluxDB i innych rzeczy, kt├│re mo┼╝na instalowa─ç na bramce, nie jest to co┼Ť, co w AI-Speaker rekomendujemy czy wspieramy.
Je┼Ťli instalujesz baz─Ö danych na bramce to pami─Ötaj, ┼╝e jeste┼Ť jej administratorem i sam dbasz o ilo┼Ť─ç danych kt├│re s─ů generowane w Twoim systemie i zapisywane w Twojej bazie.

Historia MariaDB

MariaDB to fork(kopia kodu) MySQL.

Michael Monty Widenius (założyciel MySQL) zdecydował się na fork MySQL i stworzenie dla niego firmy o nazwie Monty Program AB. Po tym jak MySQL został przejęty przez Sun Microsystems w 2008 roku. Następnie Oracle nabył Sun Microsystems w 2010 roku wraz z MySQL.

Tak narodziła się MariaDB (Maria to imię drugiej córki Michaela Monty Wideniusa).

W grudniu 2012 r. utworzono fundacj─Ö MariaDB, aby unikn─ů─ç przej─Öcia firmy, jak mia┼éo to miejsce w przesz┼éo┼Ťci w przypadku MySQL.

MariaDB ma nowe interesuj─ůce funkcje: lepsze testowanie, ulepszenia wydajno┼Ťci i poprawki b┼é─Öd├│w, kt├│re nie s─ů dost─Öpne w MySQL. Wiele optymalizacji w MariaDB pochodzi z firm kt├│re u┼╝ywaj─ů tej bazy - z Google, Facebooka, Twittera i tak dalej.

Instalacja MariaDB na bramce AIS

Binark─Ö MariaDB mamy w naszym repozytorium apt, instalacja sprowadza si─Ö do wykonania w konsoli komendy:

apt install mariadb

Uruchomienie bazy MariaDB jako usługi

Za ka┼╝dym razem, gdy chcemy uzyska─ç dost─Öp do bazy danych MySQL r─Öcznie za pomoc─ů wiersza polece┼ä lub za pomoc─ů jakiego┼Ť programu (aplikacji internetowej), musimy uruchomi─ç serwer MySQL poleceniem:

mysqld_safe

Zatrzymanie bazy

je┼╝eli uruchomili┼Ťmy serwer w konsoli poleceniem mysqld_safe to ┼╝eby go zatrzyma─ç mo┼╝emy zabi─ç proces bazy danych poleceniem:

killall mysqld mysqld_safe

następnie odczekać 10 sekund i upewnić się, że proces nie działa w tle, polecniem:

ps aux | grep mysqld

je┼╝eli nadal b─Ödzie wida─ç wi─Öcej proces├│w ni┼╝ tylko jedna linijka ( uruchomienie powy┼╝szej komendy) to mo┼╝emy do polecenia killall doda─ç flag─Ö -9 to powinno zatrzyma─ç proces bazy:

killall -9 mysqld mysqld_safe*

Uruchomienie bazy MariaDB jako usługi

┼╗eby serwer MySQL by┼é automatycznie uruchamiany podczas startu systemu dodamy skrypt uruchamiaj─ůcy do managera proces├│w PM2.

Tworzymy najpierw w folderze AIS plik/skrypt bash uruchamiaj─ůcy baz─Ö:

nano ~/AIS/start_mysql_db.sh

w pliku dodajemy ma takie dwie linijki:

echo "Start Bazy Danych"
mysqld_safe

nast─Öpnie dodajemy uprawnienie do uruchamiania tego pliku, komend─ů

chmod +x ~/AIS/start_mysql_db.sh

┼╗eby serwer MySQL by┼é automatycznie uruchamiany podczas startu systemu dodajemy skrypt uruchamiaj─ůcy do managera proces├│w PM2:

pm2 start ~/AIS/start_mysql_db.sh --name mysql --output  /dev/null --error  /dev/null --restart-delay=150000

nast─Öpnie zapisujemy stan proces├│w poleceniem:

pm2 save

Tworzenie nowej bazy

Teraz dodamy now─ů baz─Ö, nowego u┼╝ytkownika i temu nowemu u┼╝ytkownikowi nadamy pe┼ény dost─Öp do tej nowej bazy.
W tym celu na pocz─ůtek logujemy si─Ö do serwera bazodanowego na swoj─ů nazw─ů u┼╝ytkownika w AIS.

Jak─ů mamy nazw─Ö u┼╝ytkownika w systemie Linux mo┼╝na sprawdzi─ç komend─ů:

id -un 

albo

whoami

Czyli logujemy si─Ö tak─ů komend─ů:

mysql -u $(whoami)

Po zalogowaniu si─Ö do serwera MySQL tworzymy now─ů baz─Ö z odpowiednim kodowaniem, poleceniem:

CREATE DATABASE ha CHARACTER SET utf8;

nast─Öpnie dodajemy nowego u┼╝ytkownika bazodanowego:

CREATE USER 'ais'@'localhost' IDENTIFIED  BY 'dom';

i nadajemy mu uprawnienia do bazy ha:

GRANT ALL PRIVILEGES ON ha.* TO 'ais'@'localhost';

robimy exit i kontrolnie logujemy się do nowej bazy ha już jako użytkownik ais z hasłem dom:

mysql -h 127.0.0.1 -u ais -pdom ha

W┼é─ůczenie zapisu zdarze┼ä do lokalnej bazy MySQL

Instalujemy jeszcze pakiet pythona do komunikacji z baz─ů MySQL / MariaDB:

pip install pymysql

Teraz w aplikacji możemy skonfigurować bazę na bramce jako bazę do zapisu zdarzeń:

Oczywi┼Ťcie lepiej nie przesadza─ç z ilo┼Ťci─ů dni - szczeg├│lnie na bramkach DEV1.

┼╗eby system prze┼é─ůczy┼é si─Ö na zapis do nowej bazy restartujemy proces ais:

pm2 restart ais

Po ponownym uruchomieniu procesu ais w bazie zostan─ů utworzone tabele do kt├│rych system b─Ödzie zapisywa┼é zdarzenia.
Mo┼╝emy to sprawdzi─ç, ┼é─ůczymy si─Ö do bazy:

mysql -h 127.0.0.1 -u ais -pdom ha

i uruchamiamy komend─Ö:

SHOW TABLES;

zmieniamy jeszcze kodowanie tabel żeby nie było problemu z polskimi znakami:

ALTER TABLE states CONVERT TO CHARACTER SET utf8;
ALTER TABLE events CONVERT TO CHARACTER SET utf8; 

Mo┼╝emy te┼╝ sprawdzi─ç ile mamy rekord├│w w tabelach itdÔÇŽ

2 polubienia

Witam. Jak ustawi─ç zapis bazy na dysku USB?

Dzi─Ökuj─Ö, to rozwia┼éo moje w─ůtpliwo┼Ť─ç co do nazewnictwa bazy danych.