W konfiguracji wysokiej dostępności (HA) źródła repliki MySQL ważne jest ciągłe monitorowanie kondycji serwerów źródłowych i replik, aby można było wykryć potencjalne problemy i podjąć działania naprawcze . W tym poście na blogu wyjaśniamy niektóre podstawowe kontrole kondycji, które można wykonać na węzłach źródłowych i replikach MySQL, aby upewnić się, że konfiguracja jest zdrowa. Program lub skrypt monitorujący musi ostrzegać platformę wysokiej dostępności w przypadku niepowodzenia dowolnej kontroli kondycji, umożliwiając ramom wysokiej dostępności podjęcie działań naprawczych w celu zapewnienia dostępności usługi.
Kontrole kondycji serwera źródłowego MySQL
Zalecamy, aby program lub skrypty do monitorowania źródła MySQL były uruchamiane w częstych odstępach czasu. Zakładając, że skrypt monitorujący działa na tym samym serwerze co serwer MySQL, możesz sprawdzić następujące elementy:
-
Upewnij się, że usługa MySQL działa
Można to zrobić za pomocą prostego polecenia, takiego jak:
> pgrep mysqld
LUB
>service mysqld status
-
Upewnij się, że możesz połączyć się z MySQL i wykonać proste zapytanie
Zaleca się ustawienie krótkiego limitu czasu dla tych poleceń, aby można było szybko wykryć, czy MySQL nie odpowiada. Można to osiągnąć za pomocą połączenia takiego jak:
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e 'select * from mysql.test’
Pamiętaj, aby sprawdzić wartość wyjścia powyższego polecenia:
wartość wyjścia=0 ⇒ Sukces
Exit value=1 ⇒ Błąd
Exit-value=124 ⇒ Limit czasu
Jeśli komenda wygaśnie, oznacza to, że usługa MySQL nie reaguje wystarczająco. Radzimy spróbować ponownie po pewnym czasie, aby uniknąć fałszywie negatywnych wyników. Jeśli kod wyjścia wskazuje na awarię, kod powrotu z MySQL poinformuje nas o przyczynie niepowodzenia. Jednym z przykładów niepowodzenia jest błąd „Zbyt wiele połączeń” z MySQL, który ma miejsce, gdy liczba połączeń z serwerem przekracza wartość konfiguracyjną „max_connections”.
-
Upewnij się, że źródło MySQL działa w trybie do odczytu i zapisu
Możesz użyć następującego polecenia, aby upewnić się, że źródło MySQL działa w trybie do odczytu i zapisu:
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e "SELECT @@global.read_only"
Oczekuje się, że źródło zawsze będzie działać w trybie do odczytu i zapisu, dlatego wartość read_only powinna być „WYŁĄCZONA”.
Możliwe jest również skojarzenie tego kroku z krokiem 2 i zamiast wykonywania zapytania testowego 'wybierz * z mysql.test, możemy po prostu wykonać zapytanie, aby uzyskać tylko do odczytu wartość.
Kontrole kondycji serwera MySQL Replica
Możesz uruchomić monitorowanie swoich replik MySQL z mniejszą częstotliwością w porównaniu do źródła, ponieważ nie obsługują one zapisu danych. Pierwsze 3 kroki kontroli stanu repliki mogą być takie same jak w przypadku źródła, z wyjątkiem tego, że musimy upewnić się, że replika działa w trybie tylko do odczytu – wartość zmiennej tylko do odczytu powinna być „WŁ.” w kroku 3. .
Ponadto możemy przeprowadzić więcej kontroli repliki, aby upewnić się, że jej stan replikacji jest prawidłowy, na przykład:
Replika jest skonfigurowana do replikacji z właściwego źródła.
Połączenie repliki ze źródłem jest sprawne.
Replika może zastosować otrzymane zdarzenia źródłowe.
Możliwe jest sprawdzenie wszystkich powyższych za pomocą polecenia „pokaż status repliki”. Na przykład:
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*********************************
Wartość Source_Host wskazuje, że serwer źródłowy jest skonfigurowany do replikacji.
W przypadku wartości Replica_IO_Running „Tak” wskazuje, że replika połączyła się ze źródłem i odbiera strumień replikacji.
W przypadku wartości Replica_SQL_Running „Tak” wskazuje, że aplikacja repliki działa i może zastosować wszystkie zdarzenia odebrane ze źródła.
W tym poście na blogu omówiliśmy kilka prostych testów, które mogą wykryć, czy występują podstawowe problemy na serwerach źródłowych i replikach MySQL. Ogólnie rzecz biorąc, mechanizm wykrywania awarii w konfiguracji wysokiej dostępności jest złożonym tematem i wymaga solidnej struktury wysokiej dostępności, za pomocą której należy wdrożyć monitorowanie kontroli stanu. Możesz dowiedzieć się więcej o szczegółach naszej struktury wysokiej dostępności w naszym Objaśnieniu platformy MySQL High Availability Framework – Część I:Wprowadzenie na blogu.