MariaDB
 sql >> Database >  >> RDS >> MariaDB

Perché il mio database MySQL si è bloccato? Ottieni informazioni dettagliate con il nuovo Freeze Frame di MySQL

Nel caso non l'avessi visto, abbiamo appena rilasciato ClusterControl 1.7.5 con importanti miglioramenti e nuove utili funzionalità. Alcune delle funzionalità includono Cluster Wide Maintenance, supporto per la versione CentOS 8 e Debian 10, supporto per PostgreSQL 12, supporto per MongoDB 4.2 e Percona MongoDB v4.0, nonché il nuovo MySQL Freeze Frame.

Aspetta, ma cos'è un fermo immagine MySQL? È qualcosa di nuovo per MySQL?

Beh, non è qualcosa di nuovo all'interno del kernel MySQL stesso. È una nuova funzionalità aggiunta a ClusterControl 1.7.5 specifica per i database MySQL. Il MySQL Freeze Frame in ClusterControl 1.7.5 tratterà le seguenti cose:

  • Istantanea dello stato di MySQL prima dell'errore del cluster.
  • Istantanea dell'elenco dei processi MySQL prima dell'errore del cluster (disponibile a breve).
  • Ispeziona gli incidenti del cluster nei rapporti operativi o dallo strumento a riga di comando s9s.

Questi sono preziosi insiemi di informazioni che possono aiutare a tracciare i bug e correggere i cluster MySQL/MariaDB quando le cose vanno male. In futuro, stiamo pianificando di includere anche le istantanee dei valori di stato di SHOW ENGINE InnoDB. Quindi, resta sintonizzato sulle nostre versioni future.

Nota che questa funzione è ancora in stato beta, prevediamo di raccogliere più set di dati mentre lavoriamo con i nostri utenti. In questo blog, ti mostreremo come sfruttare questa funzionalità, soprattutto quando hai bisogno di ulteriori informazioni durante la diagnosi del tuo cluster MySQL/MariaDB.

ClusterControl sulla gestione degli errori del cluster

Per gli errori del cluster, ClusterControl non fa nulla a meno che il ripristino automatico (cluster/nodo) non sia abilitato come di seguito:

Una volta abilitato, ClusterControl proverà a recuperare un nodo o ripristinare il cluster tramite visualizzare l'intera topologia del cluster.

Per MySQL, ad esempio in una replica master-slave, deve avere almeno un master attivo in un dato momento, indipendentemente dal numero di slave disponibili. ClusterControl tenta di correggere la topologia almeno una volta per i cluster di replica, ma fornisce più tentativi per la replica multi-master come NDB Cluster e Galera Cluster. Il ripristino del nodo tenta di ripristinare un nodo del database in errore, ad es. quando il processo è stato interrotto (arresto anomalo) o il processo ha subito un OOM (memoria insufficiente). ClusterControl si collegherà al nodo tramite SSH e proverà a far apparire MySQL. In precedenza abbiamo scritto sul blog come ClusterControl esegue il ripristino automatico del database e il failover, quindi visita questo articolo per saperne di più sullo schema per il ripristino automatico di ClusterControl.

Nella versione precedente di ClusterControl <1.7.5, quei tentativi di ripristino attivavano degli allarmi. Ma una cosa che i nostri clienti hanno perso era un rapporto sull'incidente più completo con informazioni sullo stato appena prima dell'errore del cluster. Fino a quando non ci siamo resi conto di questa carenza e abbiamo aggiunto questa funzionalità in ClusterControl 1.7.5. L'abbiamo chiamato "MySQL Freeze Frame". Il MySQL Freeze Frame, al momento della stesura di questo documento, offre un breve riepilogo degli incidenti che hanno portato a modifiche dello stato del cluster appena prima dell'arresto anomalo. Soprattutto, include alla fine del report l'elenco degli host e le loro variabili e valori MySQL Global Status.

In che modo MySQL Freeze Frame differisce dal ripristino automatico?

Il MySQL Freeze Frame non fa parte del ripristino automatico di ClusterControl. Indipendentemente dal fatto che il ripristino automatico sia disabilitato o abilitato, MySQL Freeze Frame farà sempre il suo lavoro fintanto che viene rilevato un errore del cluster o del nodo.

Come funziona MySQL Freeze Frame?

In ClusterControl, ci sono alcuni stati che classifichiamo come diversi tipi di stato del cluster. MySQL Freeze Frame genererà un rapporto sull'incidente quando vengono attivati ​​questi due stati:

  • CLUSTER_DEGRADED
  • CLUSTER_FAILURE

In ClusterControl, un CLUSTER_DEGRADED è quando puoi scrivere su un cluster, ma uno o più nodi sono inattivi. Quando ciò accade, ClusterControl genererà il rapporto sull'incidente.

Per CLUSTER_FAILURE, sebbene la sua nomenclatura si spieghi da sola, è lo stato in cui il tuo cluster non riesce e non è più in grado di elaborare letture o scritture. Allora quello è uno stato CLUSTER_FAILURE. Indipendentemente dal fatto che un processo di ripristino automatico stia tentando di risolvere il problema o che sia disabilitato, ClusterControl genererà il rapporto dell'incidente.

Come si attiva MySQL Freeze Frame?

Il MySQL Freeze Frame di ClusterControl è abilitato per impostazione predefinita e genera un rapporto di incidente solo quando vengono attivati ​​o rilevati gli stati CLUSTER_DEGRADED o CLUSTER_FAILURE. Quindi non c'è bisogno da parte dell'utente di impostare alcuna impostazione di configurazione di ClusterControl, ClusterControl lo farà automaticamente per te.

Individuazione del rapporto sull'incidente del fermo immagine di MySQL

Al momento della stesura di questo articolo, ci sono 4 modi per individuare il rapporto dell'incidente. Questi possono essere trovati eseguendo le seguenti sezioni di seguito.

Utilizzo della scheda Rapporti operativi

I report operativi delle versioni precedenti vengono utilizzati solo per creare, pianificare o elencare i report operativi che sono stati generati dagli utenti. Dalla versione 1.7.5, abbiamo incluso il rapporto sull'incidente generato dalla nostra funzione MySQL Freeze Frame. Vedi l'esempio seguente:

Gli elementi selezionati o gli elementi con Tipo di rapporto ==report_incidente sono l'incidente report generati dalla funzione MySQL Freeze Frame in ClusterControl.

Utilizzo dei rapporti di errore

Selezionando il cluster e generando un report di errore, ovvero seguendo questo processo: