INDLEDNING: Det lyder dårligt, men sørg for at læse alt i dette svar, før du handler. Du kan ikke bryde tingene værre ved at tage din tid. Læs hvert trin, og forhåbentlig vil dette være tydeligt nok til, at du kan følge og få din MySQL-databaseserver i MAMP Pro op at køre igen.
Så det ser ud til, at dine InnoDB-databaser styrtede ned. Ikke selve appen. Nøglen er her i loggen:
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.
Og det ser ud til, at du bruger MAMP PRO her:
/Library/Application Support/appsolute/MAMP PRO/db/mysql
Så spørgsmålet er, har du en sikkerhedskopi af MAMP Pro-databaserne? Enten via mysqldump
eller noget andet? Har du andre InnoDB-databaser i din MAMP-installation?
Du siger også, at du var i stand til at køre mysqldump
, men det er virkelig ikke muligt, at databasen er gået ned. Så jeg går ud fra, da du kørte mysqldump
det var en anden, separat installation af MySQL på dit system. MySQL binære filer såsom mysqldump
i MAMP eller MAMP Pro er ikke det samme som mysqldump
på hele systemet . Det er to 100% forskellige installationer. Du kan tjekke hvilken mysqldump
bliver brugt ved at indtaste denne kommando:
which mysqldump
At se den fulde vej for det, du tror, du brugte. MAMP-installationen af mysqldump
-og andre relaterede binære filer - er placeret her:
/Applications/MAMP/Library/bin/
Og at køre det direkte uden at ændre din $PATH
værdi (en helt anden ting) er at køre det sådan her:
/Applications/MAMP/Library/bin/mysqldump
LÆS VENLIGST OMHYGGELIGT: Bemærk venligst, at det råd, jeg giver dig nedenfor, er, at jeg præsenterer alle måder, jeg ville håndtere en situation som denne. Hvis InnoDB-databasen ikke er vigtig, skal du bare gøre mit første forslag om at kassere de InnoDB-specifikke DB-filer. Hvis du har en mysqldump
backup, gør det samme, men gendan mysqldump
backup.
Desuden er InnoDB ikke en standardlagringsmotor. Du skal gå ud af din måde at indstille det. Standard er MyISAM. Enhver ny DB oprettet i MySQL vil være MyISAM. Så dette vil hjælpe dig. Du skal tage din tænkehætte på og finde ud af, hvilke databaser der har indstillet InnoDB-lagringsmotorer. Hvis du siger, at du har 25, men kun 1 har InnoDB, nem løsning. Men også hvis du har 25 databaser, bør du vænne dig til at lave almindelig mysqldump
sikkerhedskopier. Hvis du havde sikkerhedskopier, ville dette være en hovedpine, men en ligetil ting at løse.
ÉN MULIGHED:Slet de beskadigede InnoDB-ting og gendan fra en mysqldump
backup.
Den første ting, jeg ville gøre, hvis jeg var dig, er at tage backup af mysql
bibliotek i /Library/Application Support/appsolute/MAMP PRO/db/
så du i det mindste kan have en sikkerhedskopi af de beskadigede filer for en sikkerheds skyld.
Så ville jeg slette følgende filer:
/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
Det er InnoDB-specifikke filer. Slet dem, og forsøg derefter at starte MAMP igen. Det burde komme op. Men enhver InnoDB-database i MAMP vil være i en eller anden "zombie"-tilstand. Du bør slette disse databaser og genskabe dem fra backup. Eller fra bunden, hvis du kan.
ANDEN MULIGHED:Prøv at få MySQL-serveren op at køre igen med innodb_force_recovery
.
Nu ved den umiddelbare chance, du har brug for at gendanne den DB, kan du køre et forsøg på at indstille en innodb_force_recovery
som beskrevet her.
For MAMP Pro ser det ud til, at du kan redigere din MySQL-konfigurationsfil i henhold til disse instruktioner:
- Start MAMP Pro.
- Stop MAMP Pro-serveren, hvis den kører.
- Vælg Filer -> Rediger skabelon -> MySQL my.cnf
- Et redigeringsvindue vises.
- Hvis en advarsel vises, bekræft med OK.
- Find afsnittet "[mysqld]"
- Tilføj denne linje under den sidste linje i dette afsnit:
innodb_force_recovery = 1
Og som MySQL-dokumentationen forklarer
, dette er udelukkende for at få databasen op at køre, så du kan lave en sikkerhedskopi via mysqldump
:
Nu er der omkring 6 forskellige værdier for innodb_force_recovery
men du bør egentlig kun forsøge med 1
for nu. Hvis du vil prøve hver af de 6, er her en oversigt:
Hvis du tilfældigvis får databasen op at køre og derefter kan lave en mysqldump
så tillykke! Du er klar! De bedste næste skridt er at
- Stop MySQL-databaseserveren
- Fjern
innodb_force_recovery
mulighed fra MySQL-konfigurationen, så databaseserveren kan fungere normalt. - Genstart MySQL-databaseserveren.
- Slet den beskadigede MySQL-database fra serveren (Slet ikke dumpfilen! Det er din sikkerhedskopi!)
- Opret en ny database, du vil gendanne.
- Importer
mysqldump
backup til den nye database.
Og du burde være færdig.