Serwer bazy danych jest krytycznym elementem infrastruktury sieciowej niezbędnej dla współczesnych aplikacji. Bez możliwości przechowywania, pobierania, aktualizowania i usuwania danych (w razie potrzeby) użyteczność i zakres aplikacji internetowych i komputerowych staje się bardzo ograniczony.
Ponadto wiedza o tym, jak zainstalować, zarządzać i skonfigurować serwer bazy danych (tak, aby działał zgodnie z oczekiwaniami) jest podstawową umiejętnością, którą musi posiadać każdy administrator systemu.
W tym artykule krótko omówimy, jak zainstalować i zabezpieczyć serwer bazy danych MariaDB, a następnie wyjaśnimy, jak go skonfigurować.
Instalowanie i zabezpieczanie serwera MariaDB
W CentOS 7.x , MariaDB zastąpiła MySQL, który wciąż można znaleźć w Ubuntu (wraz z MariaDB). To samo dotyczy openSUSE .
Dla zwięzłości użyjemy tylko MariaDB w tym samouczku, ale pamiętaj, że oprócz różnych nazw i filozofii rozwoju, oba Systemy zarządzania relacyjną bazą danych (RDBMS-y w skrócie) są prawie identyczne.
Oznacza to, że polecenia po stronie klienta są takie same w obu MySQL i MariaDB , a pliki konfiguracyjne mają nazwy i znajdują się w tych samych miejscach.
Aby zainstalować MariaDB, wykonaj:
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # yum update && yum install mariadb mariadb-server # CentOS --------------- On Debian and Ubuntu --------------- $ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server --------------- On openSUSE --------------- # zypper update && zypper install mariadb mariadb-tools # openSUSE
Zwróć uwagę, że w Ubuntu , zostaniesz poproszony o podanie hasła dla użytkownika root RDBMS.
Po zainstalowaniu powyższych pakietów upewnij się, że usługa bazy danych jest uruchomiona i została aktywowana, aby uruchomić się przy starcie (w CentOS i openSUSE musisz wykonać tę operację ręcznie, podczas gdy w Ubuntu proces instalacji już się tym za Ciebie zatroszczy):
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # systemctl start mariadb && systemctl enable mariadb --------------- On openSUSE --------------- # systemctl start mysql && systemctl enable mysql
Następnie uruchom mysql_secure_installation
scenariusz. Ten proces pozwoli Ci:
- ustaw / zresetuj hasło dla użytkownika root RDBMS
- usuń anonimowe loginy (w ten sposób umożliwiając logowanie do RDBMS tylko użytkownikom z ważnym kontem)
- wyłącz dostęp roota dla maszyn innych niż localhost
- usuń testową bazę danych (do której każdy może uzyskać dostęp)
- aktywuj zmiany powiązane z 1 do 4.
Bardziej szczegółowy opis tego procesu można znaleźć w sekcji Po instalacji w Zainstaluj bazę danych MariaDB w RHEL/CentOS/Fedora i Debian/Ubuntu.
Konfigurowanie serwera MariaDB
Domyślne opcje konfiguracyjne są odczytywane z następujących plików w podanej kolejności:/etc/mysql/my.cnf
, /etc/my.cnf
i ~/.my.cnf
.
Najczęściej tylko /etc/my.cnf
istnieje. To na tym pliku ustawimy ustawienia dla całego serwera (które można nadpisać tymi samymi ustawieniami w ~/.my.cnf
dla każdego użytkownika).
Pierwszą rzeczą, o której musimy pamiętać o my.cnf
polega na tym, że ustawienia są zorganizowane w kategorie (lub grupy), w których każda nazwa kategorii jest ujęta w nawiasy kwadratowe.
Konfiguracje systemu serwera są podane w [mysqld]
sekcji, gdzie zazwyczaj znajdziesz tylko dwa pierwsze ustawienia w poniższej tabeli. Pozostałe to inne często używane opcje (jeśli wskazano, zmienimy wartość domyślną na niestandardową, którą wybraliśmy):
Ustawienie i opis | Wartość domyślna |
katalog danych to katalog, w którym przechowywane są pliki danych. | datadir=/var/lib/mysql |
socket wskazuje nazwę i lokalizację pliku gniazda używanego do połączeń klientów lokalnych. Pamiętaj, że plik typu socket jest zasobem używanym do przekazywania informacji między aplikacjami. | socket=/var/lib/mysql/mysql.sock |
bind_address to adres, na którym serwer bazy danych będzie nasłuchiwał połączeń TCP/IP. Jeśli chcesz, aby Twój serwer nasłuchiwał na więcej niż jednym adresie IP, pomiń to ustawienie (0.0.0.0, co oznacza, że będzie nasłuchiwał na wszystkich adresach IP przypisanych do tego konkretnego hosta). Zmienimy to, aby poinstruować usługę, aby nasłuchiwała tylko na swoim głównym adresie (192.168.0.13): bind_address=192.168.0.13 | bind_address=0.0.0.0 |
port reprezentuje port, na którym będzie nasłuchiwał serwer bazy danych.
Zamienimy domyślną wartość (3306) na 20500 (ale musimy się upewnić, że nic innego nie używa tego portu): Podczas gdy niektórzy ludzie będą argumentować, że bezpieczeństwo przez ukrywanie nie jest dobrą praktyką, zmiana domyślnych portów aplikacji na wyższe jest podstawową - ale skuteczną - metodą zniechęcania do skanowania portów. | port=3306 |
innodb_buffer_pool_size to pula buforów (w bajtach) pamięci przydzielonej dla danych i indeksów, które są często używane podczas korzystania z Innodb (co jest ustawieniem domyślnym w MariaDB) lub XtraDB jako silnik pamięci masowej. Zamienimy domyślną wartość na 256 MB: innodb_buffer_pool_size=256M | innodb_buffer_pool_size=134217728 |
skip_name_resolve wskazuje, czy nazwy hostów będą rozwiązywane przy połączeniach przychodzących. Jeśli jest ustawiony na 1, tak jak to zrobimy w tym przewodniku, tylko adresy IP. O ile nie potrzebujesz nazw hostów do określenia uprawnień, zaleca się wyłączenie tej zmiennej (w celu przyspieszenia połączeń i zapytań) poprzez ustawienie jej wartości na 1: skip_name_resolve=1 | skip_name_resolve=0 |
query_cache_size reprezentuje rozmiar (w bajtach) dostępny dla pamięci podręcznej zapytań na dysku, gdzie wyniki zapytań SELECT są przechowywane do wykorzystania w przyszłości, gdy identyczne zapytanie (do wykonywana jest ta sama baza danych i przy użyciu tego samego protokołu i tego samego zestawu znaków). Należy wybrać rozmiar pamięci podręcznej zapytań, który odpowiada Twoim potrzebom na podstawie 1) liczby powtarzających się zapytań oraz 2) przybliżonej liczby rekordów, które te powtarzające się zapytania mają zwrócić. Na razie ustawimy tę wartość na 100 MB: query_cache_size=100M | query_cache_size=0 (co oznacza, że jest domyślnie wyłączone) |
max_connections to maksymalna liczba jednoczesnych połączeń klientów z serwerem. Ustawimy tę wartość na 30: max_connections=30Każde połączenie będzie korzystało z wątku, a tym samym zużyje pamięć. Weź ten fakt pod uwagę podczas ustawiania max_connections. | max_connections=151 |
thread_cache_size wskazuje liczbę wątków, które serwer przydziela do ponownego użycia po rozłączeniu się klienta i zwolnieniu wątków, które były wcześniej używane. W tej sytuacji taniej (pod względem wydajności) jest ponowne użycie wątku niż tworzenie nowego. Ponownie, zależy to od liczby połączeń, których oczekujesz. Możemy bezpiecznie ustawić tę wartość na połowę liczby max_connections: thread_cache_size=15 | thread_cache_size=0 (domyślnie wyłączone) |
W CentOS , będziemy musieli powiedzieć SELinux aby zezwolić na MariaDB do słuchania na niestandardowym porcie (20500 ) przed ponownym uruchomieniem usługi:
# yum install policycoreutils-python # semanage port -a -t mysqld_port_t -p tcp 20500
Następnie uruchom ponownie usługę MariaDB.
Dostrajanie wydajności MariaDB
Aby pomóc nam w sprawdzeniu i dostrojeniu konfiguracji zgodnie z naszymi konkretnymi potrzebami, możemy zainstalować mysqltuner (skrypt, który poda sugestie dotyczące poprawy wydajności naszego serwera bazy danych i zwiększenia jego stabilności):
# wget https://github.com/major/MySQLTuner-perl/tarball/master # tar xzf master
Następnie zmień katalog na folder wyodrębniony z archiwum (dokładna wersja może się różnić w Twoim przypadku):
# cd major-MySQLTuner-perl-7dabf27
i uruchom go (zostaniesz poproszony o podanie danych logowania do konta administracyjnego MariaDB)
# ./mysqltuner.pl
Wynik działania skryptu jest sam w sobie bardzo interesujący, ale przejdźmy na sam dół, gdzie zmienne do dostosowania są wymienione z zalecaną wartością:
query_cache_type
ustawienie wskazuje, czy pamięć podręczna zapytań jest wyłączona (0) lub włączony (1) . W tym przypadku mysqltuner radzi nam go wyłączyć.
Dlaczego więc radzimy dezaktywować go teraz? Powodem jest to, że pamięć podręczna zapytań jest przydatna głównie w scenariuszach wysokiego odczytu / niskiego zapisu (co nie jest w naszym przypadku, ponieważ właśnie zainstalowaliśmy serwer bazy danych).
OSTRZEŻENIE :Przed wprowadzeniem zmian w konfiguracji serwera produkcyjnego zdecydowanie zalecamy skonsultowanie się z doświadczonym administratorem bazy danych, aby upewnić się, że zalecenie udzielone przez mysqltunera nie wpłynie negatywnie na istniejące ustawienia.
Podsumowanie
W tym artykule wyjaśniliśmy, jak skonfigurować serwer bazy danych MariaDB po jego zainstalowaniu i zabezpieczeniu. Zmienne konfiguracyjne wymienione w powyższej tabeli to tylko kilka ustawień, które warto wziąć pod uwagę przygotowując serwer do użycia lub później go dostrajając. Przed wprowadzeniem zmian zawsze zapoznaj się z oficjalną dokumentacją MariaDB lub skorzystaj z naszych wskazówek dotyczących dostrajania wydajności MariaDB:
Don' t nie trafić: 15 przydatnych wskazówek dotyczących dostrajania i optymalizacji wydajności MariaDB
Jak zawsze, nie wahaj się dać nam znać, jeśli masz jakieś pytania lub komentarze dotyczące tego artykułu. Czy są jakieś inne ustawienia serwera, których lubisz używać? Podziel się z resztą społeczności za pomocą poniższego formularza komentarzy.
Zostań certyfikowanym administratorem systemu Linux