sql >> Database >  >> RDS >> Mysql

MAMP PRO crasht; MySQL start niet bij opnieuw opstarten

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:

  1. Start MAMP Pro.
  2. Stop de MAMP Pro-server als deze actief is.
  3. Selecteer Bestand -> Sjabloon bewerken -> MySQL my.cnf
  4. Er verschijnt een editorvenster.
  5. Als er een waarschuwingsbericht verschijnt, bevestigt u met OK.
  6. Zoek de sectie "[mysqld]"
  7. 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

  1. Stop de MySQL-databaseserver
  2. Verwijder de innodb_force_recovery optie uit de MySQL-configuratie zodat de databaseserver normaal kan werken.
  3. Herstart de MySQL-databaseserver.
  4. Verwijder de beschadigde MySQL-database van de server (verwijder het dumpbestand niet! Dat is uw back-up!)
  5. Maak een nieuwe database die u wilt herstellen.
  6. Importeer de mysqldump back-up naar de nieuwe database.

En je zou klaar moeten zijn.



  1. Een rapport maken met de rapportwizard in Microsoft Access

  2. SqlDataSourceEnumerator.Instance.GetDataSources() kan lokale SQL Server 2008-instantie niet vinden

  3. SQL Server equivalent aan Oracle's CREATE OR REPLACE VIEW

  4. Oproep naar ongedefinieerde functie oci_connect()