Come utilizzare il comando Mysqlcheck in MySQL per riparare i database?
Mysqlcheck è un comando utilizzato per la manutenzione delle tabelle. Con questo comando è possibile controllare le tabelle di un database, riparare il database, ottimizzare le prestazioni delle tabelle o analizzare le tabelle.
Va notato che questo comando blocca le tabelle. Inoltre, il server MySQL deve essere in funzione per poter utilizzare il comando.
Il seguente comando visualizza lo stato del server in Windows:
sc query mysqlXX
Qui XX è la versione di MySQL.
Il comando fornisce le seguenti informazioni:
- Nome servizio è il nome del servizio.
- Il tipo WIN32_OWN_PROCESS significa che questo servizio non dipende da altri servizi.
- Lo stato del servizio. In questo caso è in FUNZIONAMENTO. Potrebbe anche essere STOPPED o PAUSED.
- Se il WIN32_EXIT_CODE è 0, significa che il servizio è stato terminato senza problemi.
- CHECKPOINT uguale a 0 significa che non ci sono checkpoint. Questo valore è per uso interno.
- WAIT_HINT stima il tempo in ms necessario al servizio per terminare l’operazione.
Vediamo alcuni esempi di esecuzione del comando.
Nella cartella bin di MySQL, eseguite questo comando nella riga di comando:
Mysqlcheck -repair stellardb
Questo comando ripara il database chiamato stellardb.
Il comando seguente comprime la connessione utilizzata dal comando.
mysqlcheck -r -compress stellardb
Nota: Le opzioni -repair e -r sono identiche.
Nell’esempio seguente, il database viene riparato automaticamente se necessario. L’opzione di riparazione automatica controlla lo stato delle tabelle. Se ci sono errori, vengono riparate.
mysqlcheck -r -auto-riparazione stellardb
L’opzione seguente viene utilizzata per controllare solo le tabelle che non sono state chiuse correttamente.
mysqlcheck -fast stellardb
Se si desidera eseguire il debug, è possibile utilizzare l’opzione -debug. Nell’esempio seguente, viene creato un registro nel file c:\log\debug.log.
mysqlcheck -debug=d:t:o,c:\log\debug.log stellardb
Nell’esempio precedente:
- d significa debug.
- t significa che il timestamp deve essere incluso nel file di log.
- o significa che si accede a un nome di file.
Infine, c’è l’opzione “Analizza”, con la quale è possibile controllare le statistiche e la distribuzione delle chiavi di una tabella. L’esempio seguente mostra come utilizzare questa opzione.
mysqlcheck -analizza stellardb
Una soluzione alternativa
A volte non è sufficiente utilizzare il comando mysqlcheck. È necessario utilizzare altri strumenti per riparare il database o i database MySQL danneggiati. Uno di questi strumenti è Stellar Repair for MySQL.
Per riparare il database, è necessario arrestare il servizio MySQL e fare una copia della cartella con il database.
È possibile arrestare i servizi utilizzando i servizi di Windows.
Digitare Servizi nella barra di ricerca di Windows e fare clic sull’applicazione Servizi. Nella pagina Servizi, fare clic con il tasto destro del mouse sul servizio e selezionare Arresta.
Dopo l’arresto, cercare i database. Normalmente sono memorizzati nella seguente posizione:
C:\ProgrammiDatiMySQLMySQL Server X.XDati
X.X è il numero di versione.
Copiare la cartella dei dati in un’altra posizione. È possibile farlo manualmente in Windows o tramite la riga di comando:
xcopy /s /e /i “C:\ProgramDataMySQL\MySQL Server 8.0\Data” “c:\backup\data”
Una volta copiati i dati, aprire Stellar Repair for MySQL, fare clic sul pulsante Sfoglia e selezionare la cartella nella directory c:\backup\data.
Selezionate il/i database da riparare e fate clic sul pulsante Ripara.
Premere l’icona Salva per salvare gli oggetti.
È possibile salvare e ripristinare le informazioni in un database o esportarle in vari formati come Excel, HTML e CSV.
Conclusione
In questo articolo abbiamo discusso le varie opzioni che il comando mysqlcheck offre per controllare e riparare il database MySQL. Se il comando non è in grado di riparare il database, è possibile utilizzare Stellar Repair for MySQL. Si tratta di un potente software per riparare i database MySQL danneggiati e recuperare tutti gli oggetti del database.
Was this article helpful?