Nesse cenário particular, a partir do momento que você conectar no database não poderá visualizar uma ou mais tabelas, pois as mesmas irão estar ausentes.
Como exemplo, o arquivo de log do MySQL conterá algo parecido com as informações abaixo:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes InnoDB: than specified in the .cnf file 0 5242880 bytes! [ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB [ERROR] Aborting
Obs: Antes de fazer qualquer coisa, faça antes um backup de todos os arquivos MySQL e dos bancos de dados, mantendo sempre em um lugar seguro.
Para restaurar os dados da tabela tenha certeza que o diretório dos dados e seu conteúdo estejam intactos.
drwx------ 2 mysql mysql 4096 Oct 11 2012 performance_schema drwx------ 2 mysql mysql 4096 Dec 10 2012 ndbinfo drwx--x--x 2 mysql mysql 4096 Dec 10 2012 mysql -rw-rw---- 1 mysql mysql 56 Dec 19 2012 auto.cnf drwx------ 2 mysql mysql 4096 Jul 30 2013 bugs -rw-r----- 1 mysql mysql 50331648 Mar 18 10:35 ib_logfile0 -rw-r----- 1 mysql mysql 50331648 Apr 22 2013 ib_logfile1 -rw-r----- 1 mysql mysql 35651584 Mar 18 10:35 ibdata1 ..
- Ibdata1 – Esse arquivo é o table space InnoDB do sistema, no qual contém várias tabelas InnoDB e índices associados.
- *.frm – Mantém as informações de metadados para todas tabelas do MySQL. Esses arquivos estão localizados dentro da pasta correspondente da base de dados MySQL.
- ib_logfile* – Toda alteração de dado é escrita nesses arquivos de log. É similar ao conceito de archive logs do Oracle.
Copiar os arquivos
# service mysqld stop
Copie os arquivos ibdata e a pasta do schema do database para outro diretório. Essa pasta será utilizada para restaurar o Mysql database. Nesse exemplo, copiei todo conteúdo parao diretório /tmp.
# cp –r ibdata* ib_logfile* /tmp # cp –r schema_name/ /tmp/schema_name/
Start the MySQL server:
# service mysqld start
Para backup e restore da base MySQL você deve utilizar o comando mysqldump.
Restaurar os dados
Restaure a tabela conforme explicado abaixo.
No arquivo de configuração my.cnf, coloque o valor do seguinte parâmetro, correspondente ao tamanho atual do arquivo ib_logfile0 (Para saber o tamanho execute: “ls -lh ib_logfile0″).
No exemplo, coloquei para 48M:
innodb_log_file_size=48M
Perceba que os tamanhos dos arquivos ib_logfile0 e ib_logfile1 são iguais.
Copie o arquivo ibdata anterior para o respectivo diretório de dados do mysql.
# cp –r /tmp/ibdata* /var/lib/mysql/
Crie uma pasta vazia dentro desse diretório, com o mesmo nome do schema do database que vocês esta tentando restaurar. Copie também os arquivos .frm dentro desse arquivo conforme abaixo:
# cp –r /tmp/ib_logfile* /var/lib/mysql/
# cp –r /tmp/schema_name/*.frm /var/lib/mysql/schema_name/
Por último, restarte o MySQL server.