sharpek.net

moje trzy grosze

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 :)

 

Comments

No comments so far.

Leave a Reply

 
(will not be published)
 
 
 
 

Preview: