ver usar tipos tiempo real optimizar evaluar consultas consulta con avanzadas mysql logging

tipos - usar indices en consultas mysql



Registrar todas las consultas en mysql (9)

¿Es posible que active el registro de auditoría en mi base de datos mysql?

Básicamente, quiero monitorear todas las consultas durante una hora y volcar el registro en un archivo.


( Nota : para mysql-5.6 + esto no funcionará. Hay una solución que se aplica a mysql-5.6 + si se desplaza hacia abajo o hace clic aquí .)

Si no desea o no puede reiniciar el servidor MySQL, puede proceder así en su servidor en ejecución:

  • Crea tus tablas de registro en la base de datos mysql

CREATE TABLE `slow_log` ( `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `user_host` mediumtext NOT NULL, `query_time` time NOT NULL, `lock_time` time NOT NULL, `rows_sent` int(11) NOT NULL, `rows_examined` int(11) NOT NULL, `db` varchar(512) NOT NULL, `last_insert_id` int(11) NOT NULL, `insert_id` int(11) NOT NULL, `server_id` int(10) unsigned NOT NULL, `sql_text` mediumtext NOT NULL, `thread_id` bigint(21) unsigned NOT NULL ) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT=''Slow log''

CREATE TABLE `general_log` ( `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `user_host` mediumtext NOT NULL, `thread_id` bigint(21) unsigned 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''

  • Habilitar el registro de consultas en la base de datos

SET global general_log = 1; SET global log_output = ''table'';

  • Ver el registro

select * from mysql.general_log

  • Deshabilitar el registro de consultas en la base de datos

SET global general_log = 0;


Además de lo que encontré aquí, ejecutar la siguiente era la forma más sencilla de volcar consultas en un archivo de registro sin reiniciar

SET global log_output = ''FILE''; SET global general_log_file=''/Applications/MAMP/logs/mysql_general.log''; SET global general_log = 1;

se puede apagar con

SET global general_log = 0;


Debe tener en cuenta que el inicio de sesión en mysql realmente afecta el rendimiento, pero puede ser una buena idea.

Por lo general, lo dejo en el servidor dev (excepto cuando nos vuelve locos :))


En caso de usar AWS RDS MYSQL, guía paso a paso aquí.

Cuando se configura como salida de ''archivo'', puede ver el registro directamente desde la Consola de "Registro" de AWS RDS.

AWS RDS MYSQL Logging


Forma rápida de habilitar el registro de consultas generales de MySQL sin reiniciar.

mysql> SET GLOBAL general_log = ''ON''; mysql> SET GLOBAL general_log_file = ''/var/www/nanhe/log/all.log'';

He instalado mysql a través de homebrew, versión mysql: mysql Ver 14.14 Distrib 5.7.15, para osx10.11 (x86_64) usando el envoltorio EditLine


Habilitar el registro para la tabla

mysql> SET GLOBAL general_log = ''ON''; mysql> SET global log_output = ''table'';

Ver registro por consulta de selección

select * from mysql.general_log


Inicia mysql con la opción --log:

mysqld --log=log_file_name

o coloque lo siguiente en su archivo my.cnf :

log = log_file_name

Cualquiera de los dos registrará todas las consultas en log_file_name.

También puede registrar solo consultas lentas utilizando la --log-slow-queries lugar de --log . De forma predeterminada, las consultas que demoran 10 segundos o más se consideran lentas, puede cambiar esto configurando long_query_time en el número de segundos que una consulta debe tardar en ejecutarse antes de long_query_time sesión.


La mejor respuesta no funciona en mysql 5.6+. Use esto en su lugar:

[mysqld] general_log = on general_log_file=/usr/log/general.log

en su archivo my.cnf / my.ini

Ubuntu / Debian : /etc/mysql/my.cnf
Windows : c: / ProgramData / MySQL / MySQL Server 5.x
wamp : c: / wamp / bin / mysql / mysqlx.yz / my.ini
xampp : c: / xampp / mysql / bin / my.ini.


Para el registro, general_log y slow_log se introdujeron en 5.1.6:

http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html

5.2.1. Selección de destinos de salida de registro de consulta general y de consulta lenta

A partir de MySQL 5.1.6, MySQL Server proporciona un control flexible sobre el destino de la salida al registro de consultas general y al registro de consultas lentas, si esos registros están habilitados. Los posibles destinos para las entradas de registro son los archivos de registro o las tablas general_log y slow_log en la base de datos mysql