¿Cómo monitorear bases de datos MySQL?
La visibilidad operativa es imprescindible en cualquier entorno de producción. Es crucial poder identificar cualquier problema lo antes posible, de lo contrario, puede terminar en serios problemas, ya que un problema no detectado puede causar una interrupción grave del servicio o un tiempo de inactividad. MySQL Enterprise Monitor es uno de los productos de monitoreo más antiguos para MySQL en el mercado y está disponible como parte de un acuerdo de suscripción empresarial comercial de Oracle. En esta publicación de blog, analizaremos MySQL Enterprise Monitor y el tipo de información que brinda. en MySQL.
Instalación
En primer lugar, MySQL Enterprise Monitor es parte de MySQL Enterprise Edition, una oferta comercial de Oracle. Viene en múltiples versiones de paquetes, para diferentes sistemas operativos. La instalación en Windows 10 (el sistema en el que probamos) es bastante sencilla. MySQL Enterprise Monitor está configurado y se instalarán algunos servicios integrados (MySQL, Tomcat). Se puede acceder a la herramienta a través del navegador.
Configuración inicial
En primer lugar, debe agregar los hosts que le gustaría monitorear.
Puede agregar hosts individuales o un lote de ellos. La ventana de diálogo tiene el mismo aspecto, excepto que cuando se agrega de forma masiva, puede pasar una lista de servidores separados por comas.
No entraremos en detalles, pero en resumen, debe definir desde qué host se deben monitorear las instancias de MySQL; por lo general, será el host en el que instaló MySQL Enterprise Monitor. También puede configurar agentes en sus instancias de MySQL; en ese caso, también podrán recopilar datos para el host, no solo métricas de MySQL. Luego, debe definir cómo llegar a la instancia monitoreada (dirección IP/nombre de host, usuario y contraseña). MySQL Enterprise Monitor luego creará usuarios adicionales para tareas como el monitoreo, que no requiere privilegios de superusuario. Si lo desea, también puede configurar la comunicación SSL si eso es lo que usa la instancia de MySQL, también puede definir algunos tiempos de espera y si una topología de replicación debe detectarse automáticamente o no.
Lo que también es importante tener en cuenta es que MySQL Enterprise Monitor se basa en gran medida en Performance Schema:asegúrese de que sus bases de datos tengan PS habilitado, de lo contrario, no se beneficiará de una parte significativa de las funciones de MySQL Enterprise Monitor.
Monitoreo
Una vez que las instancias de MySQL monitoreadas están configuradas, puede comenzar a ver los datos recopilados. La sección Resumen le ofrece un breve resumen de algunas de las métricas más importantes de MySQL. Los datos se agregan y hacen que sea más fácil encontrar patrones inesperados y luego profundizar en lo que sucedió.
La pestaña Eventos ofrece una descripción general de los diferentes problemas o eventos informados por MySQL Enterprise Monitor y sus asesores. Puede hacer clic en cualquiera de los eventos y leer de qué se trata, así como los pasos recomendados a seguir:
En este caso particular, parece que algunas consultas están haciendo escaneos completos de la tabla y se recomienda investigar más a fondo para identificar dichas consultas y ver si se pueden optimizar.
Otro ejemplo, aquí vemos que la caché de tablas no está configurada de manera óptima. Puede ver la explicación del problema, consejos y acciones recomendadas a tomar en función de esta alerta.
Métricas
En esta pestaña podemos ver datos de varias métricas de MySQL que son útiles para comprender el estado del sistema.
Gráficos de series temporales
Las capturas de pantalla anteriores son solo un ejemplo, hay muchos más gráficos para ver.
Es posible aplicar filtros:puede definir qué gráficos le gustaría ver, también puede definir qué rango de tiempo se debe mostrar. Además de eso, puede simplemente marcar una parte del gráfico y ampliarla o abrir el Analizador de consultas con datos de ese momento en particular:
Veremos esta funcionalidad más adelante pero, en resumen, le permite analizar las consultas, cómo cambió su rendimiento con el tiempo y algunas consultas de ejemplo.
Estadísticas de la tabla
Esta pestaña nos brinda información sobre las estadísticas de la tabla:cómo se veía el tráfico (filas recuperadas, insertadas, actualizadas, eliminadas) y cómo se veía la latencia para todas las operaciones de fila.
Estadísticas de usuario
En esta pestaña, MySQL Enterprise Monitor presenta datos sobre los usuarios:sentencias ejecutadas, latencia, análisis de tablas, latencia de E/S, conexiones, utilización de memoria. Estos datos deberían dar una buena idea de qué usuario es responsable de la carga en la base de datos. Puede ser muy útil, especialmente en entornos multiusuario, donde no hay una fuente principal de tráfico.
E/S de archivo de base de datos
E/S de archivo de base de datos explica cómo se distribuye la carga de E/S entre los archivos de la base de datos. Número total de operaciones de E/S, latencia, cuántas lecturas y escrituras se realizaron en un archivo determinado.
Uso de memoria
El uso de la memoria muestra estructuras de memoria en MySQL, lo que ayuda a crear una mejor imagen de la utilización de la memoria en la base de datos. Estos datos pueden ser útiles en caso de problemas con la memoria:es fácil rastrear dónde el crecimiento es mayor y, si es necesario, reducir la configuración relevante. También puede ayudar significativamente a diagnosticar posibles fugas de memoria.
Grupo de búfer de InnoDB
Esta pestaña en MySQL Enterprise Monitor brinda al usuario información sobre la estructura de la utilización del grupo de búfer. ¿Qué tablas se almacenan en caché, cuántas páginas sucias hay que vaciar?
Consultas
Es extremadamente importante para cualquier usuario de MySQL comprender la carga que crean las consultas. ¿Qué consultas son las más problemáticas? ¿Cómo se comportan en el tiempo? El rendimiento se puede medir de varias maneras, pero es bastante común que el rendimiento predecible y estable sea más importante que el rendimiento superior. Siempre que el tiempo de respuesta sea aceptable, a los usuarios les gustarán más los resultados predecibles que una respuesta algo más rápida (baja latencia), que a veces puede ralentizar significativamente el servidor. Por eso es muy valioso ver cómo se comporta una consulta en el tiempo e identificar aquellas cuyo comportamiento no es consistente.
MySQL Enterprise Monitor definitivamente entrega tales datos. En la lista de consultas, puede ver fácilmente cómo cambió la latencia en el tiempo. La línea plana es buena, los picos, no tanto. Esto significa que dicha consulta puede tener que ser investigada más a fondo. Al hacer clic en él, MySQL Enterprise Monitor le dará más datos al respecto.
Como puede ver, hay algunos datos estadísticos sobre el tipo de consulta en particular, también puede ver cómo cambió la latencia en el tiempo. En la parte inferior puede ver algunos ejemplos de declaraciones en el tiempo y puede comparar su tiempo de ejecución.
Al hacer clic en uno de ellos, verá una consulta completa que se ejecutó en ese momento. Puede ser útil en el caso de consultas en las que el rendimiento difiere según los argumentos que se usaron en el caso WHERE (por ejemplo, WHERE some_column ='algún valor' y los valores en esa columna no se distribuyen uniformemente entre las filas).
Replicación
En un entorno de replicación de MySQL, el retraso es algo con lo que debe aprender a lidiar. Lo que es importante es seguirle la pista:¿qué tan rezagados están los esclavos? ¿Con qué frecuencia sucede? Con esta información, es posible intentar identificar el problema y comprender mejor qué consultas lo están causando. Luego, puede intentar implementar algunas mejoras como, por ejemplo, la replicación de subprocesos múltiples y realizar un seguimiento si los cambios mejoraron el rendimiento de la replicación y redujeron el retraso a un nivel aceptable.
¿En qué se diferencia MySQL Enterprise Monitor de ClusterControl?
Como dijimos, MySQL Enterprise Monitor es parte de MySQL Enterprise Edition de pago. Para todos los usuarios de MySQL Community, MariaDB o Percona Server, MySQL Enterprise Edition no está disponible. ClusterControl proporciona acceso a la monitorización de MySQL en su versión Community gratuita. En términos de monitoreo de servidores y consultas, hay muchas similitudes.
ClusterControl le brinda acceso a las métricas de MySQL recopiladas y almacenadas en la base de datos de series temporales de Prometheus. Puede realizar fácilmente un seguimiento de numerosas métricas disponibles en ClusterControl.
ClusterControl también incluye una lista de asesores, que se pueden utilizar para realizar un seguimiento del estado y el rendimiento de la base de datos. También puede crear fácilmente nuevos asesores utilizando Developer Studio:
Si está interesado en el rendimiento de las consultas, ClusterControl le proporciona un monitor de consultas:las consultas ejecutadas se recopilan y se compara su rendimiento, lo que facilita al usuario identificar qué consultas utilizan la mayor parte de la CPU en la base de datos.
Puede ver datos estadísticos sobre las consultas:ejecuciones, filas enviadas y examinadas, tiempo de ejecución. También puede consultar el plan de explicación para un tipo de consulta en particular.
Supervisión de la persistencia políglota
Una gran diferencia es la capacidad de monitorear todas las variantes principales del ecosistema MySQL (Oracle MySQL, MariaDB y Percona Server), diferentes tecnologías de agrupamiento (NDB Cluster, Group Replication, asynchronous replication y Galera Cluster), balanceadores de carga/proxies (HAProxy, Keepalived, Maxscale, ProxySQL), así como otras bases de datos de código abierto (PostgreSQL y MongoDB).
Automatización y Gestión
ClusterControl también proporciona funcionalidad para implementar instancias únicas o clústeres en las instalaciones o en la nube (AWS, GCE y Azure), así como características como administración de copias de seguridad, conmutación por error y recuperación/reparación automáticas, actualizaciones graduales, administración de clústeres para replicación o configuraciones de clústeres. , escalado, etc.
Eso es todo por hoy amigos. Si ha trabajado con MySQL Enterprise Monitor y desea agregar algo, hágalo en la sección de comentarios.