CHECK TABLE bloqueando uma grande tabela InnoDB (12GB) no MySQL

2

Estou tendo problemas com uma grande tabela MySQL InnoDB e fiquei me perguntando se alguém aqui tinha conselhos para melhorar a estabilidade.

O problema que estou tendo é que CHECK TABLE ... FAST bloqueará a tabela, impedindo qualquer leitura e, para uma tabela tão grande, isso significa que ela ficará off-line por uma hora.

A instalação padrão do Debian executará CHECK TABLE em tudo sempre que o MySQL iniciar, e isso está causando tempo de inatividade. Por enquanto, eu desabilitei essa funcionalidade, mas isso me deixa um pouco nervosa com esse tipo de configuração do sistema.

Eu tenho outro cronjob que carregava dados em massa na tabela que estava usando ALTER TABLE ... DISABLE KEYS e ALTER TABLE ... ENABLE KEYS , e é possível que isso esteja relacionado, mas ainda não consegui confirmar isso.

Alguém viu situações em que CHECK TABLE impede o acesso a grandes tabelas InnoDB?

    
por Sam Minnée 21.03.2011 / 21:44

1 resposta

1

Eu escrevi no ServerFault por algum tempo de volta para mostrar que você não pode Desabilite as teclas e habilite as teclas em uma tabela InnoDB.

CHECK TABLE deve sempre tabelar qualquer tabela MyISAM ou InnoDB.

Você pode criar um script chamado /var/lib/mysql/my_init.sql com o seguinte

CHECK TABLE < seja qual for a tabela 1 & gt ;;
CHECK TABLE < qualquer tabela 2 & gt ;; ...

Este arquivo deve conter o número de tabelas que você deseja verificar em TABLE.

Agora adicione esta linha ao /etc/my.cnf

init_file = / var / lib / mysql / my_init.sql

Em seguida, reinicie o mysql e o script da tabela de verificação customizada será executado.

BTW, espero que você esteja usando innodb_file_per_table. Se você não for, leia este URL

    
por 21.03.2011 / 22:34

Tags