Backend databáze ovlivňuje aplikaci, což pak může ovlivnit výkon organizace. Když k tomu dojde, odpovědní mají tendenci chtít rychlou opravu. Existuje mnoho různých cest ke zlepšení výkonu v MySQL. Jako velmi populární volba pro mnoho organizací je docela běžné najít instalaci MySQL s výchozí konfigurací. To však nemusí být vhodné pro vaši pracovní zátěž a potřeby nastavení.
V tomto blogu vám pomůžeme lépe porozumět zátěži vaší databáze a věcem, které ji mohou poškodit. Znalost toho, jak používat omezené zdroje, je nezbytná pro každého, kdo spravuje databázi, zvláště pokud provozujete svůj produkční systém na databázi MySQL.
Aby databáze fungovala podle očekávání, začneme s bezplatnými monitorovacími nástroji MySQL. Poté se podíváme na související parametry MySQL, které můžete vyladit, abyste vylepšili instanci databáze. Podíváme se také na indexování jako na faktor řízení výkonu databáze.
Abychom mohli dosáhnout optimálního využití hardwarových prostředků, podíváme se na optimalizaci jádra a další důležitá nastavení operačního systému. Nakonec se podíváme na trendy nastavení založená na replikaci MySQL a na to, jak ji lze prozkoumat z hlediska zpoždění výkonu.
Identifikace problémů s výkonem MySQL
Tato analýza vám pomůže lépe porozumět stavu a výkonu vaší databáze. Níže uvedené nástroje vám pomohou zachytit a porozumět každé transakci, což vám umožní udržet si přehled o jejím výkonu a spotřebě zdrojů.
PMM (Percona Monitoring and Management)
Nástroj Percona Monitoring and Management je open source kolekce nástrojů věnovaných databázím MySQL, MongoDB a MariaDB (on-premise nebo v cloudu). PPM je zdarma k použití a je založen na dobře známé časové řadě DB Grafana a Prometheus. Poskytuje důkladnou časovou analýzu pro MySQL. Nabízí předkonfigurované řídicí panely, které pomáhají porozumět zátěži vaší databáze.
PMM používá model klient/server. Budete si muset stáhnout a nainstalovat klienta i server. Pro server můžete použít Docker Container. Je to stejně snadné jako stažení obrazu dockeru serveru PMM, vytvoření kontejneru a spuštění PMM.
Vytáhnout obrázek serveru PMM
docker pull percona/pmm-server:2
2: Pulling from percona/pmm-server
ab5ef0e58194: Downloading 2.141MB/75.78MB
cbbdeab9a179: Downloading 2.668MB/400.5MB
Vytvořit kontejner PMM
docker create \
-v /srv \
--name pmm-data \
percona/pmm-server:2 /bin/true
Spustit kontejner
docker run -d \
-p 80:80 \
-p 443:443 \
--volumes-from pmm-data \
--name pmm-server \
--restart always \
percona/pmm-server:2
Můžete také zkontrolovat, jak to vypadá bez instalace. Demo PMM je k dispozici zde.
Dalším nástrojem, který je součástí sady nástrojů PMM, je Query Analytics (QAN). Nástroj QAN zůstává na vrcholu doby provádění dotazů. Můžete dokonce získat podrobnosti o SQL dotazech. Poskytuje také historický pohled na různé parametry, které jsou kritické pro optimální výkon databázového serveru MySQL. To často pomáhá pochopit, zda nějaké změny v kódu mohou poškodit váš výkon. Například byl zaveden nový kód bez vašeho vědomí. Jednoduché použití by bylo zobrazení aktuálních SQL dotazů a zvýraznění problémů, které vám pomohou zlepšit výkon vaší databáze.
PMM nabízí aktuální a historickou viditelnost výkonu databáze MySQL. Dashboardy lze upravit tak, aby vyhovovaly vašim specifickým požadavkům. Můžete dokonce rozbalit konkrétní panel a najít požadované informace o minulé události.
Bezplatné monitorování databáze pomocí ClusterControl
ClusterControl poskytuje monitorování celé infrastruktury databáze v reálném čase. Podporuje různé databázové systémy počínaje MySQL, MariaDB, PerconaDB, MySQL NDB Cluster, Galera Cluster (jak Percona, tak MariaDB), MongoDB, PostgreSQL a TimescaleDB. Moduly monitorování a nasazení jsou k použití zdarma.
ClusterControl se skládá z několika modulů. V bezplatné edici ClusterControl Community Edition můžeme použít:
Poradci pro výkon nabízejí konkrétní rady, jak řešit problémy s databázemi a servery, např. jako je výkon, zabezpečení, správa protokolů, konfigurace a plánování kapacity. Provozní zprávy lze použít k zajištění souladu ve stovkách instancí. Monitorování však není řízení. ClusterControl má funkce, jako je správa zálohování, automatické obnovení/přepnutí při selhání, nasazení/škálování, postupné upgrady, zabezpečení/šifrování, správa nástroje pro vyrovnávání zatížení atd.
Monitorování a poradci
ClusterControl Community Edition nabízí bezplatné monitorování databáze, které poskytuje jednotný pohled na všechna vaše nasazení napříč datovými centry a umožňuje proniknout do jednotlivých uzlů. Podobně jako u PMM najdeme dashboardy založené na datech v reálném čase. Jde o to vědět, co se nyní děje, s metrikami s vysokým rozlišením pro lepší přesnost, předem nakonfigurovanými řídicími panely a širokou škálou oznamovacích služeb třetích stran pro upozornění.
Místní a cloudové systémy lze monitorovat a spravovat z jednoho místa . Inteligentní kontroly stavu jsou implementovány pro distribuované topologie, například detekce dělení sítě pomocí využití pohledu nástroje pro vyrovnávání zatížení na databázové uzly.
ClusterControl Workload Analytics v jedné z monitorovacích komponent, které vám mohou snadno pomoci sledovat vaše databázové aktivity. Poskytuje přehlednost transakcí/dotazů z aplikací. Výjimky výkonu se nikdy neočekávají, ale vyskytují se a v moři dat je snadno přehlédnete. Zjištění odlehlých hodnot získá všechny dotazy, které se náhle začnou vykonávat mnohem pomaleji než obvykle. Sleduje klouzavý průměr a standardní odchylku pro doby provádění dotazu a detekuje/upozorňuje, když rozdíl mezi hodnotou překročí průměr o dvě standardní odchylky.
Jak můžeme vidět na obrázku níže, dokázali jsme zachytit některé dotazy, které mezi jedním dnem mají tendenci změnit čas provádění v konkrétní čas.
Chcete-li nainstalovat ClusterControl, klikněte sem a stáhněte si instalační skript. Instalační skript se postará o nezbytné kroky instalace.
Měli byste se také podívat na ukázku ClusterControl, abyste ji viděli v akci.
Můžete také získat obrázek dockeru pomocí ClusterControl.
$ docker pull severalnines/clustercontrol
Další informace naleznete v tomto článku.
Indexování databáze MySQL
Bez indexu má spuštění stejného dotazu za následek vyhledání potřebných dat v každém řádku. Vytvořením indexu pro pole v tabulce se vytvoří další datová struktura, což je hodnota pole a ukazatel na záznam, ke kterému se vztahuje. Jinými slovy, indexování vytváří zkratku s mnohem rychlejšími časy dotazů u rozsáhlých tabulek. Bez indexu musí MySQL začít prvním řádkem a poté číst celou tabulku, aby nalezla relevantní řádky.
Obecně řečeno, indexování funguje nejlépe u těch sloupců, které jsou předmětem klauzulí WHERE ve vašich běžně prováděných dotazech.
Tabulky mohou mít více indexů. Správa indexů bude nevyhnutelně vyžadovat možnost vypsat existující indexy v tabulce. Syntaxe pro zobrazení indexu je uvedena níže.
Chcete-li zkontrolovat indexy v tabulce MySQL, spusťte:
SHOW INDEX FROM table_name;
Protože indexy se používají pouze k urychlení hledání odpovídajících polí v záznamech, je logické, že indexování polí používaných pouze pro výstup by bylo pouze plýtváním místa na disku. Dalším vedlejším účinkem je, že indexy mohou prodlužovat operace vkládání nebo mazání, a proto je třeba se vyhnout, když to není potřeba.
Výměna databáze MySQL
Na serverech, kde je MySQL jedinou spuštěnou službou, je dobrým zvykem nastavit vm.swapiness =1. Výchozí nastavení je 60, což pro databázový systém není vhodné.
vi /etc/sysctl.conf
vm.swappiness = 1
Transparentní obrovské stránky
Pokud používáte MySQL na RedHat, ujistěte se, že je zakázáno Transparent Huge Pages.
To lze zkontrolovat příkazem:
cat /proc/sys/vm/nr_hugepages
0
(0 znamená, že průhledné velké stránky jsou zakázány.)
MySQL I/O Scheduler
Ve většině distribucí by plánovače I/O noop nebo deadline měly být standardně povoleny. Pro kontrolu spusťte
cat /sys/block/sdb/queue/scheduler
Možnosti souborového systému MySQL
Doporučuje se používat žurnálované souborové systémy jako xfs, ext4 nebo btrfs. MySQL funguje dobře se všemi z nich a rozdíly pravděpodobně přijdou s podporovanou maximální velikostí souboru.
- XFS (maximální velikost souborového systému 8EB, maximální velikost souboru 8EB)
- XT4 (maximální velikost souborového systému 8EB, maximální velikost souboru 16TB)
- BTRFS (maximální velikost souborového systému 16EB, maximální velikost souboru 16EB)
Výchozí nastavení systému souborů by mělo platit v pořádku.
Démon NTP
Dobrým osvědčeným postupem je nainstalovat démona časového serveru NTP na databázové servery. Použijte jeden z následujících systémových příkazů.
#Red Hat
yum install ntp
#Debian
sudo apt-get install ntp
Závěr
To je vše pro první část. V příštím článku budeme pokračovat nastavením operačních systémů proměnných MySQL a užitečnými dotazy ke shromažďování stavu výkonu databáze.