sql >> Databáze >  >> RDS >> Mysql

MAMP PRO havaruje; MySQL se po restartu nespustí

ÚVOD: Zní to špatně, ale než začnete jednat, přečtěte si prosím vše v této odpovědi. Nemůžete rozbít věci horší tím, že si dáte čas. Přečtěte si každý krok a doufejme, že to bude dostatečně jasné, abyste je mohli sledovat a znovu zprovoznit databázový server MySQL v MAMP Pro.

Zdá se tedy, že vaše databáze InnoDB se zhroutily. Ne samotnou aplikaci. Klíč je zde v protokolu:

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.

A vypadá to, že zde používáte MAMP PRO:

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

Otázka tedy zní, máte zálohu databází MAMP Pro? Buď přes mysqldump nebo něco jiného? Máte v instalaci MAMP další databáze InnoDB?

Také říkáte, že jste byli schopni spustit mysqldump , ale opravdu není možné, že by se databáze zhroutila. Předpokládám tedy, že když jste spustili mysqldump to byla další samostatná instalace MySQL do vašeho systému. Binární soubory MySQL, jako je mysqldump v MAMP nebo MAMP Pro nejsou totožné s celosystémovým mysqldump . Jsou to dvě 100% odlišné instalace. Můžete zkontrolovat, který mysqldump se používá zadáním tohoto příkazu:

which mysqldump

Chcete-li vidět celou cestu toho, co si myslíte, že jste používali. Instalace MAMP mysqldump —a další související binární soubory — se nachází zde:

/Applications/MAMP/Library/bin/

A spustit jej přímo bez úpravy $PATH hodnota (úplně jiná věc) je spustit to takto:

/Applications/MAMP/Library/bin/mysqldump

ČTĚTE PROSÍM POZORNĚ: Vezměte prosím na vědomí, že rada, kterou vám dávám níže, je, že předkládám všechny způsoby, jak bych takovou situaci řešil. Pokud databáze InnoDB není důležitá, udělejte můj první návrh na odstranění souborů DB specifických pro InnoDB. Pokud máte mysqldump zálohování, proveďte totéž, ale obnovte mysqldump zálohování.

InnoDB také není výchozí modul úložiště. Musíte jít ze své cesty, abyste to nastavili. Výchozí nastavení je MyISAM. Každá nová databáze vytvořená v MySQL bude MyISAM. Tak tohle ti pomůže. Musíte si nasadit čepici myšlení a zjistit, které databáze mají nastavené úložné stroje InnoDB. Pokud říkáte, že máte 25, ale pouze 1 má InnoDB, snadné řešení. Ale také pokud máte 25 databází, měli byste si zvyknout na pravidelné mysqldump zálohy. Pokud byste měli zálohy, byla by to bolest hlavy, ale bylo by to přímočaré řešení.

JEDNA MOŽNOST:Smažte poškozené věci InnoDB a obnovte je z mysqldump zálohování.

První věc, kterou bych na vašem místě udělal, je záloha mysql adresář v /Library/Application Support/appsolute/MAMP PRO/db/ takže můžete mít alespoň zálohu poškozených souborů pro každý případ.

Potom bych smazal následující soubory:

/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

To jsou soubory specifické pro InnoDB. Smažte je a poté se pokuste znovu spustit MAMP. Mělo by to přijít. Ale jakákoli databáze InnoDB v MAMP bude v nějakém „zombie“ stavu. Měli byste tyto databáze odstranit a znovu vytvořit ze zálohy. Nebo od nuly, pokud můžete.

DALŠÍ MOŽNOST:Zkuste znovu zprovoznit server MySQL pomocí innodb_force_recovery .

Nyní při náhodné příležitosti, kterou potřebujete obnovit tuto DB, můžete spustit pokus o nastavení innodb_force_recovery jak je popsáno zde.

Zdá se, že pro MAMP Pro můžete upravit svůj konfigurační soubor MySQL podle těchto pokynů:

  1. Spusťte MAMP Pro.
  2. Zastavte server MAMP Pro, pokud je spuštěný.
  3. Vyberte Soubor -> Upravit šablonu -> MySQL my.cnf
  4. Zobrazí se okno editoru.
  5. Pokud se zobrazí varovná zpráva, potvrďte ji tlačítkem OK.
  6. Najděte sekci „[mysqld]“
  7. Pod poslední řádek této části přidejte tento řádek:innodb_force_recovery = 1

A jak vysvětluje dokumentace MySQL , jedná se výhradně o zprovoznění databáze, abyste mohli provést zálohu pomocí mysqldump :

Nyní existuje asi 6 různých hodnot pro innodb_force_recovery ale měli byste to opravdu zkusit pouze s 1 pro teď. Pokud chcete vyzkoušet každý ze 6, zde je rozpis:

Pokud se vám stane, že databázi zprovozníte a pak můžete provést mysqldump pak gratuluji! Jste v čistotě! Nejlepším dalším krokem je

  1. Zastavte databázový server MySQL
  2. Odstraňte soubor innodb_force_recovery možnost z konfigurace MySQL, aby databázový server mohl normálně fungovat.
  3. Restartujte databázový server MySQL.
  4. Smažte poškozenou databázi MySQL ze serveru (Neodstraňujte soubor výpisu! To je vaše záloha!)
  5. Vytvořte novou databázi, kterou chcete obnovit.
  6. Importujte soubor mysqldump zálohování do nové databáze.

A měli byste být hotovi.



  1. ASP.NET používá SqlConnection connect MySQL

  2. Mysql - Prevence duplicitních záznamů kombinovaných sloupců s jedinečným indexem

  3. mysqldump Chyba 1045 Přístup odepřen navzdory správným heslům atd

  4. Nová verze MariaDB AX s MariaDB ColumnStore 1.1.3 GA