Isso aconteceu comigo em Laravel Homestead (Vagrant após um pânico no kernel rodando o Mac OS Sierra 10.12.4 (16E195):
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty
$ mysql -V
mysql Ver 14.14 Distrib 5.7.9, for Linux (x86_64) using EditLine
wrapper
Aqui estão alguns recursos que você pode experimentar, embora nenhuma das opções de reparo funcionou para mim :
link
link
link
Eu tentei adicionar a recuperação forçada ao mysql config (comece em 1 e aumente progressivamente, pois números supostamente mais altos podem causar danos permanentes):
sudo nano /etc/mysql/my.cnf
[mysqld]
innodb_force_recovery = 1
#innodb-read-only=1
#innodb_purge_threads=0
#key_buffer_size=16M
#event-scheduler=disabled
Em outra janela, execute:
tail -f /var/log/mysql/error.log
Em seguida, tente reiniciar o mysqld com as várias opções ativadas:
sudo /etc/init.d/mysql restart
Se expirar, você poderá forçar a reinicialização dos processos do mysql com:
# process id is first column with number, just ignore lines with grep because they list the process running 'grep mysql'
ps aux | grep mysql
sudo kill -9 <process-id>
sudo /etc/init.d/mysql restart
Se funcionar, o log mostrará algo como:
Version: '5.7.9' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
Se falhar, o log mostrará algo como:
InnoDB: Assertion failure in thread 140049488692992 in file log0recv.cc line 1420
Quando o pior veio, tentei remover os bancos de dados que provavelmente estavam corrompidos:
sudo ls -alt /var/lib/mysql
Descobri que o banco de dados em que eu estava trabalhando era o mais recentemente modificado no topo da lista. Felizmente eu tive um despejo SQL para ele a partir daquele dia, então foi capaz de removê-lo:
sudo rm -rf /var/lib/mysql/<database_name>
Eu deixei todos os outros arquivos, e o mysql foi capaz de iniciar de qualquer maneira.
UPDATE: lembre-se de desabilitar innodb_force_recovery = 1
quando o mysql estiver funcionando novamente, senão você obterá erros quando tentar modificar bancos de dados e tabelas.
Depois, recriou o banco de dados com o Sequel Pro, reimportou meus dados e foi capaz de prosseguir sem ter que jogar fora todos os bancos de dados de meus outros projetos.
Indo adiante, devo supor que qualquer banco de dados mysql pode ser corrompido e tentar manter backups diários e ter o script de recreação do banco de dados documentado ou codificado em minhas ferramentas de integração contínua.