MariaDB – instalacja, konfiguracja, utrzymanie

MariaDB jest popularnym systemem zarządzania relacyjnymi bazami danych, który jest kompatybilny z MySQL i oferuje wiele zaawansowanych funkcji, takich jak silniki przechowywania, widoki, triggery, procedury składowane, funkcje okienkowe i wiele więcej. Aby uzyskać najlepszą wydajność i niezawodność bazy danych MariaDB, należy odpowiednio skonfigurować i zoptymalizować jej parametry i zasoby. W tym poście pokażę jak zainstalować MariaDB, a następnie przedstawię kilka wskazówek i najlepszych praktyk, które pomogą ci osiągnąć ten cel.

Jak zainstalować MariaDB na Ubuntu 22.04

Krok 1 — Instalacja MariaDB

W chwili pisania tego tekstu domyślne repozytoria APT systemu Ubuntu 22.04 obejmują wersję MariaDB 10.6.12.

Aby zainstalować tą paczkę, zaktualizuj indeks pakietu na swoim serwerze za pomocą apt:

sudo apt update

Następnie zainstaluj pakiet:

sudo apt install mariadb-server

Te polecenia zainstalują MariaDB, ale nie wyświetli monitu o ustawienie hasła ani wprowadzenie jakichkolwiek innych zmian konfiguracyjnych. Ponieważ domyślna konfiguracja pozostawia instalację MariaDB niezabezpieczoną, użyj skryptu dostarczonego przez pakiet mariadb-server, aby ograniczyć dostęp do serwera i usunąć nieużywane konta.

Krok 2 — Zabezpieczanie MariaDB

W przypadku nowych instalacji MariaDB następnym krokiem jest uruchomienie dołączonego skryptu bezpieczeństwa. Ten skrypt zmienia niektóre mniej bezpieczne opcje domyślne, takie jak zdalne logowanie roota i domyślnych użytkownków.

Uruchom skrypt bezpieczeństwa:

sudo mysql_secure_installation

Spowoduje to przejście przez serię monitów, w których możesz wprowadzić zmiany w opcjach bezpieczeństwa instalacji MariaDB. Pierwszy monit poprosi Cię o podanie bieżącego hasła root bazy danych. Ponieważ jeszcze go nie ustawiłeś, naciśnij ENTER, aby wskazać „brak”.

Output
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, you'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):

Zostaniesz zapytany, czy chcesz przełączyć się na uwierzytelnianie unix socket . Ponieważ masz już chronione konto root, możesz pominąć ten krok. Wpisz n i naciśnij ENTER.

Output
. . .
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n

Następny monit zapyta, czy chcesz ustawić hasło roota bazy danych. W systemie Ubuntu konto root dla MariaDB jest ściśle powiązane z automatyczną konserwacją systemu, dlatego nie należy zmieniać skonfigurowanych metod uwierzytelniania dla tego konta.

Takie postępowanie umożliwiłoby aktualizacji pakietu złamanie systemu bazy danych poprzez usunięcie dostępu do konta administracyjnego. Wpisz n i naciśnij ENTER.

Output
. . .
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] n

W ten sposób zakończyłeś wstępną konfigurację zabezpieczeń MariaDB. Następny krok jest opcjonalny, ale powinieneś go wykonać, jeśli wolisz uwierzytelniać się na serwerze MariaDB za pomocą hasła.

Krok 4 — Testowanie MariaDB

Po zainstalowaniu z domyślnych repozytoriów MariaDB uruchomi się automatycznie. Aby to przetestować, sprawdź jego status.

sudo systemctl status mariadb

Otrzymasz dane wyjściowe podobne do następujących:

Output
● mariadb.service - MariaDB 10.6.12 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-11-28 13:01:33 UTC; 14min ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
. . .

Jeśli MariaDB nie jest uruchomiona, możesz ją uruchomić za pomocą polecenia sudo systemctl start mariadb.

W celu dodatkowego sprawdzenia możesz spróbować połączyć się z bazą danych za pomocą narzędzia mysqladmin, czyli klienta umożliwiającego uruchamianie poleceń administracyjnych. Na przykład to polecenie mówi, aby połączyć się z MariaDB jako root przy użyciu gniazda Unix i zwrócić wersję:

sudo mysqladmin version

Otrzymasz dane wyjściowe podobne do tego:

Output
mysqladmin  Ver 9.1 Distrib 10.6.12-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version        10.6.12-MariaDB-1build1
Protocol version    10
Connection        Localhost via UNIX socket
UNIX socket        /run/mysqld/mysqld.sock
Uptime:            15 min 53 sec

Threads: 1  Questions: 482  Slow queries: 0  Opens: 171  Open tables: 28  Queries per second avg: 0.505

Optymalizacja bazy danych MariaDB

Konfiguracja bazy danych MariaDB odbywa się za pomocą pliku my.cnf, który znajduje się w katalogu /etc lub /etc/mysql w systemach Linux. Plik ten zawiera sekcje, które odpowiadają różnym grupom ustawień, takim jak [client][mysqld][mysqldump][mysqladmin] i tak dalej. Każda sekcja zawiera pary klucz-wartość, które określają wartości poszczególnych opcji konfiguracyjnych. Na przykład, aby ustawić maksymalną liczbę jednoczesnych połączeń do serwera bazy danych, należy dodać następującą linię do sekcji [mysqld]:

max_connections = 100

Istnieje wiele opcji konfiguracyjnych, które można dostosować do swoich potrzeb i preferencji, ale niektóre z nich są szczególnie ważne dla wydajności i niezawodności bazy danych. Oto kilka z nich:

  • innodb_buffer_pool_size: określa rozmiar pamięci podręcznej, która jest używana do przechowywania danych i indeksów tabel InnoDB. Jest to jedna z najważniejszych opcji, ponieważ większość operacji na bazie danych odbywa się w pamięci podręcznej, a nie na dysku. Zaleca się, aby ustawić tę wartość na około 80% dostępnej pamięci RAM. Na przykład, jeśli masz 8 GB RAM, możesz ustawić tę opcję na:
innodb_buffer_pool_size = 6G
  • innodb_log_file_size: określa rozmiar plików dziennika transakcji InnoDB, które są używane do zapisywania zmian w danych przed zapisaniem ich na dysku. Pliki te są niezbędne dla odzyskiwania danych w przypadku awarii lub przerwania zasilania. Zaleca się, aby ustawić tę wartość na około 25% rozmiaru pamięci podręcznej InnoDB. Na przykład, jeśli masz 6 GB pamięci podręcznej InnoDB, możesz ustawić tę opcję na:
innodb_log_file_size = 1.5G
  • innodb_flush_log_at_trx_commit: określa, jak często dane z dziennika transakcji InnoDB są zapisywane na dysku. Jest to ważne dla trwałości danych, ponieważ im częściej dane są zapisywane, tym mniejsza jest szansa na ich utratę w przypadku awarii. Jednak częste zapisywanie danych na dysk może wpływać negatywnie na wydajność, ponieważ zwiększa obciążenie dysku i opóźnienia. Dostępne są trzy możliwe wartości dla tej opcji:
  • 1 (domyślna): dane są zapisywane na dysk po każdej transakcji. Jest to najbezpieczniejsza opcja, ale również najwolniejsza.
  • 2: dane są zapisywane na dysk co sekundę. Jest to kompromis między bezpieczeństwem a wydajnością, ale istnieje niewielkie ryzyko utraty danych w przypadku awarii w ciągu jednej sekundy.
  • 0: dane są zapisywane na dysk tylko przy zamykaniu serwera lub przy osiągnięciu rozmiaru dziennika transakcji. Jest to najszybsza opcja, ale również najniebezpieczniejsza, ponieważ może prowadzić do utraty wszystkich danych, które nie zostały zapisane na dysku.

Zaleca się, aby używać opcji 1 dla krytycznych systemów, które wymagają pełnej trwałości danych, opcji 2 dla systemów, które mogą tolerować niewielką utratę danych w zamian za lepszą wydajność, i opcji 0 tylko dla systemów testowych lub rozwojowych, które nie są ważne dla biznesu.

  • query_cache_size: określa rozmiar pamięci podręcznej, która jest używana do przechowywania wyników zapytań, które zostały już wykonane. Jest to opcja, która może poprawić wydajność, jeśli często wykonujesz te same zapytania, ponieważ unikasz ponownego przetwarzania danych i odwoływania się do dysku. Jednak pamięć podręczna zapytań może również wpływać negatywnie na wydajność, jeśli zapytania są zbyt złożone, zbyt często się zmieniają lub są zbyt mało używane, ponieważ zwiększa obciążenie procesora i pamięci. Zaleca się, aby używać tej opcji z rozwagą i monitorować jej skuteczność za pomocą zmiennych Qcache_hits i Qcache_not_cached. Aby włączyć pamięć podręczną zapytań, należy ustawić tę opcję na wartość większą niż zero. Na przykład, aby ustawić rozmiar pamięci podręcznej zapytań na 128 MB, należy dodać następującą linię do sekcji [mysqld]:
query_cache_size = 128M

Kopia zapasowa

Aby zrobić kopię zapasową bazy danych MariaDB użyj polecenia mysqldump, które jest narzędziem do tworzenia kopii zapasowych baz danych MariaDB z linii poleceń. Aby to zrobić, musisz:

  • Uruchomić terminal i połączyć się z serwerem bazy danych MariaDB za pomocą polecenia ssh lub innego sposobu.
  • Wykonać polecenie mysqldump -u nazwa_użytkownika -p nazwa_bazy > backup.sql, aby utworzyć kopię zapasową konkretnej bazy danych. Jeśli chcesz zrobić kopię wszystkich baz, należy lekko zmodyfikować polecenie: mysqldump -u nazwa_użytkownika -p –all-databases > backup.sql.
  • Wprowadzić hasło użytkownika bazy danych, gdy zostanie o to poproszony.
  • Plik backup.sql będzie zawierał wszystkie dane i strukturę bazy danych w formacie SQL, który można później zaimportować do innej bazy danych.

Aby przywrócić kopię zapasową bazy danych MariaDB użyj polecenia mysql, które jest narzędziem do przywracania baz danych MariaDB z linii poleceń. Aby to zrobić, musisz uruchomić terminal i połączyć się z serwerem bazy danych MariaDB za pomocą polecenia ssh lub innego sposobu. Następnie wykonaj polecenie mysql -u nazwa_użytkownika -p nazwa_bazy < backup.sql, aby przywrócić kopię zapasową konkretnej bazy danych. Jeśli chcesz przywrócić wszystkie bazy danych, możesz użyć opcji –all-databases zamiast nazwy baz2. Wprowadź hasło użytkownika bazy danych, gdy zostaniesz o to poproszony.

Monitorowanie wydajności

  • Wbudowane narzędzia do monitorowania: MariaDB zawiera zestaw narzędzi do monitorowania i analizy wydajności, co ułatwia diagnozowanie problemów i optymalizację systemu. Niektóre z tych narzędzi to:
    • SHOW STATUS: polecenie, które wyświetla informacje o statusie serwera, takie jak liczba połączeń, zapytań, błędów, buforów, itp.
    • SHOW PROCESSLIST: polecenie, które wyświetla informacje o aktywnych procesach i zapytaniach na serwerze, takie jak identyfikator, użytkownik, host, baza danych, czas, stan, itp.
    • INFORMATION_SCHEMA: schemat, który zawiera wiele tabel i widoków, które udostępniają informacje o strukturze i działaniu bazy danych, takie jak tabele, kolumny, indeksy, silniki, zmienne, statystyki, itp.
    • PERFORMANCE_SCHEMA: schemat, który zawiera wiele tabel i widoków, które udostępniają informacje o wydajności i zasobach bazy danych, takie jak zdarzenia, czasy, czekania, blokady, mutexy, itp.
    • SLOW QUERY LOG: plik, który rejestruje zapytania, które trwają dłużej niż określony czas. Jest to przydatne narzędzie do identyfikacji i optymalizacji zapytań, które obciążają serwer.
  • Zewnętrzne narzędzia do monitorowania: Istnieją również wiele zewnętrznych narzędzi do monitorowania wydajności bazy danych MariaDB, które oferują dodatkowe funkcje i możliwości, takie jak graficzne interfejsy użytkownika, alerty, raporty, analityka, itp. Niektóre z tych narzędzi to:
    • Azure Database for MariaDB: usługa, która umożliwia tworzenie i zarządzanie skalowalnymi i niezawodnymi instancjami bazy danych MariaDB w chmurze. Możesz użyć wbudowanych funkcji monitorowania wydajności i alertów usługi Azure Database for MariaDB w połączeniu z ocenami wydajności opartymi na rdzeniach wirtualnych.
    • phpMyAdmin: popularna aplikacja webowa, która umożliwia zarządzanie bazami danych MariaDB za pomocą przeglądarki internetowej. Możesz użyć phpMyAdmin do wykonywania zapytań, tworzenia i modyfikowania tabel, importowania i eksportowania danych, a także monitorowania wydajności i zasobów serwera.
    • MonYog: profesjonalne narzędzie do monitorowania i zarządzania bazami danych MariaDB, które oferuje zaawansowaną analitykę, alerty, raporty, dashboardy i wiele więcej. Możesz użyć MonYog do śledzenia i optymalizacji wydajności, zdrowia i bezpieczeństwa serwera, a także do identyfikowania i rozwiązywania problemów.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *