Mon instance de base de données Amazon RDS, exécutée sur le moteur MySQL, utilise plus d'espace que prévu. Quelle est la cause de ce phénomène et que faire pour optimiser l'utilisation de l'espace de stockage du disque alloué à mon instance DB RDS MySQL ?

Même si la métrique 'FreeStorageSpace' d'Amazon CloudWatch permet de contrôler l'espace de stockage disponible d'une instance DB RDS donnée, FreeStorageSpace ne décrit pas la façon dont le moteur MySQL utilise cet espace disponible.

Avant d'optimiser l'utilisation de l'espace de stockage disponible, il est intéressant de pouvoir déterminer la façon dont le moteur MySQL utilise cet espace. Les catégories suivantes définissent, dans les grandes lignes, l'espace de stockage du moteur MySQL :

Le stockage total utilisé par une base de données individuelle peut être déterminé avec la requête suivante :

SELECT table_schema, SUM(data_length + index_length)/1024/1024 AS total_mb, SUM(data_length)/1024/1024 AS data_mb, SUM(index_length)/1024/1024 AS index_mb, COUNT(*) AS tables, CURDATE() AS today FROM information_schema.tables
GROUP BY table_schema ORDER BY 2 DESC;

Résultats de l'exemple :

MySQLoutput1

Pour localiser la plus grande table d'application dans votre instance DB RDS MySQL, exécutez la requête suivante :

SELECT table_schema, table_name, (data_length + index_length)/1024/1024 AS total_mb, (data_length)/1024/1024 AS data_mb, (index_length)/1024/1024 AS index_mb, CURDATE() AS today FROM information_schema.tables ORDER BY 3 DESC;

Résultats de l'exemple :

MySQLoutput2

L'ajout d'un réplica en lecture (read replica) conduit le journal binaire d'instances principal à utiliser un espace de stockage supplémentaire. Déterminez le volume de stockage utilisé par le journal binaire à l'aide de la métrique 'BinLogDiskUsage' d'Amazon CloudWatch. Si cette métrique révèle une croissance non maîtrisée, il est probable qu'au moins un réplica en lecture (read replica) n'est pas synchronisé.

Si les paramètres DB RDS pour general_log and slow_query_log sont activés et définis sortir vers le fichier, les fichiers journaux sont limités en taille à un maximum de 2 pour cent de l'espace de stockage alloué pour une instance DB. Pour plus d'informations sur la manière de faire tourner ces fichiers et de contrôler l'utilisation du disque, consultez mysql.rds_rotate_general_log et mysql.rds_rotate_slow_log.

L'espace de stockage InnoDB démarre à 10 Mo mais peut augmenter considérablement en fonction des scénarios d'utilisation. Par exemple, les transactions de longue durée peuvent utiliser un important espace de stockage disponible. L'espace de stockage InnoDb contient le dictionnaire de données InnoDB et annule de l'espace. Veuillez noter qu'après que de l'espace a été alloué, la taille de fichier ne se réduit jamais à nouveau. RDS ne contrôle aucunement cela. Pour mieux comprendre comment ce fichier peut grossir, consultez l'entrée du blog de Peter Zaitsev Reasons for run-away main Innodb Tablespace. Veuillez noter que la valeur innodb_file_per_table par défaut pour RDS est 1. Par conséquent, cet espace de table ne doit pas contenir d'autres tables InnoDB. Ces dernières sont stockées dans leurs propres fichiers .ibd.

Amazon RDS, stockage, FreeStorageSpace, espace de stockage excessif, BinLogDiskUsage, innodb, MySQL


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support.

Date de publication : 03/11/2015