VOORWOORD: Dit klinkt slecht, maar zorg ervoor dat u alles in dit antwoord leest voordat u handelt. Je kunt dingen niet erger maken door je tijd te nemen. Lees elke stap en hopelijk is dit duidelijk genoeg om te volgen en uw MySQL-databaseserver in MAMP Pro weer aan de gang te krijgen.
Het lijkt er dus op dat uw InnoDB-databases zijn gecrasht. Niet de app zelf. De sleutel staat hier in het logboek:
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.
En het lijkt erop dat je hier MAMP PRO gebruikt:
/Library/Application Support/appsolute/MAMP PRO/db/mysql
Dus de vraag is, heb je een back-up van de MAMP Pro-databases? Ofwel via mysqldump
of iets anders? Heeft u andere InnoDB-databases in uw MAMP-installatie?
U zegt ook dat u mysqldump
. heeft kunnen uitvoeren , maar het is echt niet mogelijk dat de database is gecrasht. Dus ik neem aan dat je mysqldump
. hebt uitgevoerd dat was een andere, afzonderlijke installatie van MySQL op uw systeem. De MySQL-binaire bestanden zoals mysqldump
in MAMP of MAMP Pro zijn niet hetzelfde als de systeembrede mysqldump
. Het zijn twee 100% verschillende installaties. U kunt controleren welke mysqldump
wordt gebruikt door deze opdracht in te typen:
which mysqldump
Om het volledige pad te zien van wat u denkt te gebruiken. De MAMP-installatie van mysqldump
—en andere gerelateerde binaire bestanden — vindt u hier:
/Applications/MAMP/Library/bin/
En om het direct uit te voeren zonder uw $PATH
. aan te passen waarde (een heel ander ding) is om het als volgt uit te voeren:
/Applications/MAMP/Library/bin/mysqldump
LEES AANDACHTIG DOOR: Houd er rekening mee dat het advies dat ik je hieronder geef, is dat ik elke manier presenteer waarop ik zou omgaan met een situatie als deze. Als de InnoDB-database niet belangrijk is, doe dan gewoon mijn eerste suggestie om de InnoDB-specifieke DB-bestanden te vernietigen. Als je een mysqldump
. hebt back-up, doe hetzelfde, maar herstel de mysqldump
back-up.
Ook is InnoDB niet een standaard opslag-engine. Je moet je best doen om dat in te stellen. De standaard is MijnISAM. Elke nieuwe DB die in MySQL wordt gemaakt, is MyISAM. Dit zal je dus helpen. U moet uw denkcap opzetten om erachter te komen welke databases InnoDB-opslagengines hebben ingesteld. Als je zegt dat je er 25 hebt, maar slechts 1 heeft InnoDB, een gemakkelijke oplossing. Maar ook als je 25 databases hebt, moet je er een gewoonte van maken om regelmatig mysqldump
te maken back-ups. Als je back-ups had, zou dit hoofdpijn zijn, maar een eenvoudige zaak om op te lossen.
EEN OPTIE:verwijder de beschadigde InnoDB-dingen en herstel van een mysqldump
back-up.
Het eerste wat ik zou doen als ik jou was, is een back-up maken van de mysql
directory in /Library/Application Support/appsolute/MAMP PRO/db/
dus je hebt in ieder geval een back-up van de beschadigde bestanden voor het geval dat.
Dan zou ik de volgende bestanden verwijderen:
/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
Dat zijn InnoDB-specifieke bestanden. Verwijder ze en probeer MAMP opnieuw te starten. Het zou op moeten komen. Maar elke InnoDB-database in MAMP bevindt zich in een "zombie" -staat. U moet die databases verwijderen en opnieuw maken vanaf een back-up. Of helemaal opnieuw als je kunt.
EEN ANDERE OPTIE:probeer de MySQL-server weer up &running te krijgen met innodb_force_recovery
.
Nu, bij de toevallige kans dat u die DB moet herstellen, kunt u een poging uitvoeren om een innodb_force_recovery
zoals hier beschreven.
Voor MAMP Pro lijkt het erop dat u uw MySQL-configuratiebestand kunt bewerken volgens deze instructies:
- Start MAMP Pro.
- Stop de MAMP Pro-server als deze actief is.
- Selecteer Bestand -> Sjabloon bewerken -> MySQL my.cnf
- Er verschijnt een editorvenster.
- Als er een waarschuwingsbericht verschijnt, bevestigt u met OK.
- Zoek de sectie "[mysqld]"
- Voeg onder de laatste regel van deze sectie deze regel toe:
innodb_force_recovery = 1
En zoals de MySQL-documentatie uitlegt
, dit is uitsluitend om de database aan de gang te krijgen, zodat u een back-up kunt maken via mysqldump
:
Nu zijn er ongeveer 6 verschillende waarden voor innodb_force_recovery
maar je zou eigenlijk alleen moeten proberen met 1
voor nu. Als u elk van de 6 wilt proberen, volgt hier een overzicht:
Als je toevallig de database aan de gang krijgt en dan een mysqldump
. kunt doen dan gefeliciteerd! Je bent duidelijk! De beste volgende stappen zijn om
- Stop de MySQL-databaseserver
- Verwijder de
innodb_force_recovery
optie uit de MySQL-configuratie zodat de databaseserver normaal kan werken. - Herstart de MySQL-databaseserver.
- Verwijder de beschadigde MySQL-database van de server (verwijder het dumpbestand niet! Dat is uw back-up!)
- Maak een nieuwe database die u wilt herstellen.
- Importeer de
mysqldump
back-up naar de nieuwe database.
En je zou klaar moeten zijn.