InnoDB restore from ibdata: “processo pós-início do mysql terminado com status 1”

1

Descobri tarde demais que o script de backup dos bancos de dados MySQL não estava funcionando corretamente. Ou seja, quando o disco no servidor já havia começado a falhar e eu entrei via SSH e obtive uma tela cheia de lixo binário corrompido. Restaurar a partir dos escassos backups que não eram apenas arquivos vazios de .sql.gz nos perdia cerca de um mês de dados. Eu realmente adoraria se pudesse evitar esse cenário.

Consegui fsck o disco e extraí o conteúdo do diretório /var/lib/mysql , com arquivos de 100MB ibdata1 , ib_logfile* e .frm e .opt para cada banco de dados em subdiretórios. Eu não tenho /etc/mysql/my.cnf , tudo abaixo parece estar perdido. Não há arquivos .ibd, presumivelmente porque innodb_file_per_table foi desativado.

Eu tenho uma instalação do MySQL 5.5 (mesma versão que falhou) na minha máquina de desenvolvimento e tentei restaurar os arquivos, seguindo as sugestões aqui e aqui . Eu coloquei os arquivos ibdata1 e .frm e .opt em /var/lib/mysql definir as permissões & owner nos arquivos o mesmo que os padrões (alguns mysql:mysql , alguns mysql:root ) depois de recriar as tabelas do esquema usando o cliente mysql.

Eu então executei o mysqld com o comando:

/usr/sbin/mysqld –innodb_log_file_size=4128768 –innodb_force_recovery=6

Termina imediatamente, sem saída. Um dmesg | tail mostra um monte de:

[  781.937089] init: mysql main process (1819) terminated with status 1
[  781.937127] init: mysql respawning too fast, stopped

Ambos /var/log/mysql.log e /var/log/mysql.err estão vazios.

Eu tentei várias variações sobre esse tema do processo de recuperação. Eu tentei copiar todo o diretório de dados mysql recuperado em /var/lib , eu tentei sobrescrever apenas ibdata1 e o subdiretório de banco de dados com as pastas .frm e .opt. Eu tentei com e sem os arquivos de log e incrementando o valor de recuperação de 1-6.

Se eu restaurar o diretório mysql original, o mysqld iniciará bem. O Apparmor não está sendo executado na máquina (algumas pessoas tiveram problemas com isso).

Eu li no MySQL Performance Blog da Percona que é possível restaurar os dados apenas do arquivo ibdata1. Eu só tenho 2 tabelas por banco de dados, e eu tenho o esquema - mas lendo o README fornecido com sua ferramenta de recuperação, parece que eu pelo menos preciso ser capaz de iniciar o mysql para obter informações sobre o espaço de tabela.

    
por Sam Finnigan 02.05.2013 / 00:35

0 respostas

Tags