Riparare le tabelle di MySQL con mysqlcheck

03 gennaio 2013

Può capitare che le tabelle di un database MySQL si corrompano, maggiormente soggette ad incidenti sono le tabelle classiche di tipo MyISAM. In questi casi un utile strumento per il controllo e la riparazione è il programma mysqlcheck, che può essere usato mentre il server è in funzione. Ad esempio per fare un controllo ed eventuale riparazione di tutte le tabelle del database miodatabase:
[root]# mysqlcheck miodatabase -uroot -pmiapass
Enter password: 
miodatabase.tabella1
warning  : 3 clients are using or haven't closed the table properly
status   : OK
miodatabase.tabella2                         OK
miodatabase.tabella3                         OK
Per limitarsi ad una singola tabella:
[root]# mysqlcheck miodatabase tabella1 -uroot -pmiapass
Per un controllo a tappeto su tutti i database (anche se una simile operazione va' valutata con attenzione: il tempo impiegato può essere molto lungo se le tabelle sono di grandi dimensioni):
[root]# mysqlcheck --all-databases -uroot -pmiapass
Il comando mysqlcheck nelle sue operazioni utilizza le istruzioni SQL CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE. Come già accennato esegue un read lock delle tabelle potendo così agire anche mentre MySQL sta funzionando differentemente dal comando myisamchk.​