Archive for janeiro, 2008


Saber isso é útil para podermos testar nossos aplicativos em situações de risco.

Em um típico servidor Debian, você encontrará os bancos de dados em /var/lib/mysql. Cada banco tem seu próprio diretório, composto de 3 arquivos por tabela. Uma tabela MyISAM vai estar então armazenada em:
– [tabela].frm – dados de criação da tabela (campos, etc);
– [tabela].MYI – índice (um ‘cache’ onde parte dos dados é duplicada pra que o acesso seja mais rápido);
– [tabela].MYD – onde os dados são efetivamente guardados.

Não parece ser muito comum arquivos .frm ou MYI serem corrompidos. Pelo menos até o momento não tive a felicidade de encontrar problemas com eles. O que acontece com freqüência em alguns servidores mais populares é corromper o MYD.

O arquivo MYD é um bando de dados. Como googlar pela estrutura do MYD não retornou nada de cara, vamos apelar pra engenharia reversa. Os dados parecem estar gravados da seguinte maneira:
– 6 bytes pra demarcar o começo de uma linha;
– 0-2 bytes pra demarcar o campo (depende do tipo de campo);
– Dados (o que estamos efetivamente guardando).
Ficamos com um arquivo assim:
Começo de linha – Campo – Dados – Campo – Dados – Começo de Linha – Campo – Dados ….

Inserir um dado com os mesmos bytes dos marcadores não vai corromper a tabela. MySQL não é tão burro assim. Corromper o dado em si, mesmo que seja feito diretamente no arquivo, também não vai corromper a tabela – só vai prejudicar o dado.

Para matar a tabela, mate os marcadores. Substitua-os por qualquer outra coisa usando um editor hexa como beav (apt-get install beav). Quanto mais marcadores você matar, mais problemas vai dar para o REPAIR TABLE.

O REPAIR TABLE parece usar o arquivo de índice para ajudar a recuperar dados. Se a sua estrutura usa indexação, em geral menos dados são perdidos.

Outra de economia: aqui vai uma tradução dos dez princípios fundamentais para os que não possuem PhD:

Infelizmente, novamente em inglês.

O video abaixo (em inglês) ilustra de forma didática, o que é e como funcionaria a web semântica.

Vale a pena conferir também a extensão Operator para o navegador Firefox que identifica Microformats nas páginas.