Não há nada que você possa realmente fazer porque uma reversão está sendo feita através do espaço de tabela UNDO no ibdata1 , que deveria ter crescido imensamente.
Se você interromper o processo do mysqld e reiniciar o mysql, ele simplesmente continuará onde parou como parte do ciclo de recuperação de falhas.
AVISO LEGAL: Não nos responsabilizamos pela perda de dados
O que você pode fazer pode resultar na perda de dados para outras tabelas, mas há algo que você pode fazer para contornar o ciclo normal de recuperação de falhas do InnoDB.
Existe uma opção de inicialização chamada innodb_force_recovery , que permite ignorar vários estágios da recuperação de falhas do InnoDB.
De acordo com a documentação do MySQL sobre como forçar a recuperação do InnoDB , aqui estão as configurações e seus efeitos:
1 (SRV_FORCE_IGNORE_CORRUPT)
Deixe o servidor funcionar mesmo se detectar uma página corrompida. Tente fazer o comando SELECT * FROM nome_tabela saltar sobre páginas e registros de índice corrompidos, o que ajuda a despejar tabelas.
2 (SRV_FORCE_NO_BACKGROUND)
Impedir a execução do encadeamento mestre. Se ocorrer uma falha durante a operação de limpeza, esse valor de recuperação o impede.
3 (SRV_FORCE_NO_TRX_UNDO)
Não execute reversões de transação após a recuperação de falhas.
4 (SRV_FORCE_NO_IBUF_MERGE)
Impedir operações de mesclagem de buffer de inserção. Se eles causariam um acidente, não os faça. Não calcule estatísticas da tabela.
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
Não olhe para desfazer logs ao iniciar o banco de dados: o InnoDB trata até mesmo transações incompletas como confirmadas.
6 (SRV_FORCE_NO_LOG_REDO)
Não faça o rollo de redo log em conexão com a recuperação.
Com as alterações transacionais ocultas nos logs UNDO e REDO, você corre o risco de
- perda de dados destinados a serem gravados
- mantendo os dados a serem excluídos
Caso você espere efeitos colaterais ruins, faça backup de todo o / var / lib / mysql e coloque-o em algum lugar, caso deseje copiar ibdata1, ib_logfile0 e ib_logfile1 e tente novamente a recuperação normal.
Se o mysql estiver totalmente ativo em um dos modos
- mysqldump todos os dados, exceto a tabela incorreta
- mysql de desligamento
- remova tudo em / var / lib / mysql, exceto em / var / lib / mysql / mysql
- inicie o mysql
- recarregar o mysqldump
CAVEAT: Certifique-se de fazer backup de tudo !!!
Eu espero que isso ajude !!!