Как удалить записи из таблицы mysql.slow_log?

Apr 14, 2016 21:49 · 142 words · 1 minute read mysql logs

В нашем примере используется операционная система 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;
tweet Share