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

MAMP PRO plante ; MySQL ne démarre pas au redémarrage

PRÉFACE : Cela semble mauvais, mais assurez-vous de lire tout dans cette réponse avant d'agir. Vous ne pouvez pas empirer les choses en prenant votre temps. Lisez chaque étape et j'espère que cela sera suffisamment clair pour que vous puissiez suivre et remettre votre serveur de base de données MySQL dans MAMP Pro opérationnel.

Donc, il semble que vos bases de données InnoDB se soient écrasées. Pas l'application elle-même. La clé est ici dans le journal :

140527 15:06:58 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 791075520
140527 15:06:58  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 791076717
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 8402.
InnoDB: You may have to recover from a backup.

Et il semble que vous utilisiez MAMP PRO ici :

/Library/Application Support/appsolute/MAMP PRO/db/mysql

Donc la question est, avez-vous une sauvegarde des bases de données MAMP Pro ? Soit via mysqldump ou autre chose? Avez-vous d'autres bases de données InnoDB dans votre installation MAMP ?

De plus, vous dites que vous avez pu exécuter mysqldump , mais il n'est vraiment pas possible que la base de données se soit écrasée. Donc je suppose que lorsque vous avez exécuté mysqldump c'était une autre installation séparée de MySQL sur votre système. Les binaires MySQL tels que mysqldump dans MAMP ou MAMP Pro ne sont pas les mêmes que le système mysqldump . Ce sont deux installations 100% différentes. Vous pouvez vérifier quel mysqldump est utilisé en tapant cette commande :

which mysqldump

Pour voir le chemin complet de ce que vous pensez utiliser. L'installation MAMP de mysqldump —et d'autres fichiers binaires associés—se trouve ici :

/Applications/MAMP/Library/bin/

Et pour l'exécuter directement sans modifier votre $PATH valeur (une toute autre chose) est de l'exécuter comme ceci :

/Applications/MAMP/Library/bin/mysqldump

VEUILLEZ LIRE ATTENTIVEMENT : Veuillez noter que le conseil que je vous donne ci-dessous est que je présente toutes les façons dont je ferais face à une situation comme celle-ci. Si la base de données InnoDB n'est pas importante, faites simplement ma première suggestion de supprimer les fichiers de base de données spécifiques à InnoDB. Si vous avez un mysqldump backup, faites la même chose mais récupérez le mysqldump sauvegarde.

De plus, InnoDB n'est pas un moteur de stockage par défaut. Vous devez faire tout votre possible pour régler cela. La valeur par défaut est MyISAM. Toute nouvelle base de données créée dans MySQL sera MyISAM. Cela vous aidera donc. Vous devez mettre votre réflexion sur les bases de données pour lesquelles les moteurs de stockage InnoDB sont définis. Si vous dites que vous en avez 25 mais qu'un seul a InnoDB, solution facile. Mais aussi si vous avez 25 bases de données, vous devriez prendre l'habitude de faire régulièrement mysqldump sauvegardes. Si vous aviez des sauvegardes, ce serait un casse-tête, mais une chose simple à résoudre.

UNE OPTION :Supprimer les éléments InnoDB corrompus et récupérer à partir d'un mysqldump sauvegarde.

La première chose que je ferais si j'étais vous est de sauvegarder le mysql répertoire dans /Library/Application Support/appsolute/MAMP PRO/db/ afin que vous puissiez au moins avoir une sauvegarde des fichiers corrompus au cas où.

Ensuite, je supprimerais les fichiers suivants :

/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile0
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile1
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ibdata1

Ce sont des fichiers spécifiques à InnoDB. Supprimez-les, puis essayez de redémarrer MAMP. Ça devrait arriver. Mais toute base de données InnoDB dans MAMP sera dans un état «zombie». Vous devez supprimer ces bases de données et recréer à partir de la sauvegarde. Ou à partir de zéro si vous le pouvez.

UNE AUTRE OPTION :essayez de remettre le serveur MySQL en marche avec innodb_force_recovery .

Maintenant, si vous avez besoin de récupérer cette base de données, vous pouvez tenter de définir un innodb_force_recovery comme décrit ici.

Pour MAMP Pro, il semble que vous puissiez modifier votre fichier de configuration MySQL en suivant ces instructions :

  1. Démarrez MAMP Pro.
  2. Arrêtez le serveur MAMP Pro s'il est en cours d'exécution.
  3. Sélectionnez Fichier -> Modifier le modèle -> MySQL my.cnf
  4. Une fenêtre d'éditeur apparaît.
  5. Si un message d'avertissement apparaît, confirmez avec OK.
  6. Trouvez la section "[mysqld]"
  7. Sous la dernière ligne de cette section, ajoutez cette ligne :innodb_force_recovery = 1

Et comme l'explique la documentation MySQL , c'est strictement pour que la base de données soit opérationnelle afin que vous puissiez faire une sauvegarde via mysqldump :

Il y a maintenant environ 6 valeurs différentes pour innodb_force_recovery mais vous ne devriez vraiment essayer qu'avec 1 pour le moment. Si vous voulez essayer chacun des 6, voici une répartition :

S'il vous arrive d'avoir la base de données opérationnelle et que vous pouvez ensuite faire un mysqldump alors félicitations ! Vous êtes en clair ! La meilleure étape suivante consiste à

  1. Arrêtez le serveur de base de données MySQL
  2. Supprimez le innodb_force_recovery option de la configuration MySQL afin que le serveur de base de données puisse fonctionner normalement.
  3. Redémarrez le serveur de base de données MySQL.
  4. Supprimez la base de données MySQL corrompue du serveur (ne supprimez pas le fichier de vidage ! C'est votre sauvegarde !)
  5. Créez une nouvelle base de données que vous souhaitez récupérer.
  6. Importer le mysqldump sauvegarde dans la nouvelle base de données.

Et vous devriez avoir terminé.