Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MAMP PRO stürzt ab; MySQL startet beim Neustart nicht

VORWORT: Das klingt schlecht, aber lesen Sie bitte unbedingt alles in dieser Antwort, bevor Sie handeln. Sie können die Dinge nicht schlimmer machen, indem Sie sich Zeit nehmen. Lesen Sie jeden Schritt und hoffen Sie, dass dies klar genug ist, damit Sie ihm folgen und Ihren MySQL-Datenbankserver in MAMP Pro wieder zum Laufen bringen können.

Es scheint also, als wären Ihre InnoDB-Datenbanken abgestürzt. Nicht die App selbst. Der Schlüssel steht hier im Log:

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.

Und es sieht so aus, als ob Sie MAMP PRO hier drüben verwenden:

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

Die Frage ist also, haben Sie ein Backup der MAMP Pro-Datenbanken? Entweder über mysqldump oder etwas anderes? Haben Sie andere InnoDB-Datenbanken in Ihrer MAMP-Installation?

Außerdem sagen Sie, dass Sie mysqldump ausführen konnten , aber es ist wirklich nicht möglich, dass die Datenbank abgestürzt ist. Ich gehe also davon aus, wann Sie mysqldump ausgeführt haben das war eine weitere separate Installation von MySQL auf Ihrem System. Die MySQL-Binärdateien wie mysqldump in MAMP oder MAMP Pro sind nicht dasselbe wie das systemweite mysqldump . Es sind zwei 100% unterschiedliche Installationen. Sie können überprüfen, welcher mysqldump verwendet wird, indem Sie diesen Befehl eingeben:

which mysqldump

Um den vollständigen Pfad dessen anzuzeigen, was Sie Ihrer Meinung nach verwendet haben. Die MAMP-Installation von mysqldump – und andere verwandte Binärdateien – befindet sich hier:

/Applications/MAMP/Library/bin/

Und um es direkt auszuführen, ohne Ihren $PATH zu ändern Wert (eine ganz andere Sache) ist, es so auszuführen:

/Applications/MAMP/Library/bin/mysqldump

BITTE SORGFÄLTIG LESEN: Bitte beachten Sie, dass die Ratschläge, die ich Ihnen unten gebe, darin bestehen, wie ich mit einer solchen Situation umgehen würde. Wenn die InnoDB-Datenbank nicht wichtig ist, machen Sie einfach meinen ersten Vorschlag, die InnoDB-spezifischen DB-Dateien zu löschen. Wenn Sie einen mysqldump haben Backup, tun Sie dasselbe, aber stellen Sie den mysqldump wieder her Sicherung.

Außerdem ist InnoDB nicht eine Standard-Speicher-Engine. Sie müssen sich Mühe geben, das einzustellen. Der Standardwert ist MyISAM. Jede neue DB, die in MySQL erstellt wird, wird MyISAM sein. Das wird Ihnen also helfen. Sie müssen Ihre Denkkappe aufsetzen, um herauszufinden, für welche Datenbanken InnoDB-Speicher-Engines festgelegt sind. Wenn Sie sagen, Sie haben 25, aber nur 1 hat InnoDB, einfache Lösung. Aber auch wenn Sie 25 Datenbanken haben, sollten Sie sich angewöhnen, regelmäßig mysqldump zu erstellen Sicherungen. Wenn Sie Backups hätten, wäre dies ein Problem, aber eine einfache Sache zu lösen.

EINE OPTION:Löschen Sie das beschädigte InnoDB-Zeug und stellen Sie es von einem mysqldump wieder her Sicherung.

Das erste, was ich an Ihrer Stelle tun würde, ist ein Backup von mysql Verzeichnis in /Library/Application Support/appsolute/MAMP PRO/db/ damit Sie zumindest für alle Fälle eine Sicherungskopie der beschädigten Dateien haben können.

Dann würde ich folgende Dateien löschen:

/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

Das sind InnoDB-spezifische Dateien. Löschen Sie sie und versuchen Sie dann, MAMP erneut zu starten. Es sollte kommen. Aber jede InnoDB-Datenbank in MAMP befindet sich in einem „Zombie“-Zustand. Sie sollten diese Datenbanken löschen und aus der Sicherung neu erstellen. Oder von Grund auf neu, wenn Sie können.

EINE ANDERE OPTION:Versuchen Sie, den MySQL-Server mit innodb_force_recovery wieder zum Laufen zu bringen .

Nun, wenn Sie diese DB wiederherstellen müssen, können Sie versuchen, einen innodb_force_recovery wie hier beschrieben.

Für MAMP Pro scheinen Sie Ihre MySQL-Konfigurationsdatei gemäß dieser Anleitung bearbeiten zu können:

  1. Starten Sie MAMP Pro.
  2. Halten Sie den MAMP Pro-Server an, falls er ausgeführt wird.
  3. Wählen Sie Datei -> Vorlage bearbeiten -> MySQL my.cnf
  4. Ein Editorfenster erscheint.
  5. Wenn eine Warnmeldung erscheint, bestätigen Sie mit OK.
  6. Suchen Sie den Abschnitt "[mysqld]"
  7. Fügen Sie unter der letzten Zeile dieses Abschnitts diese Zeile hinzu:innodb_force_recovery = 1

Und wie die MySQL-Dokumentation erklärt , dies dient ausschließlich dazu, die Datenbank zum Laufen zu bringen, damit Sie über mysqldump ein Backup erstellen können :

Jetzt gibt es ungefähr 6 verschiedene Werte für innodb_force_recovery aber Sie sollten es wirklich nur mit 1 versuchen zur Zeit. Wenn Sie jeden der 6 ausprobieren möchten, finden Sie hier eine Aufschlüsselung:

Wenn Sie die Datenbank zum Laufen bekommen und dann einen mysqldump durchführen können dann herzlichen Glückwunsch! Sie sind im Klaren! Der beste nächste Schritt ist,

  1. Halten Sie den MySQL-Datenbankserver an
  2. Entfernen Sie innodb_force_recovery Option aus der MySQL-Konfiguration, damit der Datenbankserver normal funktionieren kann.
  3. Starten Sie den MySQL-Datenbankserver neu.
  4. Löschen Sie die beschädigte MySQL-Datenbank vom Server (Löschen Sie nicht die Dump-Datei! Das ist Ihr Backup!)
  5. Erstellen Sie eine neue Datenbank, die Sie wiederherstellen möchten.
  6. Importieren Sie den mysqldump in die neue Datenbank sichern.

Und Sie sollten fertig sein.