V nastavení vysoké dostupnosti (HA) zdrojové repliky (HA) MySQL je důležité neustále sledovat stav zdrojového a replikového serveru, abyste mohli odhalit potenciální problémy a podniknout nápravná opatření . V tomto příspěvku na blogu vysvětlujeme některé základní kontroly stavu, které můžete provést na zdrojovém a replikovém uzlu MySQL, abyste zajistili, že vaše nastavení je zdravé. Monitorovací program nebo skript musí upozornit rámec vysoké dostupnosti v případě, že některá z kontrol stavu selže, což umožní rámci vysoké dostupnosti přijmout nápravná opatření k zajištění dostupnosti služby.
Kontrola stavu zdrojového serveru MySQL
Doporučujeme, aby se váš program nebo skripty pro monitorování zdroje MySQL spouštěl v častých intervalech. Za předpokladu, že monitorovací skript běží na stejném serveru jako váš MySQL server, můžete zkontrolovat následující:
-
Ujistěte se, že služba MySQL běží
To lze provést pomocí jednoduchého příkazu jako:
> pgrep mysqld
NEBO
>service mysqld status
-
Ujistěte se, že se můžete připojit k MySQL a provést jednoduchý dotaz
Doporučujeme pro tyto příkazy nastavit krátký časový limit, abyste mohli rychle zjistit, zda MySQL nereaguje. Toho lze dosáhnout například voláním:
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e 'select * from mysql.test’
Nezapomeňte zkontrolovat výstupní hodnotu výše uvedeného příkazu:
Výstupní hodnota=0 ⇒ Úspěch
Hodnota ukončení=1 ⇒ Selhání
Exit-value=124 ⇒ Timeout
Pokud vyprší časový limit příkazu, znamená to, že služba MySQL dostatečně nereaguje. Doporučujeme vám to po nějaké době opakovat, abyste se vyhnuli falešně negativním výsledkům. Pokud výstupní kód indikuje selhání, návratový kód z MySQL nám sdělí důvod selhání. Jedním příkladem selhání je chyba „Too many connections“ z MySQL, ke které dojde, pokud počet připojení k serveru překročí vaši konfigurační hodnotu „max_connections“.
-
Ujistěte se, že zdroj MySQL běží v režimu čtení i zápisu
Můžete použít následující příkaz, abyste zajistili, že zdroj MySQL běží v režimu čtení i zápisu:
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e "SELECT @@global.read_only"
Očekává se, že zdroj bude vždy spuštěn v režimu čtení i zápisu, a proto by hodnota read_only měla být ‚OFF‘.
Tento krok je také možné spojit s krokem 2 a namísto provádění testovacího dotazu „select * from mysql.test můžeme provést dotaz pouze pro čtení hodnotu.
Kontrola stavu replikačního serveru MySQL
Sledování replik MySQL můžete spouštět s nižší frekvencí ve srovnání se zdrojem, protože nezpracovávají zápisy dat. První 3 kroky pro kontrolu stavu repliky mohou být stejné jako u zdroje, kromě toho, že musíme zajistit, aby replika běžela v režimu pouze pro čtení – hodnota proměnné read_only by v kroku 3 měla být „ON“ .
Kromě toho můžeme provést více kontrol repliky, abychom zajistili, že její stav replikace je v pořádku, například:
Replika je nakonfigurována tak, aby se replikovala ze správného zdroje.
Spojení repliky se zdrojem je zdravé.
Replika je schopna použít zdrojové události, které přijala.
Vše výše uvedené je možné zkontrolovat pomocí příkazu ‚show replica status‘. Například:
mysql> show replica status \G; *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: 172.31.17.43 Source_User: repl_user Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin.000001 Read_Source_Log_Pos: 7510 Relay_Log_File: relay-log.000006 Relay_Log_Pos: 414 Relay_Source_Log_File: mysql-bin.000001 Replica_IO_Running: Yes Replica_SQL_Running: Yes ******************Truncated*********************************
Hodnota Source_Host označuje, že zdrojový server je nakonfigurován pro replikaci.
U hodnoty Replica_IO_Running „Ano“ znamená, že se replika připojila ke zdroji a přijímá replikační stream.
U hodnoty Replica_SQL_Running „Ano“ znamená, že je aplikace repliky spuštěna a může použít všechny události přijaté ze zdroje.
V tomto příspěvku na blogu jsme diskutovali o několika jednoduchých kontrolách, které dokážou odhalit, zda existují základní problémy ve vašem zdroji MySQL a replikačních serverech. Obecně platí, že mechanismus detekce selhání v nastavení vysoké dostupnosti je složitý předmět a vyžaduje robustní rámec vysoké dostupnosti, jehož prostřednictvím by mělo být implementováno monitorování stavu. Další informace o podrobnostech našeho rámce vysoké dostupnosti se můžete dozvědět v článku blogu MySQL High Availability Framework Explained – Part I:Introduction.