Как удалить записи из таблицы mysql.slow_log?
Apr 14, 2016 21:49 · 142 words · 1 minute read
В нашем примере используется операционная система Debian Wheezy, версия MySQL-сервера 5.5. Давайте разберемся, как удалить записи из таблицы mysql.slow_log!
При попытке удалить записи из таблицы slow_log
базы mysql
получаем сообщение об ошибке:
#1556 - You can't use locks with log tables
Для решения это проблемы подключаемся к MySQL с привилегиями суперпользователя, отключаем лог медленных запросов, переименовываем таблицу, удаляем из нее записи, переименовываем обратно и включаем лог:
mysql -uroot -p<СЛОЖНЫЙ_ПАРОЛЬ>
и выполняем следующие запросы:
use mysql;
SET GLOBAL slow_log='OFF';
RENAME TABLE slow_log TO slow_log_temp;
DELETE FROM `slow_log_temp` WHERE `start_time` < DATE(NOW());;
RENAME TABLE slow_log_temp TO slow_log;
SET GLOBAL slow_log='ON';
Примечание. Данное решение справедливо и для таблицы general_log
базы mysql
, только вместо SET GLOBAL slow_log='OFF'/'ON'
используйте SET GLOBAL general_log='OFF'/'ON'
.
Если же вы используете Amazon rds, то удалить записи из таблицы mysql.slow_log
значительно проще — достаточно воспользоваться встроенной процедурой rotate
:
CALL mysql.rds_rotate_slow_log;
DELETE FROM mysql.slow_log_backup;