PmaControl logo PmaControl
  • Accueil
  • PmaControl
    • Agents IA 13 agents on-premise
    • Nos offres Community, Cloud, On-Premise, Premium
    • Documentation Guides, API, architecture
    • Changelog Toutes les versions stables 5.x
    • Marketplace Plugins communautaires
    • Clients 28+ entreprises
    • FAQ 25 questions / 7 catégories
    Bases de données
    • MariaDB 35 articles
    • MySQL 15 articles
    • Galera Cluster 6 articles
    • MaxScale 4 articles
    • ProxySQL 3 articles
    • Amazon Aurora MySQL 0 article
    • Azure Database 0 article
    • ClickHouse 0 article
    • GCP CloudSQL 0 article
    • Percona Server 0 article
    • SingleStore 0 article
    • TiDB 0 article
    • Vitess 0 article
    Solutions
    • Support 24×7 Urgences MariaDB & MySQL
    • Observabilité SQL Monitoring, alertes, topologie
    • Haute disponibilité Réplication, failover, Galera
    • Disaster Recovery Backup, restore, RPO/RTO
    • Sécurité & conformité Audit, RGPD, SOC2
    • Migration & upgrade Zero downtime, pt-osc, gh-ost
  • Nos offres
  • Ressources
    • Documentation Guides techniques & API
    • Centre d'optimisation MySQL Index Markdown, métriques, paramètres, incidents
    • FAQ 25 questions fréquentes
    • Témoignages Retours clients & cas d'usage
    • Blog Articles & insights
    • Roadmap Fonctionnalités à venir
    Domaines d'expertise
    • Observabilité SQL Monitoring, alertes, topologie Dot3
    • Haute disponibilité Réplication, failover, Galera
    • Sécurité & conformité Audit, RGPD, SOC2, ISO 27001
    • Disaster Recovery Backup, restore, RPO/RTO
    • Performance & optimisation Digests, EXPLAIN, tuning
    • Migration & upgrade Zero downtime, pt-osc
    Liens rapides
    • Wiki GitHub 26 pages — install, engine, plugins
    • Code source Repository GitHub officiel
    • Support 24×7 Urgences MariaDB & MySQL
    • Réserver une démo 30 min — architecture réelle
  • Support 24×7
  • Réserver une démo
Réserver une démo
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
Ressources › Centre d'optimisation MySQL › Health checks MySQL

Health checks MySQL

Documentation Markdown structurée pour diagnostiquer, mesurer et optimiser MySQL.

Cette page est une documentation originale PmaControl. Elle reprend une structure d'index pratique pour travailler sur l'optimisation MySQL, sans copier de contenu tiers ni dépendre d'un produit externe.

Objectif

Un health check MySQL vérifie l'état exploitable du serveur: disponibilité, capacité, cohérence des limites, absence de signaux critiques et qualité minimale de configuration.

Contrôles essentiels

  • Uptime et redémarrages récents.
  • Saturation de connexions par rapport à max_connections.
  • Ratio de lectures disque du buffer pool.
  • Volume de tables temporaires créées sur disque.
  • Erreurs de connexion et Aborted_clients.
  • Verrous longs, deadlocks et requêtes en attente.
  • Espace disque des datadir, logs binaires et logs redo.

SQL de base

SHOW GLOBAL STATUS LIKE 'Uptime';
SHOW GLOBAL STATUS LIKE 'Max_used_connections';
SHOW GLOBAL STATUS LIKE 'Created_tmp_disk_tables';
SHOW ENGINE INNODB STATUS\G

Interprétation

Le health check ne doit pas seulement produire une liste rouge/verte. Il doit expliquer l'impact, la priorité et la manière de confirmer le diagnostic.

Commencer par l’identité et un instantané récent

Consignez le nom d’hôte, la version, le rôle, l’heure d’observation et l’impact applicatif. Vérifiez le trajet complet, de l’application au proxy puis à la base : une connexion SQL réussie ne prouve pas que les clients atteignent le bon serveur d’écriture. Identifiez la dernière période saine et corrélez les redémarrages avec déploiements, événements système et journal d’erreurs.

SELECT NOW() AS observed_at, @@hostname AS hostname,
       VERSION() AS server_version, @@global.read_only AS read_only;
SHOW GLOBAL VARIABLES WHERE Variable_name IN (
  'max_connections', 'datadir', 'tmpdir', 'log_error'
);
SHOW GLOBAL STATUS WHERE Variable_name IN (
  'Uptime', 'Threads_connected', 'Threads_running',
  'Max_used_connections', 'Connection_errors_max_connections',
  'Aborted_clients', 'Aborted_connects', 'Innodb_log_waits',
  'Innodb_buffer_pool_reads', 'Innodb_buffer_pool_read_requests',
  'Created_tmp_tables', 'Created_tmp_disk_tables'
);

Lire les débits et la pression, pas les totaux isolés

Pour les compteurs croissants, utilisez deux relevés sur le même intervalle sans interruption. Fraction des lectures physiques = ΔInnodb_buffer_pool_reads / ΔInnodb_buffer_pool_read_requests si le dénominateur est positif. Elle décrit les lectures absentes du buffer pool, pas la santé du stockage ; comparez aussi lectures physiques par seconde et latence disque. Max_used_connections est un maximum depuis remise à zéro, Threads_connected une valeur actuelle. Les connexions dormantes et le travail actif ont des coûts différents.

Le ratio des tables temporaires disque est un indice seulement. Le débordement TempTable MySQL dans des fichiers mappés n’est pas entièrement représenté par Created_tmp_disk_tables ; un faible ratio ne prouve pas que tout reste en RAM. Une hausse des connexions interrompues exige des preuves applicatives, réseau et de timeout avant de conclure à un défaut de la base.

Inspecter transactions, réplicas et système

SELECT trx_id, trx_state, trx_started, trx_mysql_thread_id,
       trx_rows_locked, trx_rows_modified
FROM information_schema.innodb_trx
ORDER BY trx_started
LIMIT 20;
SHOW ENGINE INNODB STATUS\G

Une transaction ancienne peut être inactive tout en conservant des verrous ou en retardant la purge. Identifiez son propriétaire et son opération métier avant de l’arrêter ; son rollback peut être long. Sur un réplica MySQL 8.0.22+, examinez SHOW REPLICA STATUS\G : réception, application, dernières erreurs et retard. MariaDB et les anciennes versions MySQL utilisent des commandes et champs propres à leur version. Un retard nul ne garantit pas la fraîcheur ; vérifiez un repère applicatif et chaque canal configuré.

df -h /var/lib/mysql
df -i /var/lib/mysql
vmstat 1 5

Remplacez le chemin d’exemple par le datadir réel et contrôlez les montages distincts des fichiers temporaires et binlogs. Examinez octets libres, inodes, latence I/O, pression mémoire et activité du swap. Excluez le premier relevé vmstat des comparaisons d’intervalle. Confirmez les sauvegardes par une restauration réussie, un temps de reprise mesuré et le point de reprise requis, pas seulement par un job terminé.

Prioriser les constats

Signal Action suivante
Serveur d’écriture indisponible ou disque plein Reprise immédiate, conserver les preuves
Erreurs, attentes ou retard en hausse Corréler avec l’impact client actuel
Maximum historique sans pression actuelle Suivi de tendance et revue de capacité

Poursuivre le diagnostic

  • Utilisez l’évaluation de performance pour noter responsable, preuves et prochaine revue.

Références officielles

  • MySQL replication status
  • MySQL internal temporary tables
PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
Mentions légales GitHub Contact
N'attendez pas l'incident pour comprendre votre architecture. © 2014-2026 PmaControl — 68Koncept