sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo manejar fallas en la base de datos (Glassfish/MySQL)?

A) Asegúrese de configurar Glassfish Connection Pool para la recuperación/reconexión automática

En la configuración del grupo de conexiones Glassfish JDBC, establezca los valores para:

  • Atributos:is-connection-validation-required, validate-atmost-once-period-in-seconds, connection-creation-retry-attempts, connection-validation-method, connection-creation-retry-interval-in-seconds, ping

Configuración de Glassfish conexión jdbc -Propiedades del grupo
Glassfish Admin:subcomando create-jdbc-connection-pool

Pasos:

  1. Suponiendo que Glassfish se está ejecutando (por ejemplo, inicie el servidor en la pestaña Servicios de Netbeans, abriendo Servidores y haciendo clic con el botón derecho en Glassfish), entonces debería tener el servidor de administración de dominio ejecutándose
  2. Abra la consola de administración en el navegador web:http://localhost:4848 (o use cualquier puerto que haya especificado durante la instalación.
  3. A la izquierda, en el menú Tareas comunes, abra Recursos -> JDBC y haga clic en Grupos de conexiones JDBC
  4. Haga clic en el nombre del grupo de conexiones (o cree uno nuevo haciendo clic en el botón Nuevo)
  5. Seleccione la pestaña Avanzado e ingrese:
  6. Validar como máximo una vez:(por ejemplo, 60) en segundos
  7. Intentos de reintento de creación:(por ejemplo, 3)
  8. Intervalo de reintento:(por ejemplo, 10) en segundos
  9. Validación de conexión:(marque) Obligatorio
  10. Método de validación:(por ejemplo, confirmación automática)
  11. Otras propiedades avanzadas según se desee
  12. Seleccione la pestaña General e ingrese:
  13. Ping (marcar)
  14. Otras propiedades generales según se desee

B) Implementar el manejo de errores de aplicaciones/monitoreo de base de datos y alertas

  1. Obligatorio:atrape los errores fatales del usuario "a nivel de infraestructura" y alerte al personal de soporte.

    Cree una clase JMX simple para enviar una notificación y llame a su método cuando ocurra un error fatal Clase JMX MBean que envía notificaciones . Puede usar una consola de monitor JMX para observar el estado de los servidores:algunas de estas consolas envían alertas por correo electrónico (por ejemplo, JManage y RHQ) y hay puentes para acceder desde HTTP/AJax u otros idiomas (por ejemplo, Jolokia puede usar la API javascript/perl/java para acceder a las notificaciones JMX).

    Utilice la API de Google Calendar para enviar el mensaje de error al calendario de Google del personal de soporte (1 o 2 minutos en el futuro). Luego configure el calendario de Google para enviar notificaciones por correo electrónico/sms; le dará una alerta de error directamente al personal de soporte casi en tiempo real. Esto está sujeto a las restricciones de uso de Google (un límite de cortesía de 10 000 consultas por día, así que asegúrese de que sus aplicaciones no tengan muchos errores y use la lógica para limitar la cantidad de mensajes enviados en una hora/día/semana)

  2. Deseable:monitorear la base de datos (y probablemente el servidor de aplicaciones) y alertar al personal de soporte de interrupciones

    • El código abierto de Zabbix ha incorporado monitoreo y alertas de mySQL:es liviano pero requiere instalación y configuración
    • Hyperic open source tiene complementos de extensión para el monitoreo de mySQL y alertas incorporadas:es pesado, puede ser complejo de instalar y configurar
    • El código abierto de Nagois es el predeterminado para los sistemas operativos *nix:es pesado, puede ser complejo de instalar y configurar

    En todos los casos, la configuración no se realizará instantáneamente; es mejor implementarlo como un mini proyecto separado y hacerlo bien; es mejor que el personal de soporte participe en esto.

    Si estos están "fuera del alcance", cree su propio monitor simple:

    • Un temporizador EJB para ejecutar una consulta de prueba simple programada en su base de datos; si falla, envíe una alerta (a través de JMX/Google Calendar/Java Mail/SMS gateway API). O use el programador de código abierto de Quartz para hacer el mismo trabajo