Passa al contenuto principale

Debug di MySQL con i binlog

In alcuni casi MySQL si blocca in modo apparentemente casuale e continuo.

Quando succede, non riesci a effettuare il dump dei database perché, se MySQL si arresta, anche l’export si interrompe.

Puoi eseguire il debug usando i binary log (binlog) di MySQL.

Di seguito trovi i passaggi da seguire in caso di riavvii continui di MySQL.

Abilita i binlog​

Modifica il file /etc/mysql/my.cnf e verifica che siano presenti queste configurazioni:

log_bin= /var/log/mysql/mysql-bin.log
expire_logs_days= 10
max_binlog_size= 100M

Poi riavvia MySQL.

Analizza i binlog​

Vai in /var/log/mysql/ e leggi i messaggi con il comando:

mysqlbinlog mysql-bin.0000**

All’interno del file trovi informazioni importanti:

use `ilmiodatabaseproblematico`/*!*/;
DELETE FROM `ilmiodatabaseproblematico`.`tys8r_finder_tokens`

Da qui identifichi il database che crea problemi e la query incriminata. Quindi accedi al database da console e replica i comandi, così da verificare che siano effettivamente queste chiamate a creare il blocco.

Limita gli accessi e risolvi​

Per prima cosa impedisci che qualcuno acceda al database, in modo da ristabilire la stabilità del sistema: puoi farlo disabilitando i permessi di accesso al database.

Successivamente tenta di riparare il database, oppure eliminalo e ripristina un backup.