Jak zabić wszystkie procesy w bazie MySQL ?
Ostatnio sam miałem taki problem, admina nie było, baza leży i kwiczy, a użytkownicy wciskają F5 ;-)
mysql> SHOW PROCESSLIST; +-----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+------+-----------+------+---------+------+-------+------------------+ | 251 | root | localhost | NULL | Query | 0 | NULL | SHOW PROCESSLIST | +-----+------+-----------+------+---------+------+-------+------------------+ 1 row in set (0.00 sec) |
W przypadku kilku procesu, wystarczy wpisać KILL i podać ID procesu. Jednak sprawa robi się bardziej poważna, gdy procesów jest kilkaset, a użytkownicy cały czas próbują dostać się do serwisu. Taki sposób raczej odpada bo komu by chciało się wpisywać kilkaset razy KILL ID.
Ja na początku próbowałem wykonać takie zapytanie:
USE information_schema; DELETE FROM `PROCESSLIST`; |
Niestety na 99% nikt nie ma takich praw by grzebać w tej bazie danych. Dlatego najprościej napisać taki prosty skrypcik w PHP:
mysql_connect('localhost', 'root', ''); $result = mysql_query('SHOW PROCESSLIST'); while ($row = mysql_fetch_array($result)) { mysql_query('KILL ' + $row['id']); } |
Mam nadzieje że komuś pomoże :)
Preview: