W tym artykule rozważę funkcje instalacji, podstawowej konfiguracji i optymalizacji serwera bazy danych MariaDB. Moim zadaniem było zainstalowanie MariaDB i wykonanie podstawowej konfiguracji w systemie Linux CentOS 7. Ponieważ jest to aktualny problem, mam nadzieję, że ten artykuł będzie ci przydatny. Na końcu artykułu podam kilka przykładów plików konfiguracyjnych i możesz ich użyć, aby wybrać parametry swojego serwera.
Treść
- Zainstaluj MariaDB na CentOS
- Ochrona i bezpieczeństwo MariaDB
- Sprawdzanie połączenia z serwerem MariaDB
- Ustawienie pliku konfiguracyjnego MariaDB
- Optymalizacja wydajności i tuning MariaDB
- Podstawowe polecenia do pracy w konsoli MariaDB
Zainstaluj MariaDB na CentOS
Ostatnio MariaDB znajduje się w standardowym podstawowym repozytorium dla CentOS 7, ale to repozytorium zawiera wersję 5.5. Ta wersja nie jest już aktualna, ma problemy z wydajnością i nie ma wyszukiwania pełnotekstowego w InnoDB. W chwili pisania tego tekstu aktualna wersja MariaDB to 10.4, więc łącząc się z naszym serwerem Linux za pośrednictwem ssh, najpierw podłączamy repozytorium programistów mariadb.org, a następnie rozpoczynamy instalację serwera bazy danych.
Jestem przyzwyczajony do pracy z plikami za pomocą edytora nano, zainstaluj go przez yum:
mniam zainstaluj nano -y
I otwórz plik repozytorium do edycji:
nano /etc/yum.repos.d/mariadb.repo
I dodaj tam następujące informacje:
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos7-amd64 gpgkey = https: //yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1
Zapisz plik i uruchom instalację:
mniam zainstaluj MariaDB-server MariaDB-client -y
Instalacja jest zakończona, teraz musisz dodać usługę do uruchamiania i uruchomić:
systemctl start mariadb
systemctl enable mariadb
Sprawdź status usługi:
systemctl status mariadb
Usługa Mariadb jest uruchomiona, więc możesz kontynuować konfigurację.
Ochrona i bezpieczeństwo MariaDB
Po zainstalowaniu i uruchomieniu MariaDB możemy przejść do ustawień bezpieczeństwa. Uruchom wbudowany skrypt:
/ usr / bin / mysql_secure_installation
Ten scenariusz szczegółowo opisuje każdy krok i nie będziemy rozwodzić się nad każdym z nich szczegółowo. Najpierw poprosi o hasło roota, ale po pierwszej instalacji go nie ma, dlatego wciskamy enter i na następnym etapie ustawiamy złożone hasło (zależy to od tego, jak bezpieczny będzie twój serwer). Następnie możesz naciskać „enter” do końca wykonywania skryptu, anonimowi użytkownicy, zdalne logowanie roota, a także tabele testowe zostaną usunięte, a uprawnienia zostaną ponownie załadowane.
Aby połączyć się z serwerem mariadb, musisz utworzyć reguły w zaporze Linux za pomocą iptables:
iptables -I WEJŚCIE -p tcp --port 3306 -m stan - stan NOWY, USTANOWIONO -j AKCEPTUJĘ
iptables-save> / etc / sysconfig / iptables
Opcjonalnie możesz zezwolić na połączenia wychodzące z innymi bazami danych MariaDB.
iptables -I WYJŚCIE -p tcp --sport 3306 -m stan - stan USTANOWIONO -j AKCEPTUJ
Sprawdzanie połączenia z serwerem MariaDB
Upewnij się, że instalacja MariaDB zakończyła się powodzeniem.
Połącz się z serwerem bazy danych za pomocą wbudowanego narzędzia mysqladmin:
wersja mysqladmin
Polecenie wygeneruje wynik:
mysqladmin Ver 9.1 Distrib 10.4.7-MariaDB, dla Linuxa na x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab i inne. Wersja serwera 10.4.7-MariaDB wersja protokołu 10 Połączenie Localhost przez gniazdo UNIX Gniazdo UNIX /var/lib/mysql/mysql.sock Czas pracy: 11 min 35 s Wątki: 7 Pytania: 26 Wolne zapytania: 0 Otwiera: 20 Tabele opróżniania: 1 Otwórz zakładkę
Oznacza to, że instalacja MariaDB zakończyła się pomyślnie, baza danych jest uruchomiona..
Możesz połączyć się z konsolą serwera maridb, aby interaktywnie wykonywać polecenia sql:
mysql -u root -p
Ustawienie pliku konfiguracyjnego MariaDB
Zwykle po zainstalowaniu MariaDB dodam do pliku konfiguracyjnego /etc/my.cnf jego standardowa konfiguracja, która działa na większej liczbie serwerów i do tej pory nie było problemów z bazami danych. Oczyść my.cnf i dodaj do niego następujące elementy:
[mysqld] local-infile = 0 datadir = / var / lib / mysql socket = / var / lib / mysql / mysql.sock symbolic-links = 0 max_allowed_packet = 128M sql_mode = "" log-error = / var / log / mysql -error.log # Cache parametry query_cache_size = 16M table_open_cache = 4096 thread_cache_size = 16 key_buffer_size = 8M thread_stack = 256K join_buffer_size = 2M sort_buffer_size = 2M # parametry dla tabel tymczasowych tmpdir = / tmp max_heap_table_size = 32M tmp_table_size = 32M # InnoDB parametry innodb_file_per_table innodb_buffer_pool_size = 32M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_use_native_aio = 0 izolacja transakcji = READ-COMMITTED zestaw znaków serwer = utf8 kolacja-serwer = utf8_unicode_ci init-connect = "USTAW NAMES utfqi_kod_kodu_użytkownika names max_allowed_packet = 128M default-character-set = utf8 [mysql] [isamchk] key_buffer = 16M [mysqld_safe] log-error = / var / log / mariadb / mariadb.log pid-file = / var / run / mariadb / mariadb. pid
W celu ogólnego zrozumienia przeanalizujemy główne parametry pliku konfiguracyjnego my.cnf:
- datadir - katalog do przechowywania plików bazy danych;
- tmpdir - katalog do przechowywania plików tymczasowych;
- pominąć nazwę-rozwiązanie - wyłącza rozpoznawanie DNS;
- max_allowed_packet - maksymalny rozmiar pakietu. Jeśli pola obiektów blob są używane w bazie danych, należy ustawić wartość co najmniej największego pola;
- max_connections - maksymalna liczba otwartych połączeń, parametr określa, ilu klientów może jednocześnie pracować z serwerem bazy danych;
- Sekcja # Parametry pamięci podręcznej - wszystko związane z pamięcią podręczną zapytań; zbyt wysokie ustawienie wartości nie jest zalecane, ponieważ zużycie zasobów przez serwer bazy danych wzrośnie;
- Sekcja # Parametry InnoDB - wszystko związane z tabelami innodb;
- innodb_buffer_pool_size - bufor bufora danych i indeksów, jeśli na serwerze znajduje się 1-2 projekty, ustaw wartość na 70-80% dostępnej pamięci RAM;
- innodb_flush_method - w systemie Linux ustaw wartość na O_DIRECT, spowoduje to wyłączenie buforowania na poziomie systemu operacyjnego;
- innodb_flush_log_at_trx_commit - ten parametr wpływa na szybkość zapisu tabel innoDB. Potraktuj ten parametr poważnie, ustawiając wartość na 0, uzyskasz większą wydajność, ale zwiększa się ryzyko utraty danych. Wolę ustawić wartość na 2, ponieważ nie zauważyłem dużego wzrostu pracy serwera bazy danych, a bezpieczeństwo jest przede wszystkim.
Optymalizacja wydajności i tuning MariaDB
Chcę dodać, że nie musisz polegać konkretnie na moim pliku konfiguracyjnym, wskazane jest wybranie własnych parametrów dla każdego serwera i dla każdego projektu. Polecam używanie skryptów do automatycznego sprawdzania konfiguracji MariaDB, które po wykonaniu dają zalecenia dotyczące optymalizacji serwera.
Zainstaluj skrypt Tuning-Primer.sh:
mniam zainstaluj bc net-tools -y
Pobierz skrypt:
wget https://launchpadlibrarian.net/78745738/tuning-primer.sh
Dajemy prawa:
chmod + x tuning-primer.sh
Wprowadzamy na rynek:
./tuning-primer.sh
Po wykonaniu skrypt dostarczy Ci wszystkich informacji, z którymi musisz się zapoznać. Ważne punkty zostaną podświetlone na czerwono i będziesz musiał je poprawić w miarę możliwości..
Na przykład mój skrypt od razu pokazał, że liczba używanych połączeń jest znacznie mniejsza niż ustawiona:
Ten parametr można zmienić, zarówno w pliku my.cnf, jak i przez konsolę, zmniejszyłem go do 10, a skrypt pochwalił mnie:
Za pomocą takich manipulacji możesz doprowadzić do idealnego działania serwera bazy danych.
Chcę zauważyć, że zalecany ciągły czas działania serwera bazy danych wynosi co najmniej 48 godzin, wtedy informacje będą bardziej dokładne i na tej podstawie będziesz musiał przeprowadzić strojenie.
Do mojego pliku konfiguracyjnego możesz dodać sekcję, aby aktywować dziennik wolnych zapytań, co pomoże ci przeanalizować pracę twoich projektów. W sekcji „mysqld” dodaj:
slow_query_log = 1 # włącz dziennik wolnych zapytań long_query_time = 5 # ustaw czas w sekundach slow_query_log_file = /var/log/slow-query.log # nazwa i ścieżka do pliku dziennika wolnych zapytań
Musisz także utworzyć pliki dziennika dla MariaDB i błędy dziennika powolnych zapytań:
dotknij /var/log/mysql-error.log
dotknij /var/log/slow-query.log
Ponownie uruchamiamy usługę:
systemctl restart mariadb
Możesz wyświetlić dziennik wolnych zapytań, otwierając plik /var/log/slow-query.log lub sprawdzając go w czasie rzeczywistym:
tail -f /var/log/slow-query.log
W ten sposób możesz analizować zapytania do bazy danych swojego projektu i na podstawie tego przeprowadzić audyt.
Po wszelkich zmianach ustawień bazy danych należy sprawdzić konfigurację pod kątem błędów:
Po zakończeniu wszystkich prac związanych z konfigurowaniem baz danych sprawdź status pod kątem błędów, uruchamiając polecenie:
status systemowy mariadb -l
Podstawowe polecenia do pracy w konsoli MariaDB
Oto główne polecenia cli, których administrator najczęściej musi używać podczas pracy w konsoli maridb.
Aby zalogować się lokalnie do konsoli MariaDB, uruchom:
mysql -u root -p
Aby połączyć się zdalnie z serwerem bazy danych MariaDB:
mysql -u root -p -h 10.1.1.20
Przydatne polecenia:
utwórz bazę danych db1;
- utwórz bazę danych o nazwie db1
pokaż bazy danych;
- wyświetlić listę utworzonych baz danych
użyj db1;
- wprowadź bazę danych o nazwie db1
pokaż tabele;
- wyświetl tabele bazy danych, w których jesteśmy
utwórz użytkownika „test” @ „localhost” identyfikowany przez „123456”;
- utwórz test użytkownika i ustaw hasło 123456 (użyj bardziej skomplikowanych haseł)
nadaj wszystkie uprawnienia dla nazwa_bazy_danych. * do 'test' @ 'localhost';
- dać pełne prawa do testu użytkownika
przywilejów;
- zaktualizuj wszystkie uprawnienia
pokaż listę procesów;
- zobacz aktywne połączenia w bazie danych lub możesz użyć polecenia:
pokaż status gdzie „nazwa_zmiennej” = „Połączone wątki”;
Ponadto z konsoli mysql możesz przeglądać lub zmieniać parametry, na przykład:
POKAŻ ZMIENNE JAK 'max_error_count';
Edytuj:
SET max_error_count = 256;
Podsumowując, chciałbym powiedzieć, że konfigurując serwer bazy danych, musisz polegać na projektach, które będą hostowane na tym serwerze. Zasadniczo to, co dotyczy małych projektów, może nie być odpowiednie w przypadku dużych projektów. Spróbuj, eksperymentuj, a najważniejsze jest to, aby zawsze sprawdzać dzienniki. W następnym artykule pokażemy, jak zorganizować wysoką dostępność i zwiększyć wydajność aplikacji za pomocą replikacji między serwerami w MariDB.