Crash di MySQL per problemi di memoria
Recentemente ho spostato il mio blog su un VPS di Digital Ocean che ha un ottimo rapporto di qualità/prezzo.
Purtroppo capitava saltuariamente che il servizio MySQL andasse in crash rendendo quindi indisponibile il blog: dal browser appariva la scritta:
"Error Establishing a Database Connection"
Dopo varie ricerche ho capito che il problema del crash di MYSQL era dovuto alla poca RAM a mia disposizione ed al fatto che in fase di configurazione del VPS non ho configurato lo SWAP.
Quindi ho aggiunto lo SWAP seguendo up apposito tutorial presente su Digital Ocean.
A questo punto i crash di MySQL non si sono più verificati. In ogni caso, per maggiore sicurezza, ho schedulato un script per monitorare eventuali crash di MySQL.
Ho trovato lo script su un post di uno sviluppatore americano, Nic Raboy, che ovviamente ringrazio.
Lo script non fa altro che verificare se esiste almeno un processo relativo a mysqld, se non ne trova esegue le seguenti semplici azioni:
- invia una mail di avviso
- riavvia il servizio MySQL
Attivare il tutto è semplicissimo. Si crea lo script con il seguente comando:
nano mysql_monitor.sh
si aggiunge il seguente codice:
#!/bin/bash if (( $(ps -ef | grep -v grep | grep mysqld | wc -l) <= 0 )) then echo "MySQL non sta funzionando e verra' riavviato!" | mail -s "MySQL crash" tua_mail@tuodominio.com service mysql restart fi
a questo punto bisogna rendere eseguibile lo script
chmod 744 mysql_monitor.sh
Infine bisogna schedularlo in crontab tramite il comando
crontab -e
aggiungendo la seguente riga:
*/5 * * * * /root/mysql_monitor.sh
in questo caso lo script verrà eseguito ogni 5 minuti.
Ovviamente questo script può essere utilizzato anche per monitorare qualunque altro processo.