Sou um administrador de um jogo social que usa o MySQL (Percona 5.1.56 para ser preciso) para armazenamento de dados (todas as tabelas possuem tipo InnoDB). Existem cerca de 2 milhões de jogadores no jogo e o tamanho do banco de dados é de cerca de 100Gb e está crescendo gradualmente. Existem algumas tabelas que já têm > 500 milhões de registros.
O jogo DB está rodando de maneira bastante suave, mesmo que não seja compartilhado em um único servidor Debian Linux 6 não-virtualizado (24 GB de RAM, hardware Adaptec RAID-10, com um par de escravos somente para leitura). O problema é que, de tempos em tempos (uma vez por mês ou dois), o MySQL trava com a corrupção de dados da seguinte forma:
InnoDB: Database page corruption on disk or a failed InnoDB: file read of page XXXX.
InnoDB: You may have to recover from a backup.
Restaurar de tais erros é um processo bastante doloroso. O que geralmente requer a promoção de um dos escravos como um novo mestre, direcionando o tráfego para este novo mestre e criando o escravo de backup para este mestre. Há algum tempo de inatividade que deixa os jogadores realmente loucos ...
O pessoal do Percona me disse que foi culpa do hardware e, no começo, eu pensei que era o hardware também, mas depois que mudei vários servidores eu não sei o que pensar realmente. / p>
Existe alguma chance de o MySQL corromper os dados? Eu já comecei a olhar para alternativas (por exemplo, PostgreSQL, ou até mesmo algo radical como Cassandra). Mas é claro que sei que cada novo produto tem sua própria bagagem de insetos e peculiaridades, sem mencionar os custos da migração ...
Estou puxando meu cabelo (hoje enfrentei outro acidente), então se você tiver alguma idéia, por favor, compartilhe ...