Amigos do Fórum,
Como alguns puderam notar, tivemos um problema no banco de dados do fórum, durante um manutenção de rotina. O problema foi grave e corremos o risco de perder TODOS os dados do fórum, devido a uma sucessão de problemas.
Antes da manutenção, o fórum estava funcionando normalmente, mas haviam alguns pacotes de updates a serem instalados. Entre os pacotes, havia um do servidor MySQL. Como o primeiro procedimento, realizei um backup completo do BD, utilizando o mysqldump, antes de começar a atualização.
Fiz a atualização dos pacotes e o serviço do MySQL foi reiniciado automaticamente. Ao acessar o fórum, notei uma mensagem informando um problema em uma das tabelas. Ao entrar no MySQL notei que estavam faltando várias tabelas, exatamente todas que usavam a engine MyISAM. Olhando a mensagem no log do MySQL, vi várias mensagens como essa:
121208 12:01:58 [ERROR] Cannot find or open table forum/smf_topics from
the internal data dictionary of InnoDB though the .frm file for the
table exists. Maybe you have deleted and recreated InnoDB data
files but have forgotten to delete the corresponding .frm files
of InnoDB tables, or you have moved .frm files to another database?
or, the table contains indexes that this version of the engine
doesn't support.
See
http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting.htmlhow you can resolve the problem.
Entrando no diretório onde ficam os arquivos do BD (/var/lib/mysql/forum), notei que as tabelas que estavam faltando não tinham os arquivos .frm, somente os .MYD e .MYI.
Tentei recuperar o dump do fórum executado antes do update, mas ele também não copiou as tabelas que faltavam, ficando do mesmo jeito. O mais incrível é que temos uma política de backups diários, que são rotacionados, e os backups de UMA SEMANA estavam com o mesmo problema, faltando tabelas. Ou seja, era um problema que existia há mais de uma semana e não notamos.
Passei várias horas procurando no Google, uma solução para o problema, mas ainda encontrei. Vi que é possível recuperar o .MYI a partir do .frm, mas não encontrei o processo inverso.
Fora os backups do MySQL, temos também um serviço de backup completo do sistema. Tínhamos dois backups que poderiam ajudar, um de uma semana atrás e um de duas semanas atrás. Tentamos recuperar ambos, sem sucesso, pois as tabelas ainda faltavam.
Por pura sorte, tinha em meu notebook pessoal, um backup completo e funcional, de seis meses atrás. Restaurei esse backup em outro banco de dados e copiei os arquivos que faltavam, para o servidor. Contudo, ainda faltavam duas tabelas completas, que a sorte ajudando novamente, não eram tabelas essenciais e que foram recuperadas de uma instalação zerada do sistema SMF.
Enfim, o fórum subiu e voltou.
Peço desculpas a todos, pelo problema e pela demora na solução, vamos reavaliar nossa política de backups, afim de evitar que situações como essa ocorram novamente.