35 votos

¿Cómo activar el registro de MySQL?

Estoy ejecutando MySQL 5.0.45 en OS X 10.6.1 y no puedo conseguir que MySQL registre nada. Estoy depurando una aplicación y necesito ver todas las consultas y errores.

He añadido al etc/my.cnf:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

Utilicé sudo para crear dos archivos de registro, establecer los permisos a 644, y luego reiniciar MySQL.

Me refería a ¿Dónde está mi registro de mysql en OS X? para solucionar los problemas.

Corriendo:

ps auxww|grep [m]ysqld

Devuelve:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

Y corriendo:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

Devuelve:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

Corriendo:

mysql> show variables like '%log%';

Devuelve:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

¿Alguna ayuda sobre cómo puedo hacer que MySQL registre?

22voto

randy melder Puntos 554

Aunque hayas utilizado chmod 644 Asegúrese de que mysql es el propietario de los registros.

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

A continuación, reinicie mysqld.

Luego, ingresa a mysql y ejecuta:

mysql> show variables like '%log%';

Mira los valores de general_log , general_log_file , log , log_error etc.

Enciéndalos cuando sea necesario y ejecute mysqladmin flushlogs según sea necesario.

0 votos

Ahora se está registrando. Debe haber sido el descuido de la propiedad. Aunque, vea mi pregunta editada para los resultados de la consulta "mostrar variables como '%log%'". MySQL está registrando en /var/log/mysql.log, así que ¿por qué no se muestra?

14voto

gigawatt Puntos 111

Para habilitar los archivos de registro, debe asegurarse de que una o más de las siguientes directivas estén en el archivo [mysqld] del archivo de configuración principal de su servidor mysql ( /etc/my.cnf en el mío):

[mysqld]
log-bin
log
log-error
log-slow-queries

Los registros se crearán, por defecto, en el mismo directorio de datos que contiene los propios subdirectorios de la base de datos (normalmente /var/lib/mysql ) y los nombres de los archivos de registro son, por defecto, el nombre del host seguido de un sufijo que coincide con los nombres de las directivas anteriores (por ejemplo, -bin, -slow-queries, etc).

Para mantener sus registros en una ruta diferente, o utilizando diferentes nombres de archivo, especifique el nombre base siguiendo el log= y cualquier ruta y nombre de archivo que desee, por ejemplo

[mysqld]
log-bin=/var/log/mysql-bin.log
general-log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
slow-query-log=/var/log/mysql-slowquery.log

Es necesario reiniciar mysqld para que estos cambios surtan efecto.

0 votos

Gran respuesta, pero log y log-slow-queries están en desuso. Utilice general-log y slow-query-log en su lugar.

5voto

user3338098 Puntos 11

Las respuestas anteriores estaban desfasadas. Puedes mirar el archivo de configuración en /etc/my.cnf o en Windows ./mysql/my.ini .

En el [mysqld] sección añadir

log_bin
general_log
log_error

La documentación de Windows indica que los registros se almacenan en ProgramData/MySQL/MySQL Server 5.6/ . Ignóralo porque es una mentira.

Además, la recomendación log se deprecia y da lugar al error

ambiguous option '--log' (log-bin, log_slave_updates)

estar conectado ./mysql/data/host.err y el demonio muriendo silenciosamente. La configuración correcta es general-log .

También log-slow-queries no es válido y provoca el error

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

Así que asegúrese de mantenerse alejado de eso también.

0 votos

Gracias. No pude iniciar el servidor con el log= opción y no pude averiguar por qué. Por fin alguien con una respuesta. general-log

0 votos

log-slow-queries ha quedado obsoleto. Utilice slow-query-log en su lugar.

2voto

Lucia Puntos 128

Entra en la línea de comandos de mysql con super privilegios y realiza:

SET GLOBAL general\_log\_file = '/var/log/mysql/mysql.log'; 

En mi caso, ¡no importaba si ya tenía esta variable con el mismo valor! Además, cambié los permisos y el propietario del archivo como se menciona en los otros posts.

2voto

Ray Puntos 31

Prueba con diferentes configuraciones de registro en my.cnf. En mi caso necesitaba:

general_log = on

general_log_file=/var/log/mysql/mysql.log

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: