Jak monitorować bazy danych MySQL?
Widoczność operacyjna jest koniecznością w każdym środowisku produkcyjnym. Bardzo ważne jest, aby móc jak najszybciej zidentyfikować wszelkie problemy, w przeciwnym razie możesz mieć poważne problemy, ponieważ niewykryty problem może spowodować poważne zakłócenia lub przestój usługi. MySQL Enterprise Monitor jest jednym z najstarszych produktów monitorujących MySQL na rynku i jest dostępny w ramach komercyjnej umowy subskrypcji dla przedsiębiorstw z Oracle. W tym wpisie na blogu przyjrzymy się MySQL Enterprise Monitor i rodzajowi wglądu, jaki zapewnia w MySQL.
Instalacja
Przede wszystkim MySQL Enterprise Monitor jest częścią MySQL Enterprise Edition, komercyjnej oferty firmy Oracle. Występuje w wielu wersjach pakietów dla różnych systemów operacyjnych. Instalacja w systemie Windows 10 (system, na którym testowaliśmy) jest dość prosta. MySQL Enterprise Monitor jest skonfigurowany i zostaną zainstalowane niektóre powiązane usługi (MySQL, Tomcat). Dostęp do narzędzia można uzyskać przez przeglądarkę.
Konfiguracja początkowa
Przede wszystkim musisz dodać hosty, które chcesz monitorować.
Możesz dodać pojedyncze hosty lub ich partię. Okno dialogowe wygląda tak samo, z wyjątkiem tego, że podczas dodawania zbiorczego można przekazać listę serwerów oddzielonych przecinkami.
Nie będziemy wchodzić w szczegóły, ale w skrócie musisz zdefiniować, z którego hosta mają być monitorowane instancje MySQL - zazwyczaj będzie to host, na którym zainstalowałeś MySQL Enterprise Monitor. Możesz także skonfigurować agentów na swoich instancjach MySQL, w takim przypadku będą mogli zbierać dane również dla hosta, a nie tylko metryki MySQL. Następnie należy zdefiniować sposób dotarcia do monitorowanej instancji (adres IP/nazwa hosta, użytkownik i hasło). MySQL Enterprise Monitor utworzy wtedy dodatkowych użytkowników do zadań takich jak monitorowanie, które nie wymagają uprawnień administratora. Jeśli chcesz, możesz również skonfigurować komunikację SSL, jeśli tego używa instancja MySQL, możesz również zdefiniować pewne limity czasu i czy topologia replikacji powinna być automatycznie wykrywana, czy nie.
Należy również pamiętać, że MySQL Enterprise Monitor w dużym stopniu opiera się na schemacie wydajności – upewnij się, że Twoje bazy danych mają włączony PS, w przeciwnym razie nie będziesz korzystać ze znacznej części funkcji MySQL Enterprise Monitor.
Monitorowanie
Po skonfigurowaniu monitorowanych instancji MySQL możesz zacząć przeglądać zebrane dane. Sekcja Przegląd zawiera krótkie podsumowanie niektórych najważniejszych metryk w MySQL. Dane są agregowane, co ułatwia znalezienie nieoczekiwanych wzorców, a następnie zagłębienie się w to, co się stało.
Zakładka Zdarzenia zawiera przegląd różnych problemów lub zdarzeń zgłoszonych przez MySQL Enterprise Monitor i jego doradców. Możesz kliknąć dowolne z wydarzeń i przeczytać, o co w tym wszystkim chodzi, a także zalecane czynności:
W tym konkretnym przypadku wydaje się, że niektóre zapytania wykonują pełne skanowanie tabel i zaleca się dokładniejsze zbadanie tego, aby wskazać takie zapytania i sprawdzić, czy można je zoptymalizować.
Inny przykład, tutaj widzimy, że pamięć podręczna tabeli nie jest skonfigurowana w optymalny sposób. Możesz zobaczyć wyjaśnienie problemu, porady i zalecane działania, które należy podjąć w oparciu o ten alert.
Dane
W tej zakładce możemy zobaczyć dane dla wielu metryk MySQL, które są pomocne w zrozumieniu stanu systemu.
Wykresy serii czasowych
Powyższe zrzuty ekranu to tylko przykład, jest o wiele więcej wykresów do obejrzenia.
Możliwe jest zastosowanie filtrowania:możesz określić, które wykresy chcesz oglądać, możesz również określić, jaki przedział czasowy ma być pokazywany. Ponadto możesz po prostu zaznaczyć część wykresu i albo powiększyć go, albo otworzyć Analizator zapytań z danymi z tego konkretnego czasu:
Omówimy tę funkcję później, ale w skrócie pozwala ona analizować zapytania, jak zmieniała się ich wydajność w czasie i kilka przykładowych zapytań.
Statystyki tabeli
Ta karta daje nam wgląd w statystyki tabeli:jak wyglądał ruch (pobierane, wstawiane, aktualizowane, usuwane) i jak wyglądały opóźnienia dla wszystkich operacji na wierszach.
Statystyki użytkownika
W tej zakładce MySQL Enterprise Monitor prezentuje dane o użytkownikach - wykonane oświadczenia, opóźnienia, skany tabel, opóźnienia I/O, połączenia, wykorzystanie pamięci. Dane te powinny dać dość dobry wgląd w to, który użytkownik jest odpowiedzialny za obciążenie bazy danych. Może to być bardzo przydatne, szczególnie w środowiskach wielu użytkowników, gdzie nie ma jednego głównego źródła ruchu.
We/wy pliku bazy danych
We/wy pliku bazy danych wyjaśnia, w jaki sposób obciążenie we/wy jest rozłożone na pliki w bazie danych. Całkowita liczba operacji I/O, opóźnienie, ile odczytów i zapisów zostało wykonanych na danym pliku.
Wykorzystanie pamięci
Użycie pamięci pokazuje struktury pamięci w MySQL, które pomagają zbudować lepszy obraz wykorzystania pamięci w bazie danych. Dane te mogą się przydać w przypadku problemów z pamięcią - łatwo jest wyśledzić, gdzie wzrost jest największy i w razie potrzeby zmniejszyć odpowiednie ustawienia. Może również znacznie pomóc w diagnozowaniu potencjalnych wycieków pamięci.
Pula buforów InnoDB
Ta zakładka w MySQL Enterprise Monitor daje użytkownikowi wgląd w strukturę wykorzystania puli buforów. Które tabele są buforowane, ile brudnych stron jest do opróżnienia?
Zapytania
Dla każdego użytkownika MySQL niezwykle ważne jest zrozumienie obciążenia, jakie tworzą zapytania. Które zapytania są najbardziej problematyczne? Jak zachowują się w czasie? Wydajność można mierzyć na wiele sposobów, ale dość często zdarza się, że przewidywalna, stabilna wydajność jest ważniejsza niż najwyższa wydajność. Dopóki czas odpowiedzi jest akceptowalny, przewidywalne wyniki będą bardziej podobać się użytkownikom niż nieco szybsza odpowiedź (niskie opóźnienie), która może czasami znacznie spowolnić serwer. Dlatego bardzo cenne jest obserwowanie, jak zapytanie zachowuje się w czasie i wskazywanie tych, które nie są spójne.
MySQL Enterprise Monitor zdecydowanie dostarcza takie dane. Na liście zapytań możesz łatwo zobaczyć, jak zmieniało się opóźnienie w czasie. Płaska linia jest dobra, kolce - nie za bardzo. Oznacza to, że takie zapytanie może wymagać dalszego zbadania. Po kliknięciu MySQL Enterprise Monitor wyświetli więcej danych na jego temat.
Jak widać, istnieje kilka danych statystycznych dotyczących konkretnego typu zapytania, można również zobaczyć, jak zmieniło się opóźnienie w czasie. Na dole możesz zobaczyć przykładowe oświadczenia w czasie i możesz porównać ich czas wykonania.
Po kliknięciu jednego z nich zobaczysz pełne zapytanie, które zostało wykonane w tym momencie. Może to być przydatne w przypadku zapytań, w których wydajność różni się w zależności od tego, jakie argumenty zostały użyte w przypadku WHERE (na przykład WHERE jakaś_kolumna =„jakaś wartość”, a wartości w tej kolumnie nie są równomiernie rozłożone w wierszach).
Replikacja
W środowisku replikacji MySQL opóźnienie to coś, z czym musisz się nauczyć. Ważne jest, aby to śledzić - jak bardzo pozostają w tyle niewolnicy? Jak często to się dzieje? Dzięki tym informacjom można spróbować zidentyfikować problem i lepiej zrozumieć, jakie zapytania go powodują. Następnie możesz spróbować zaimplementować pewne ulepszenia, takie jak na przykład replikacja wielowątkowa, i śledzić, czy zmiany poprawiły wydajność replikacji i zmniejszyły opóźnienie do akceptowalnego poziomu.
Czym MySQL Enterprise Monitor różni się od ClusterControl
Jak już wspomnieliśmy, MySQL Enterprise Monitor jest częścią płatnej wersji MySQL Enterprise Edition. Dla wszystkich użytkowników MySQL Community, MariaDB lub Percona Server MySQL Enterprise Edition nie jest dostępna. ClusterControl zapewnia dostęp do monitoringu MySQL w darmowej wersji Community. Pod względem monitorowania serwerów i zapytań istnieje wiele podobieństw.
ClusterControl zapewnia dostęp do metryk MySQL zebranych i przechowywanych w bazie danych szeregów czasowych Prometheus. Możesz łatwo śledzić liczne metryki udostępnione w ClusterControl.
ClusterControl zawiera również listę doradców, których można używać do śledzenia stanu i wydajności bazy danych. Możesz także łatwo tworzyć nowych doradców za pomocą Developer Studio:
Jeśli interesuje Cię wydajność zapytań, ClusterControl zapewnia monitor zapytań — wykonane zapytania są gromadzone i porównywane, co ułatwia użytkownikowi określenie, które zapytania wykorzystują najwięcej procesora w bazie danych.
Możesz zobaczyć dane statystyczne dotyczące zapytań - wykonania, wiersze wysłane i zbadane, czas wykonania. Możesz również sprawdzić plan wyjaśnienia dla konkretnego typu zapytania.
Monitorowanie trwałości poliglotów
Jedną dużą różnicą jest możliwość monitorowania wszystkich głównych wariantów ekosystemu MySQL (Oracle MySQL, MariaDB i Percona Server), różnych technologii klastrowania (klaster NDB, replikacja grupowa, replikacja asynchroniczna i klaster Galera), systemy równoważenia obciążenia/proxy (HAProxy, Keepalived, Maxscale, ProxySQL), a także inne bazy danych typu open source (PostgreSQL i MongoDB).
Automatyzacja i zarządzanie
ClusterControl zapewnia również funkcjonalność wdrażania pojedynczych instancji lub klastrów lokalnie lub w chmurze (AWS, GCE i Azure), a także funkcje takie jak zarządzanie kopiami zapasowymi, automatyczne przełączanie awaryjne i przywracanie/naprawa, aktualizacje kroczące, zarządzanie klastrami na potrzeby replikacji lub konfiguracje klastrów , skalowanie itp.
To wszystko dla dzisiejszych ludzi. Jeśli pracowałeś z MySQL Enterprise Monitor i chciałbyś coś dodać, zrób to w sekcji komentarzy.