Maison >base de données >tutoriel mysql >Pourquoi mon serveur MySQL sur une instance micro EC2 plante-t-il avec \'InnoDB : mmap (x bytes) failed; errno 12,\' et comment puis-je y remédier ?

Pourquoi mon serveur MySQL sur une instance micro EC2 plante-t-il avec \'InnoDB : mmap (x bytes) failed; errno 12,\' et comment puis-je y remédier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-30 21:17:12683parcourir

Why is my MySQL server on a micro EC2 instance crashing with

"Amazon EC2, mysql abandonne le démarrage car InnoDB : mmap (x octets) a échoué ; errno 12"

Dans ce scénario, le serveur MySQL sur une instance micro EC2 plante à plusieurs reprises avec l'erreur "InnoDB: mmap (x bytes) failed; errno 12." Malgré les tentatives de redémarrage du serveur, le problème persiste. En examinant les journaux MySQL, il devient évident que l'initialisation du pool de mémoire tampon InnoDB échoue en raison d'une allocation de mémoire insuffisante.

Comprendre le problème

Le pool de mémoire tampon InnoDB stocke les données fréquemment consultées en mémoire pour optimiser la performance des opérations de base de données. Cependant, dans ce cas, la capacité mémoire limitée de la micro-instance empêche l’allocation d’un espace suffisant pour le pool de mémoire tampon. Par conséquent, InnoDB ne parvient pas à s'initialiser et le serveur MySQL se termine avec le message d'erreur.

Configuration de l'espace d'échange

Pour résoudre ce problème, il est recommandé de créer un espace d'échange, qui agit essentiellement comme un espace d'échange supplémentaire. mémoire virtuelle. Cela permet au système d'exploitation d'utiliser l'espace disque inutilisé comme RAM, augmentant ainsi la mémoire disponible pour les opérations critiques comme InnoDB.

Création d'un espace d'échange

La création d'un espace d'échange implique les étapes suivantes :

  1. Créer un nouveau fichier qui servira de swap espace :
dd if=/dev/zero of=/swapfile bs=1M count=1024
  1. Formater le fichier nouvellement créé en tant que fichier d'échange :
mkswap /swapfile
  1. Activer le fichier d'échange :
swapon /swapfile
  1. Pour garantir que le fichier d'échange persiste lors des redémarrages, modifiez le fichier /etc/fstab et ajoutez la ligne suivante :
/swapfile swap swap defaults 0 0

Solution alternative : RDS

Si la création d'un espace d'échange ne résout pas le problème, une solution alternative consiste à utiliser Amazon RDS (Relational service de base de données). RDS est un service de base de données géré d'AWS qui fournit des instances de base de données dédiées avec des ressources de mémoire et de stockage garanties. En migrant la base de données vers une instance RDS, le problème de l'allocation de mémoire limitée sur la micro-instance peut être contourné.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn