Очистить общую таблицу журналов MySQL, безопасно ли это?

I сервер, над которым я работаю, общая таблица журналов mysql занимает около 200 ГБ пространства, что огромно. Итак, я планирую очистить его:

TRUNCATE table mysql.general_log

Все в порядке? Может ли это вызвать какую-либо проблему? Я обеспокоен тем, что сервер является живым и большим приложением. Спасибо.

Ответ 1

Это определенно вызовет проблему, если она не отключена, а затем вы усекаете. Если вы обрежете, пока он включен. Truncate заблокирует таблицу, если таблица огромна, так как механизм mysql.general_log является либо CSV, либо MyISAM, в то время как вновь созданные записи будут пытаться записываться в общую таблицу журнала, вызывая блокировку для всего соединения, и в конечном итоге получат "Too Many". Подключение". Так что для безопасности делайте так

mysql> SET GLOBAL general_log=OFF;
mysql> TRUNCATE table mysql.general_log;
mysql> SET GLOBAL general_log=ON;

Ответ 2

Это не вызовет проблем, но вы потеряете все старые записи журнала, поэтому совет Ravindra, приведенный выше, хорош.

Вы можете сделать резервную копию с помощью:

mysqldump -p --lock_tables = false mysql general_log > genlog.sql

Вам нужно иметь общий журнал все время? Обычно я включаю его только тогда, когда я устраняю проблемы с производительностью. MySQL регистрирует ВСЕ (клиент подключается, отключается и оператор EVERY). В большинстве систем журналы очень быстрые. Для этого также есть некоторые накладные расходы.