Mysql
 sql >> Database >  >> RDS >> Mysql

Come gestire gli arresti anomali del database (Glassfish/MySQL)?

A) Assicurati di configurare Glassfish Connection Pool per il ripristino/riconnessione automatica

Nella configurazione del pool di connessioni JDBC Glassfish, imposta i valori per:

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

Configurazione Glassfish connessione jdbc -Proprietà pool
Glassfish Admin:sottocomando create-jdbc-connection-pool

Passi:

  1. Supponendo che Glassfish sia in esecuzione (ad es. avviare il server nella scheda Servizi Netbeans, aprendo Server e facendo clic con il pulsante destro del mouse su Glassfish), dovresti avere il Domain Admin Server in esecuzione
  2. Apri l'Admin Console nel browser web:http://localhost:4848 (o usa la porta che hai specificato durante l'installazione.
  3. A sinistra, nel menu Attività comuni, apri Risorse -> JDBC e fai clic su JDBC Connection Pools
  4. Fai clic sul tuo pool di connessioni NOME POOL (o creane uno nuovo facendo clic sul pulsante Nuovo)
  5. Seleziona la scheda Avanzate e inserisci:
  6. Convalida al massimo una volta:(ad es. 60) in secondi
  7. Tentativi di ripetizione della creazione:(ad es. 3)
  8. Intervallo tra tentativi:(ad es. 10) in secondi
  9. Convalida della connessione:(segno di spunta) richiesta
  10. Metodo di convalida:(ad es. auto-commit)
  11. Altre proprietà avanzate come desiderato
  12. Seleziona la scheda Generale e inserisci:
  13. Ping (segno di spunta)
  14. Altre proprietà generali desiderate

B) Implementare la gestione degli errori dell'applicazione/il monitoraggio e gli avvisi del database

  1. Obbligatorio:intrappolare gli errori fatali degli utenti "a livello di infrastruttura" e allertare il personale di supporto.

    Crea una semplice classe JMX per inviare una notifica e richiamarne il metodo quando si verifica un errore irreversibile Classe JMX MBean che invia notifiche . È possibile utilizzare una console di monitoraggio JMX per osservare lo stato dei server:alcune di queste console inviano avvisi e-mail (ad es. JManage e RHQ) e sono presenti bridge per l'accesso da HTTP/AJax o altre lingue (ad es. Jolokia può utilizzare l'API javascript/perl/java per accedere alle notifiche JMX).

    Utilizza API di Google Calendar per inviare il messaggio di errore al calendario di Google del personale di supporto (1 o 2 minuti in futuro). Quindi configura Google Calendar per inviare notifiche e-mail/sms:invierà un avviso di errore direttamente al personale di supporto quasi in tempo reale. Questo è soggetto alle restrizioni sull'utilizzo di Google (un limite di cortesia di 10.000 query al giorno, quindi assicurati che le tue app non siano super bacate e utilizza la logica per limitare il numero di messaggi inviati in un'ora/giorno/settimana)

  2. Auspicabile:monitorare il DB (e probabilmente il server dell'app) e avvisare il personale di supporto in caso di interruzioni

    • Zabbix open source ha il monitoraggio e gli avvisi MySQL integrati:è leggero ma richiede installazione e configurazione
    • Hyperic open source ha plug-in di estensione per il monitoraggio di MySQL e avvisi integrati:è pesante, può essere complesso da configurare e configurare
    • Nagois open source è l'impostazione predefinita per *nix OS:è pesante, può essere complesso da configurare e configurare

    In tutti i casi, l'installazione non avverrà all'istante - è meglio implementarlo come un mini progetto separato e farlo bene - è meglio che il personale di supporto sia coinvolto in questo.

    Se questi sono "fuori portata", crea il tuo monitor semplice:

    • Un timer EJB per eseguire semplici query di test pianificate sul database - se non riesce invia un avviso (tramite JMX/Google Calendar/Java Mail/API gateway SMS). Oppure usa l'utilità di pianificazione open source Quartz per fare lo stesso lavoro