Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment gérer les plantages de base de données (Glassfish/MySQL) ?

A) Assurez-vous de configurer Glassfish Connection Pool pour une récupération/reconnexion automatique

Dans la configuration du pool de connexions Glassfish JDBC, définissez les valeurs pour :

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

Configuration Glassfish jdbc-connection -piscine Propriétés
Glassfish Admin - sous-commande create-jdbc-connection-pool

Étapes :

  1. En supposant que Glassfish est en cours d'exécution (par exemple, démarrez le serveur dans l'onglet Services Netbeans, en ouvrant Serveurs et en cliquant avec le bouton droit sur Glassfish), alors vous devriez avoir le serveur d'administration de domaine en cours d'exécution
  2. Ouvrez la console d'administration dans le navigateur Web :http://localhost:4848 (ou utilisez le port que vous avez spécifié lors de l'installation.
  3. Sur la gauche, sous le menu Tâches courantes, ouvrez Ressources -> JDBC et cliquez sur Pools de connexion JDBC
  4. Cliquez sur votre pool de connexion POOL NAME (ou créez-en un nouveau en cliquant sur le bouton Nouveau)
  5. Sélectionnez l'onglet Avancé et entrez :
  6. Valider au plus une fois :(par exemple, 60) en secondes
  7. Nouvelles tentatives de création :(par exemple, 3)
  8. Intervalle de nouvelle tentative :(par exemple, 10) en secondes
  9. Validation de la connexion :(cocher) obligatoire
  10. Méthode de validation :(par exemple, validation automatique)
  11. Autres propriétés avancées souhaitées
  12. Sélectionnez l'onglet Général et entrez :
  13. Ping (Tick)
  14. Autres propriétés générales souhaitées

B) Mettre en œuvre la gestion des erreurs d'application / la surveillance et les alertes de la base de données

  1. Obligatoire :interceptez les erreurs utilisateur fatales "au niveau de l'infrastructure" et alertez le personnel d'assistance.

    Créez une classe JMX simple pour envoyer une notification et appeler sa méthode lorsqu'une erreur fatale se produit Classe MBean JMX qui envoie des notifications . Vous pouvez utiliser une console de surveillance JMX pour observer l'état des serveurs - certaines de ces consoles envoient des alertes par e-mail (par exemple, JManage et RHQ) et il existe des ponts pour l'accès depuis HTTP/AJax ou d'autres langages (par exemple, Jolokia peut utiliser l'API javascript/perl/java pour accéder aux notifications JMX).

    Utilisez l'API Google Agenda pour envoyer le message d'erreur au calendrier Google du personnel d'assistance (1 ou 2 minutes à l'avenir). Ensuite, configurez Google Calendar pour envoyer des notifications par e-mail/Sms - enverra une alerte d'erreur directement au personnel d'assistance en temps quasi réel. Ceci est soumis aux restrictions d'utilisation de Google (une limite de courtoisie de 10 000 requêtes par jour, alors assurez-vous que vos applications ne sont pas super boguées et utilisez la logique pour limiter le nombre de messages envoyés en une heure/jour/semaine)

  2. Souhaitable :surveiller la base de données (et probablement le serveur d'applications) et alerter le personnel d'assistance en cas de panne

    • L'open source Zabbix a une surveillance et des alertes mySQL intégrées - est léger mais nécessite une installation et une configuration
    • Hyperic Open Source dispose de plug-ins d'extension pour la surveillance MySQL et d'alertes intégrées ; il est lourd et peut être complexe à installer et à configurer
    • L'open source Nagois est la valeur par défaut pour les systèmes d'exploitation *nix - est lourd, peut être complexe à installer et à configurer

    Dans tous les cas, la configuration ne se fera pas instantanément. Il est préférable de mettre en œuvre un mini-projet distinct et de le faire correctement. Il est préférable d'avoir du personnel d'assistance impliqué.

    Si ceux-ci sont "hors de portée", alors créez votre propre moniteur simple :

    • Un minuteur EJB pour exécuter une requête de test simple planifiée sur votre base de données - en cas d'échec, envoyez une alerte (via JMX/Google Calendar/Java Mail/ API de passerelle SMS). Ou utilisez le planificateur open source Quartz pour faire le même travail