Não é possível ativar o log de consulta geral do MySQL

2

Eu estou tentando descobrir como ligar / desligar o log de consulta geral do MySQL 5.1.48, sem reiniciar o servidor (não é uma opção em produção agora). No meu ambiente de teste, não está funcionando.

De acordo com isto , devo dizer:

set global general_log = 'OFF';

que funciona: o log de consulta geral não tem mais consultas adicionadas a ele. Mas quando eu faço:

set global general_log = 'ON';

reclama que:

ERROR 1146 (42S02): Table 'mysql.general_log' doesn't exist

(true, não funciona), e o log adiciona um cabeçalho de inicialização padrão ("mysqld, Versão: 5.1.48 ..."), e nada mais.

Posso simplesmente ir para outro banco de dados MySQL com a mesma plataforma / versão, copiar seu show create table mysql.general_log; e executá-lo aqui? Isso é seguro, ou isso é sintomático de problemas mais profundos? E eu tenho que fazer isso quando ligo o log de consulta geral? Eu não vejo nada sobre isso no manual.

    
por Ken 23.03.2011 / 19:54

2 respostas

6

A variável global general_log ativa e desativa o logging (desativado por padrão) para o destino de log atualmente selecionado. Se não for especificado nenhum que esteja registrando na tabela mysql.general_log:

If --log-output is omitted or given without a value, the default is FILE. (For MySQL 5.1.6 through 5.1.20, the default logging destination is TABLE.)

Para ativar o registro em arquivo, você terá que reiniciar o MySQL especificando --log-output=FILE (ou o equivalente my.cnf)

Para registrar na tabela, vale a pena observar:

For new installations of MySQL 5.1.6 or higher, the log tables are created during the installation procedure along with the other system tables. If you upgrade MySQL from a release older than 5.1.6 to MySQL 5.1.6 or higher, you must upgrade the system tables after upgrading to make sure that the log tables exist. See Section 4.4.8, “mysql_upgrade — Check Tables for MySQL Upgrade”.

Seção 4.4.8 do manual do MySQL diz:

mysql_upgrade examines all tables in all databases for incompatibilities with the current version of MySQL Server. mysql_upgrade also upgrades the system tables so that you can take advantage of new privileges or capabilities that might have been added.

Vale a pena ler essa parte do manual para garantir que suas tabelas de sistema estejam corretas e na versão correta.

Ah, e não posso enfatizar isso o suficiente:

Faça backup dos seus bancos de dados antes de fazer algo parecido com isto

    
por 23.03.2011 / 20:12
1

Eu criei essa tabela ausente e trabalhei para mim.

use mysql;

CREATE TABLE 'general_log' (
  'event_time' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  'user_host' mediumtext NOT NULL,
  'thread_id' int(11) NOT NULL,
  'server_id' int(10) unsigned NOT NULL,
  'command_type' varchar(64) NOT NULL,
  'argument' mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log' 
    
por 03.04.2014 / 12:01

Tags