Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MAMP PRO trava; MySQL não iniciará na reinicialização


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:
  1. Inicie o MAMP Pro.
  2. Pare o servidor MAMP Pro se estiver em execução.
  3. Selecionar arquivo -> Editar modelo -> MySQL my.cnf
  4. Uma janela do editor é exibida.
  5. Se aparecer uma mensagem de aviso, confirme com OK.
  6. Encontre a seção "[mysqld]"
  7. 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 é
  1. Parar o servidor de banco de dados MySQL
  2. Remova o innodb_force_recovery opção da configuração do MySQL para que o servidor de banco de dados possa operar normalmente.
  3. Reinicie o servidor de banco de dados MySQL.
  4. Exclua o banco de dados MySQL corrompido do servidor (não exclua o arquivo de despejo! Esse é o seu backup!)
  5. Crie um novo banco de dados que você deseja recuperar.
  6. Importar o mysqldump backup no novo banco de dados.

E você deve ser feito.