Я пытаюсь выяснить, как стать включения - выключения журнал общего запроса MySQL 5.1.48, не перезапуская сервер (не опция в производстве прямо сейчас). В моей тестовой среде это не работает.
Согласно этому, я должен смочь сказать:
set global general_log = 'OFF';
который действительно работает: журнал общего запроса больше не имеет запросы, добавленные к нему. Но когда я делаю:
set global general_log = 'ON';
это жалуется что:
ERROR 1146 (42S02): Table 'mysql.general_log' doesn't exist
(верный, это не делает), и журнал добавляет стандартный заголовок запуска ("mysqld, Версия: 5.1.48..."), и затем ничто иное.
Я могу просто перейти к другой базе данных MySQL с той же платформой/версией, скопировать show create table mysql.general_log;
, и выполненный это здесь? Это безопасно, или действительно ли это является симптоматическим для более глубоких проблем? И я, как предполагается, должен сделать это, когда я включаю журнал общего запроса? Я ничего не вижу об этом в руководстве.
Глобальная general_log переменная становится входящей в систему и прочь (прочь по умолчанию) в настоящее время выбираемому месту назначения входа. Если ни один не указан, который регистрируется к mysql.general_log таблице:
Если - произведенный журналом опущен или дан без значения, значением по умолчанию является ФАЙЛ. (Для MySQL 5.1.6 до 5.1.20, местом назначения входа значения по умолчанию является ТАБЛИЦА.)
Для превращения, вхождение в систему для регистрации Вас должно будет перезапустить определение MySQL --log-output=FILE
(или my.cnf эквивалент)
Для входа для представления в виде таблицы следующего стоит принять во внимание:
Для новых установок MySQL 5.1.6 или выше, таблицы журнала составлены во время процесса установки наряду с другими системными таблицами. При обновлении MySQL от выпуска, более старого, чем 5.1.6 к MySQL 5.1.6 или выше необходимо обновить системные таблицы после обновления, чтобы удостовериться, что таблицы журнала существуют. Посмотрите Раздел 4.4.8, “mysql_upgrade — Таблицы Проверки для MySQL Upgrade”.
Разделите 4.4.8 из руководства MySQL, говорит:
mysql_upgrade исследует все таблицы во всех базах данных для несовместимостей с текущей версией MySQL Server. mysql_upgrade также обновляет системные таблицы так, чтобы можно было использовать в своих интересах новые полномочия или возможности, которые, возможно, были добавлены.
Стоит прочитать ту часть руководства, чтобы гарантировать, что Ваши системные таблицы все корректны и в правильной версии.
О, и я не могу подчеркнуть это достаточно раз:
Создайте резервную копию своих баз данных прежде, чем сделать что-либо как это