2011-03-26 19 views
120

He leído que el servidor Mysql crea un archivo de registro donde guarda un registro de todas las actividades, como cuándo y qué consultas ejecutar.¿Cómo ver los archivos de registro en MySQL?

¿Alguien puede decirme dónde existe en mi sistema? ¿Cómo puedo leerlo?

Básicamente, necesito una copia de seguridad de la base de datos con diferente entrada [copia de seguridad entre dos fechas], así que creo que necesito utilizar archivo de registro aquí, es por eso que quiero hacerlo ...

Creo que este el registro debe asegurarse de alguna manera porque se puede registrar información confidencial como nombres de usuario y contraseña [si alguna consulta lo requiere]; entonces, ¿puede ser asegurado, no fácilmente visible?

Tengo acceso de root al sistema, ¿cómo puedo ver el registro?

Cuando intento abrir /var/log/mysql.log, está vacío.

Ésta es mi fichero de configuración:

[client] 
port  = 3306 
socket  = /var/run/mysqld/mysqld.sock 

[mysqld_safe] 
socket  = /var/run/mysqld/mysqld.sock 
nice  = 0 

[mysqld] 
log = /var/log/mysql/mysql.log 
binlog-do-db=zero 



user  = mysql 
socket  = /var/run/mysqld/mysqld.sock 
port  = 3306 
basedir  = /usr 
datadir  = /var/lib/mysql 
tmpdir  = /tmp 
skip-external-locking 

bind-address  = 127.0.0.1 
# 
# * Fine Tuning 
# 
key_buffer  = 16M 
max_allowed_packet = 16M 
thread_stack  = 192K 
thread_cache_size  = 8 

general_log_file  = /var/log/mysql/mysql.log 
general_log    = 1 

Respuesta

97

Aquí es una forma sencilla para habilitarlos. En mysql tenemos que ver a menudo 3 registros que se necesitan principalmente durante el desarrollo de cualquier proyecto.

  • The Error Log. Contiene información sobre los errores que ocurren mientras el servidor se está ejecutando (también inicio y parada del servidor)

  • The General Query Log. Este es un registro general de lo que está haciendo mysqld (conectar, desconectar, consultar)

  • The Slow Query Log. Consistst consiste en declaraciones SQL "lentas" (como indicado por su nombre).

De forma predeterminada, no se habilitan los archivos de registro en MYSQL. Todos los errores se mostrarán en registro del sistema (/ var/log/syslog)

para permitirles simplemente siga los pasos siguientes

Paso 1:. Ir a este archivo (/etc/mysql/conf.d /mysqld_safe_syslog.cnf) y eliminar o comentar esa línea.

Paso 2: Ir a MySQL conf (/etc/mysql/my.cnf) y añadir siguientes líneas

Para activar error de registro de complemento siguiente

[mysqld_safe] 
log_error=/var/log/mysql/mysql_error.log 

[mysqld] 
log_error=/var/log/mysql/mysql_error.log 

Para habilitar generales consulta agregar agregar siguiente

general_log_file  = /var/log/mysql/mysql.log 
general_log    = 1 

Para habilitar registro de consultas lentas añadir siguiente

log_slow_queries  = /var/log/mysql/mysql-slow.log 
long_query_time = 2 
log-queries-not-using-indexes 

Paso 3: guardar el archivo y reiniciar mysql utilizando los comandos siguientes

service mysql restart 

Para habilitar los registros en tiempo de ejecución, en la cuenta para el cliente MySQL (mysql -u root -p) y dar:

SET GLOBAL general_log = 'ON'; 
SET GLOBAL slow_query_log = 'ON'; 

Por último, una cosa que me gustaría mencionar aquí es Lo leí de un blog. Gracias. Esto funciona para mi.

Haga clic here a visitar el blog

+1

Creo que "olvidó" escribir algunas cosas. El paso 1 está incompleto y la frase falta el enlace 'blog' – Athafoud

+0

Hola, @Athafoud, por favor encuentra el enlace ahora. – loyola

+2

El artículo del blog enlazado menciona la modificación de '/ etc/mysql/conf.d/mysqld_safe_syslog.cnf' solo si se ha habilitado el registro de errores. Sin embargo, esta respuesta tal como está escrita actualmente parece sugerirlo para cualquier registro. – Melebius

40

Hay que activar el registro de consultas en MySQL.

1.Edit /etc/my.cnf

 
[mysqld] 
log=/tmp/mysql.log 

2.Vuelva a activar el equipo o el servicio mysqld

 
service mysqld restart 

3.open phpmyadmin/cualquier aplicación que utilice la consola mysql/mysql y ejecutar una consulta

/tmp/mysql.log 4.cat (debería ver la consulta)

+0

significas para decir que necesito para abrir el archivo my.cnf primero y luego hay que configurar el camino de donde i Necesito almacenar los archivos de registro < – Arjun

+0

sí y luego reiniciar mysql – danidacar

+0

hice esto todo, hago un archivo en el escritorio con el nombre a.log y establecí la ruta como dijiste, luego ejecuto alguna consulta, todavía a.log es emply, i quiero mostrarle mi archivo my.cnf, pero ¿cómo? – Arjun

7

Desde el MySQ L manual de referencia:

De forma predeterminada, todos los archivos de registro se crean en el directorio de datos.

Verificar /var/lib/mysql carpeta.

+1

pero no puedo abrir la carpeta mysql. Creo que la ruta del archivo de registro es /var/log/mysql/mysql.log pero no puedo abrirlo, ¿qué debo hacer? – Arjun

+1

necesita ser root – danidacar

+2

cómo me hago root, creo que soy el propietario, instalo el servidor, configuro la contraseña, por lo que debería ser el propietario, todavía está bloqueado para mí, ¿cómo puedo abrirlo? – Arjun

8

En mi MySQL archivo /my.cnf (He instalado LAMP)/etc/me encontré siguiente, en líneas [mysqld] comentó sección:

general_log_file  = /var/log/mysql/mysql.log 
general_log    = 1 

tuve que abrir este archivo como súper usuario, con el terminal:

sudo geany /etc/mysql/my.cnf 

(yo prefiero usar Geany en lugar de gedit o VI, no importa)

acabo de ellas sin comentar & guardar el archivo a continuación, MySQL restatt con

sudo service mysql restart 

ejecutar varias consultas, abierto por encima de archivo (/var/log/mysql/mysql.log) y el registro fue allí :)

+0

si bien puede funcionar para usted, no lo hace para mí, incluso excepciones importantes como "Índice dañado" no se registran. Solo problemas de arranque y apagado. – user3338098

+0

¿podría por favor editar su respuesta? Creo que es /etc/mysql/my.cnf –

+0

@ Hoai-ThuVuong sí, gracias! :) – Line

1
shell> mysqladmin flush-logs 


shell> mv host_name.err-old backup-directory 
+7

Bienvenido a stackoverflow. Considere dar una explicación más detallada de cómo el código en su respuesta es relevante para la pregunta del OP. Además, el código debe tener una sangría de 4 espacios para permitir el formateo adecuado. –

19

Los registros de MySQL están determinados por las variables globales, tales como:

  • log_error para el registro de mensajes de error;
  • general_log_file para el archivo de registro de consulta general (si está habilitado por general_log);
  • slow_query_log_file para el archivo de registro de consulta lenta (si está habilitado por slow_query_log);

Para ver la configuración y su ubicación, ejecute este comando shell:

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log 

Para imprimir el valor de registro de errores, ejecute este comando en el terminal:

mysql -e "SELECT @@GLOBAL.log_error" 

Para leer contenido del archivo de registro de errores en tiempo real, ejecute:

sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error") 

Nota: Hit control - C cuando termine

Cuando está habilitado el registro general, trate de:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)") 

Para utilizar mysql con la contraseña de acceso, añadir -p o -pMYPASS parámetro . Para mantenerlo recordado, puede configurarlo en su ~/.my.cnf, p.

[client] 
user=root 
password=root 

Así será recordado para la próxima vez.

+1

O si necesita ingresar una contraseña, intente esto: mysql -p -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log –

+0

¡Excelente respuesta, gracias! – Federer

1

Además de las respuestas anteriores, puede pasar parámetros de línea de comandos al proceso mysqld para las opciones de registro en lugar de editar manualmente su archivo conf. Por ejemplo, para habilitar el registro general y specifiy un archivo:

mysqld --general-log --general-log-file=/var/log/mysql.general.log 

Confirmando otras respuestas anteriores, mysqld --help --verbose le da los valores del archivo de configuración (por lo que se ejecuta con las opciones de línea de comandos-registro general es FALSO); mientras que mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log da: sintaxis

general_log  ON 
general_log_file  /var/log/mysql.general.log 

uso ligeramente más compacto para el registro de errores:

mysqld --general-log --general-log-file=/var/log/mysql.general.log --log-error=/var/log/mysql.error.log 
3

Para complementar loyola 's Respuesta Es importante mencionar que a partir de MySQL 5.1 log_slow_queries es obsoleto y se sustituye con slow-query-log

Usando log_slow_queries hará que su service mysql restart o service mysql start para quebrar

Cuestiones relacionadas