Jak monitorovat databáze MySQL?
Provozní viditelnost je nutností v každém produkčním prostředí. Je velmi důležité, abyste byli schopni identifikovat jakékoli problémy co nejdříve, jinak můžete skončit ve vážných potížích, protože nezjištěný problém může způsobit vážné narušení služby nebo výpadek. MySQL Enterprise Monitor je jedním z nejstarších monitorovacích produktů pro MySQL na trhu a je k dispozici jako součást komerční smlouvy o předplatném pro podniky od společnosti Oracle. V tomto příspěvku na blogu se podíváme na MySQL Enterprise Monitor a druh náhledu, který poskytuje. do MySQL.
Instalace
Za prvé, MySQL Enterprise Monitor je součástí MySQL Enterprise Edition, komerční nabídky společnosti Oracle. Dodává se v několika verzích balíčků pro různé operační systémy. Instalace na Windows 10 (systém, na kterém jsme testovali) je do značné míry přímočará. MySQL Enterprise Monitor je nakonfigurován a budou nainstalovány některé přibalené služby (MySQL, Tomcat). K nástroji lze přistupovat prostřednictvím prohlížeče.
Počáteční konfigurace
Nejprve musíte přidat hostitele, které chcete monitorovat.
Můžete přidat jednotlivé hostitele nebo jejich dávku. Dialogové okno vypadá stejně, až na to, že při hromadném přidávání můžete předat seznam serverů oddělených čárkami.
Nebudeme zabíhat do podrobností, ale stručně řečeno musíte definovat, ze kterého hostitele mají být instance MySQL monitorovány – obvykle to bude hostitel, na který jste nainstalovali MySQL Enterprise Monitor. Můžete také nastavit agenty na svých instancích MySQL, v takovém případě budou moci shromažďovat data i pro hostitele, nejen metriky MySQL. Poté je potřeba definovat, jak se ke sledované instanci dostanete (IP adresa/název hostitele, uživatel a heslo). MySQL Enterprise Monitor pak vytvoří další uživatele pro úkoly, jako je monitorování, které nevyžaduje oprávnění superuživatele. Pokud chcete, můžete také nakonfigurovat komunikaci SSL, pokud to instance MySQL používá, můžete také definovat určité časové limity a zda má být replikační topologie automaticky detekována nebo ne.
Je také důležité mít na paměti, že MySQL Enterprise Monitor silně spoléhá na Performance Schema – ujistěte se, že vaše databáze mají povoleno PS, jinak nebudete těžit z významné části funkcí MySQL Enterprise Monitor.
Monitorování
Jakmile jsou monitorované instance MySQL nakonfigurovány, můžete začít prohlížet shromážděná data. Část Přehled vám poskytuje krátké shrnutí některých nejdůležitějších metrik v MySQL. Data jsou agregována a usnadňují nalezení neočekávaných vzorců a následné prozkoumání toho, co se stalo.
Karta Události poskytuje přehled různých problémů nebo událostí hlášených nástrojem MySQL Enterprise Monitor a jeho poradci. Můžete kliknout na kteroukoli z událostí a přečíst si, o čem to všechno je, a také doporučené kroky:
V tomto konkrétním případě se zdá, že některé dotazy provádějí úplné prohledávání tabulek a doporučuje se to dále prozkoumat, aby bylo možné takové dotazy přesně určit a zjistit, zda je lze optimalizovat.
Další příklad, zde vidíme, že mezipaměť tabulky není nakonfigurována optimálním způsobem. Můžete vidět vysvětlení problému, rady a doporučené akce, které je třeba provést na základě tohoto upozornění.
Metriky
Na této kartě můžeme vidět data pro více metrik MySQL, které jsou užitečné pro pochopení stavu systému.
Grafy časových řad
Snímky obrazovky výše jsou pouze příkladem, existuje mnoho dalších grafů, na které se můžete podívat.
Je možné použít filtrování:můžete definovat, které grafy chcete vidět, můžete také definovat, jaké časové období se má zobrazovat. Kromě toho můžete jen označit část grafu a buď ji přiblížit, nebo otevřít Query Analyzer s daty z tohoto konkrétního času:
Tuto funkci projdeme později, ale ve zkratce vám umožní analyzovat dotazy, jak se jejich výkon měnil v čase a některé příklady dotazů.
Tabulkové statistiky
Tato karta nám poskytuje přehled o statistikách tabulky:jak vypadal provoz (načtené, vložené, aktualizované, smazané řádky) a jak vypadala latence u všech operací s řádky.
Uživatelské statistiky
V této záložce MySQL Enterprise Monitor prezentuje data o uživatelích - provedené příkazy, latence, skenování tabulek, I/O latence, připojení, využití paměti. Tato data by měla poskytnout docela dobrý přehled o tom, který uživatel je zodpovědný za zatížení databáze. Může to být velmi užitečné zejména v prostředích s více uživateli, kde neexistuje žádný hlavní zdroj provozu.
I/O databázového souboru
Databázový soubor I/O vysvětluje, jak je zatížení I/O distribuováno mezi soubory v databázi. Celkový počet I/O operací, latence, kolik čtení a zápisů bylo provedeno v daném souboru.
Využití paměti
Využití paměti ukazuje struktury paměti v MySQL, které pomáhají vytvořit lepší obrázek o využití paměti v databázi. Tato data se mohou hodit v případě problémů s pamětí – je snadné sledovat, kde je nárůst největší, a v případě potřeby redukovat příslušná nastavení. Může také významně pomoci při diagnostice potenciálních úniků paměti.
Pool vyrovnávací paměti InnoDB
Tato karta v MySQL Enterprise Monitor poskytuje uživateli přehled o struktuře využití vyrovnávacích pamětí. Které tabulky jsou ukládány do mezipaměti, kolik špinavých stránek je potřeba vyprázdnit?
Dotazy
Pro každého uživatele MySQL je nesmírně důležité porozumět zátěži, kterou vytvářejí dotazy. Které dotazy jsou nejproblematičtější? Jak se chovají v čase? Výkon lze měřit více způsoby, ale je zcela běžné, že předvídatelný, stabilní výkon je důležitější než špičkový výkon. Pokud je doba odezvy přijatelná, budou se uživatelům líbit předvídatelné výsledky lépe než poněkud rychlejší odezva (nízká latence), která může někdy výrazně zpomalit server. Proto je velmi cenné vidět, jak se dotaz chová v čase, a určit ty, které chování není konzistentní.
MySQL Enterprise Monitor taková data rozhodně poskytuje. Na seznamu dotazů můžete snadno vidět, jak se latence měnila v čase. Rovná čára je dobrá, hroty - ne tolik. To znamená, že takový dotaz může být nutné dále prozkoumat. Když na něj kliknete, MySQL Enterprise Monitor vám o něm poskytne další údaje.
Jak vidíte, existují nějaké statistické údaje o konkrétním typu dotazu, můžete také vidět, jak se měnila latence v čase. Ve spodní části vidíte několik příkladů příkazů v čase a můžete porovnat dobu jejich provedení.
Když kliknete na jeden z nich, uvidíte celý dotaz, který byl v danou chvíli proveden. Může být užitečné v případě dotazů, kde se výkon liší v závislosti na tom, jaké argumenty byly použity v případě WHERE (například WHERE some_column =‚nějaká hodnota‘ a hodnoty v tomto sloupci nejsou rovnoměrně rozloženy v řádcích).
Replikace
V prostředí replikace MySQL je zpoždění něco, s čím se musíte naučit zacházet. Důležité je sledovat to – jak moc otroci zaostávají? Jak často se to děje? S těmito informacemi je možné pokusit se určit problém a lépe pochopit, jaké dotazy jej způsobují. Poté se můžete pokusit implementovat některá vylepšení, jako je například vícevláknová replikace, a sledovat, zda změny zlepšily výkon replikace a snížily zpoždění na přijatelnou úroveň.
Jak se MySQL Enterprise Monitor liší od ClusterControl
Jak jsme uvedli, MySQL Enterprise Monitor je součástí placené MySQL Enterprise Edition. Pro všechny uživatele komunity MySQL, MariaDB nebo Percona Server není MySQL Enterprise Edition k dispozici. ClusterControl poskytuje přístup k monitorování MySQL ve své bezplatné komunitní verzi. Pokud jde o monitorování serverů a dotazů, existuje mnoho podobností.
ClusterControl vám poskytuje přístup k metrikám MySQL shromážděným a uloženým v databázi časových řad Prometheus. Můžete snadno sledovat četné metriky zpřístupněné v ClusterControl.
ClusterControl také přichází se seznamem poradců, které lze použít ke sledování stavu a výkonu databáze. Můžete také snadno vytvářet nové poradce pomocí Developer Studio:
Pokud vás zajímá výkon dotazů, ClusterControl pro vás poskytuje Query Monitor – provedené dotazy se shromažďují a jejich výkon se porovnává, což uživateli usnadňuje určit, které dotazy využívají nejvíce CPU v databázi.
Můžete vidět statistické údaje o dotazech - provedení, odeslané a zkontrolované řádky, doba provedení. Můžete také zkontrolovat plán vysvětlení pro konkrétní typ dotazu.
Monitorování perzistence polyglotů
Jedním velkým rozdílem je schopnost monitorovat všechny hlavní varianty ekosystému MySQL (Oracle MySQL, MariaDB a Percona Server), různé technologie clusterů (NDB Cluster, Group Replication, asynchronní replikace a Galera Cluster), load balancery/proxy (HAProxy, Keepalived, Maxscale, ProxySQL) a také další open source databáze (PostgreSQL a MongoDB).
Automatizace a správa
ClusterControl také poskytuje funkce pro nasazení jednotlivých instancí nebo clusterů on-prem nebo v cloudu (AWS, GCE a Azure), stejně jako funkce, jako je správa zálohování, automatické převzetí služeb při selhání a obnova/oprava, postupné upgrady, správa clusteru pro replikaci nebo nastavení clusteru. , škálování atd.
To je pro dnešek vše lidi. Pokud jste pracovali s MySQL Enterprise Monitor a chtěli byste něco přidat, udělejte to prosím v sekci komentářů.