PREFÁCIO: Isso parece ruim, mas certifique-se de ler tudo nesta resposta antes de agir. Você não pode piorar as coisas tomando seu tempo. Leia cada passo e espero que isso seja claro o suficiente para você seguir e colocar seu servidor de banco de dados MySQL no MAMP Pro em funcionamento novamente.
Então, parece que seus bancos de dados InnoDB travaram. Não o aplicativo em si. A chave está aqui no 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.
E parece que você está usando o MAMP PRO aqui:
/Library/Application Support/appsolute/MAMP PRO/db/mysql
Então a pergunta é:você tem um backup dos bancos de dados do MAMP Pro? Ou via
mysqldump
ou outra coisa? Você tem outros bancos de dados InnoDB em sua instalação do MAMP? Além disso, você diz que conseguiu executar o
mysqldump
, mas realmente não é possível que o banco de dados falhe. Então, estou assumindo que quando você executou o mysqldump
essa foi outra instalação separada do MySQL em seu sistema. Os binários do MySQL como mysqldump
no MAMP ou MAMP Pro não são os mesmos que o mysqldump
em todo o sistema . São duas instalações 100% diferentes. Você pode verificar qual mysqldump
está sendo usado digitando este comando:which mysqldump
Para ver o caminho completo do que você acredita que estava usando. A instalação MAMP de
mysqldump
—e outros binários relacionados—está localizado aqui:/Applications/MAMP/Library/bin/
E para executá-lo diretamente sem modificar seu
$PATH
value (uma outra coisa) é executá-lo assim:/Applications/MAMP/Library/bin/mysqldump
LEIA ATENTAMENTE: Por favor, note que o conselho que estou dando a você abaixo é eu apresentando todas as maneiras pelas quais eu lidaria com uma situação como essa. Se o banco de dados InnoDB não for importante, apenas faça minha primeira sugestão de descartar os arquivos de banco de dados específicos do InnoDB. Se você tiver um
mysqldump
backup, faça a mesma coisa, mas recupere o mysqldump
cópia de segurança. Além disso, o InnoDB não um mecanismo de armazenamento padrão. Você tem que sair do seu caminho para definir isso. O padrão é MyISAM. Qualquer novo banco de dados criado no MySQL será MyISAM. Então isso vai te ajudar. Você precisa colocar em seu limite de pensamento e descobrir quais bancos de dados têm os mecanismos de armazenamento InnoDB configurados. Se você diz que tem 25, mas apenas 1 tem InnoDB, solução fácil. Mas também se você tiver 25 bancos de dados, você deve adquirir o hábito de fazer o
mysqldump
regular backups. Se você tivesse backups, isso seria uma dor de cabeça, mas uma coisa simples de resolver. UMA OPÇÃO:Exclua o material corrompido do InnoDB e recupere de um
mysqldump
backup. A primeira coisa que eu faria se fosse você é fazer backup do
mysql
diretório em /Library/Application Support/appsolute/MAMP PRO/db/
para que você possa pelo menos ter um backup dos arquivos corrompidos por precaução. Então eu excluiria os seguintes arquivos:
/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
Esses são arquivos específicos do InnoDB. Exclua-os e tente iniciar o MAMP novamente. Deve surgir. Mas qualquer banco de dados InnoDB no MAMP estará em algum estado “zumbi”. Você deve excluir esses bancos de dados e recriar a partir do backup. Ou do zero, se puder.
OUTRA OPÇÃO:Tente colocar o servidor MySQL em funcionamento novamente com
innodb_force_recovery
. Agora, se você precisar recuperar esse banco de dados, tente definir um
innodb_force_recovery
como descrito aqui. Para o MAMP Pro, parece que você pode editar seu arquivo de configuração do MySQL de acordo com estas instruções:
- Inicie o MAMP Pro.
- Pare o servidor MAMP Pro se estiver em execução.
- Selecionar arquivo -> Editar modelo -> MySQL my.cnf
- Uma janela do editor é exibida.
- Se aparecer uma mensagem de aviso, confirme com OK.
- Encontre a seção "[mysqld]"
- Abaixo da última linha desta seção, adicione esta linha:
innodb_force_recovery = 1
E como explica a documentação do MySQL , isso é estritamente para colocar o banco de dados em funcionamento para que você possa fazer um backup via
mysqldump
:Agora existem cerca de 6 valores diferentes para
innodb_force_recovery
mas você deve tentar apenas com 1
por enquanto. Se você quiser tentar cada um dos 6, aqui está um detalhamento:Se acontecer de você colocar o banco de dados em funcionamento e, em seguida, pode fazer um
mysqldump
então parabéns! Você está em claro! O melhor próximo passo é - Parar o servidor de banco de dados MySQL
- Remova o
innodb_force_recovery
opção da configuração do MySQL para que o servidor de banco de dados possa operar normalmente. - Reinicie o servidor de banco de dados MySQL.
- Exclua o banco de dados MySQL corrompido do servidor (não exclua o arquivo de despejo! Esse é o seu backup!)
- Crie um novo banco de dados que você deseja recuperar.
- Importar o
mysqldump
backup no novo banco de dados.
E você deve ser feito.