Comment afficher l'activité du serveur pour une instance Amazon RDS for MySQL DB ?

Dernière mise à jour : 08/11/2022

Comment voir l'activité du serveur d'une instance de base de données Amazon Relational Database Service (Amazon RDS) qui exécute MySQL ?

Solution

Vous pouvez utiliser l'activité du serveur pour identifier la source des problèmes de performances. Vous pouvez vérifier l'état du moteur de stockage InnoDB, identifier les requêtes en cours d'exécution ou détecter des blocages sur l'instance de base de données.

Vous devez disposer des privilèges d'administration de serveur MySQL PROCESS pour voir tous les threads s'exécuter sur une instance de base de données MySQL. Si vous disposez pas des privilèges d'administration, SHOW PROCESSLIST affiche uniquement les threads associés au compte MySQL que vous utilisez. Vous devez également disposer des droits d'administrateur du serveur MySQL PROCESS pour utiliser SHOW ENGINE. De plus, vous avez besoin des privilèges d'administrateur du serveur MYSQL PROCESS pour consulter les informations relatives à l'état du moteur de stockage InnoDB.

Pour afficher l'activité du serveur pour une instance de base de données, procédez comme suit :

1.    Activez le journal général et le journal des requêtes lentes pour votre instance de base de données MySQL.

2.    Connectez-vous à l'instance de base de données qui exécute le moteur de base de données MySQL.

3.    Exécutez les commandes suivantes :

SHOW FULL PROCESSLIST\G
SHOW ENGINE INNODB STATUS\G

Remarque : pour afficher plus que les 100 premiers caractères de chaque instruction, utilisez le mot-clé FULL.

4.    Voyez quelles sont les transactions en attente et quelles sont les transactions qui bloquent les transactions en attente. Exécutez l'une de ces commandes en fonction de la version d'Amazon RDS for MySQL que vous utilisez :

Pour les versions 5.6 et 5.7 :

SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM information_schema.innodb_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
ON r.trx_id = w.requesting_engine_transaction_id;INNER JOIN information_schema.innodb_trx r
ON b.trx_id = w.blocking_engine_transaction_id
INNER JOIN information_schema.innodb_trx b
FROM performance_schema.data_lock_waits w
b.trx_query blocking_query
b.trx_mysql_thread_id blocking_thread,
b.trx_id blocking_trx_id,
r.trx_query waiting_query,
r.trx_mysql_thread_id waiting_thread,
r.trx_id waiting_trx_id,

Remarque : une bonne pratique consiste à rassembler ces sorties à intervalles fréquents et consécutifs (par exemple, toutes les 60 secondes). L'examen de plusieurs sorties peut fournir une vue plus large de l'état du moteur. Cela vous permet de résoudre les problèmes de performances.


Cet article vous a-t-il été utile?


Besoin d'aide pour une question technique ou de facturation ?