Dicas 11:15 AM
Mysql – Error 1114 – Table is full
Recentemente instalei o Zabbix no servidor da minha rede para monitorar algumas máquinas, inclusive ele próprio. Ontem passei o dia configurando os itens a serem monitorados das minhas máquinas e tudo estava funcionando perfeitamente bem, com todos os gráficos sendo gerados e todas as estatísticas computadas.
Hoje ao chegar na empresa, fui direto ver a tela de gráficos que configurei e qual não foi minha surpresa ao verificar que os gráficos estavam todos em branco. Como por padrão o zabbix exibe o gráfico com período de 1 hora, alterei para 24 horas e pude notar que a última atualização no gráfico ocorreu ontem por volta das 23hrs, no entanto as estatísticas continuavam sendo coletadas. Seria esse um erro no serviço zabbix? Felizmente não existe nenhum problema com o Zabbix pelo que pude verificar ao reinicia-lo, no entanto continuo sem geração dos gráficos.
Alterei o nível de debug no arquivo zabbix-server.conf para 4 na linha com o parâmetro DebugLevel e reiniciei novamente o serviço. Dessa forma consegui verificar no log do servidor o problema que estava acontecendo:
# tail -f /var/log/zabbix/zabbix_server.log
013359:20061124:105552 Query::insert into trends \\
(clock,itemid,num,value_min,value_avg,value_max) values \\
(1164369600,17543,1,1041.594705,1041.594705,1041.594705)
013359:20061124:105552 Query failed:The table 'trends' is full [1114]
Table is full? Como isso pode acontecer? Como utilizo o Mysql para o Zabbix imaginei logo que o banco devia ter crescido demasiadamente e dessa forma teria enchido a partição /var. Uma rápida consulta ao espaço livre em disco (df) me mostrou que ainda existe muito espaço livre na partição /var então isso não pode ser um problema de espaço em disco para o Mysql.
Verifiquei que a tabela trends só tem cerca de 1 milhão de registros, o que não é muito pois já tive tabelas em algumas base de dados com muito mais do que essa quantidade de registros.
Resolvi tentar executar a query direto no mysql para ver o que acontecia
# mysql -p Enter password: Database changed mysql> use zabbix mysql> insert into trends (clock,itemid,num,value_min,value_avg,value_max) \\ values (1164369600,17539,1,112.790411,112.790411,112.790411); ERROR 1114: The table 'trends' is full
Procurar no google por “mysql error 1114 table is full” não me retornou resultados satisfatórios então resolvi pesquisar no mysql mesmo a raiz do problema.
Imaginei que deveria existir alguma variável limitando o tamanho da tabela ou algo parecido. Com o comando show variables é possível verificar as variáveis atuais do mysql.
Como não existia nenhuma variável que aparentemente estivesse limitando o tamanho das tabelas, resolvi verificar as variáveis pertinentes ao tipo de tabela innodb uma vez que esse é o tipo das tabelas usadas pelo zabbix.
A variável que me pareceu mais passível de estar limitando o tamanho das tabelas foi a “innodb_data_file_path” cujo valor estava definido como ibdata1:10M:autoextend:max:128M (provavelmente o padrão do mysql), no entanto o nome da variável não indicava exatamente limitação de tamanho da tabela, mas de qualquer forma era bom verificar.
Procurando no google por esse valor achei um blog onde o autor do post relatava o mesmo problema que o meu com o zabbix e tableas do tipo innodb e coincidentemente a mesma distribuição Linux estava sendo usada: Gentoo.
Pelo que entendi o problema realmente estava na definição do tamanho máximo definido pro arquivo InnoDB (ibdata1). O autor do post indica o endereço http://www.browardphp.com/mysql_manual_en/manual_InnoDB.html onde a configuração do InnoDB é explicada.
De acordo com as especificações do site, alterei o parâmetro innodb_data_file_path para ibdata1:10M:autoextend, reiniciei o mysql e o zabbix, e pronto, o zabbix voltou a gerar os gráficos novamente.
# vi /etc/my/mysql.cnf innodb_data_file_path = ibdata1:10M:autoextend # /etc/init.d/mysql restart # /etc/init.d/zabbix-server restart
Não esqueça de alterar novamente o nível de debug no arquivo zabbix-server.conf
Referências
- The Geekery » Open Source
- MySQL Reference Manual for version 5.0.3-alpha – 15 The InnoDB Storage Engine
Posts Relacionados:
- Instalando Mysql 5 e Php 5 no Fedora Core 4
- Monitoramento com Zabbix – Parte 2 – Monitorando Hosts e dispositivos
Related posts brought to you by Yet Another Related Posts Plugin.