samedi 3 mars 2012

Seguimiento de consultas con MySQL mysqlsniffer en Ubuntu

Usted tiene un servidor de base de datos de producción, y no se puede habilitar el registro de consultas ... Entonces, ¿cómo ve usted las consultas que se ejecutan en la base de datos?

La respuesta: usar un sniffer de red modificado para analizar fuera de los paquetes de MySQL y descifrado. Vas a tener que hacer un poco de la compilación, pero valdrá la pena. Tenga en cuenta que esto no suele ser lo mejor para las conexiones locales, a pesar de que invitamos a probar.

En primer lugar, es necesario instalar libpcap-dev, que es la biblioteca de desarrollo que permite que una aplicación para rastrear paquetes de red.

sudo apt-get install libpcap-dev

Ahora vamos a crear un directorio, descargar el código fuente y compilarlo

mkdir mysqlsniffer

cd mysqlsniffer

wget hackmysql.com / code / mysqlsniffer.tgz

tar xvfz mysqlsniffer.tgz

gcc-O2-lpcap-o mysqlsniffer mysqlsniffer.c packet_handlers.c misc.c

En este punto, tenemos una nueva y brillante ejecutable llamado mysqlsniffer en nuestro directorio de origen. Puede copiarlo donde quieras (en algún lugar del camino, sería útil)

Para ejecutar mysqlsniffer, es necesario especificar la interfaz de red que MySQL está escuchando. Para mí, es eth0.

sudo / ruta / a / mysqlsniffer eth0

Un montón de cosas comienza a volar por los ... vamos a filtrar un poco más por lo que sólo puede obtener las consultas y no todo el exceso de datos.

$ Sudo / ruta / a / mysqlsniffer-no-mysql-hdrs eth0 | grep COM_QUERY

192.168.73.1.2622> servidor: COM_QUERY: SELECT @ @ sql_mode
192.168.73.1.2622> servidor: COM_QUERY: sql_mode SET SESSION = "
192.168.73.1.2622> servidor: COM_QUERY: SET NAMES utf8
192.168.73.1.1636> servidor: COM_QUERY: SELECT @ @ sql_mode
192.168.73.1.1636> servidor: COM_QUERY:. SHOW FULL COLUMNS FROM `db2842_howto` `wp_users

Ah, ahora estamos ... todo tipo de información de la consulta, sin tener que reiniciar MySQL.

Aquí están todas las opciones de la orden:

Uso: mysqlsniffer [OPCIONES] INTERFAZ

OPTIONS:
-Port N Escuche para MySQL en el puerto número N (por defecto 3306)
-Verbose Muestra información de los paquetes adicionales
-Tcp-ctrl Mostrar control de paquetes TCP (SYN, FIN, RST, ACK)
-Net-hdrs Mostrar IP principales y los valores de la cabecera TCP
-No-mysql-IDH No mostrar cabecera MySQL (ID paquete y longitud)
Mostrar el estado del Estado
-V40 servidor MySQL versión 4.0
-Dump volcado de todos los paquetes en hexadecimal
-Help Muestra este

El código fuente original y más información en:
http://goo.gl/eWzrN

Si se están ejecutando en un servidor de desarrollo, sería más fácil simplemente activar el registro de la consulta.

Aucun commentaire:

Enregistrer un commentaire