Se você obter ERROR '...' not found (errno:
23), Can't open file: ... (errno:
24), ou qualquer outro erro com errno
23 ou errno 24 no MySQL, significa
que você não alocou descritores de arquivo suficiente para o
MySQL. Você pode usar o utilitário perror
para obter uma descrição sobre o que o número de erro
significa:
shell>perror 23File table overflow shell>perror 24Too many open files shell>perror 11Resource temporarily unavailable
O problema aqui é que mysqld está tentando
manter aberto muitos arquivos simultanemanete. Você pode
também dizer para o mysqld não abrir muitos
arquivos de uma vez ou aumentar o número de descritores de
arquivos disponíveis para o mysqld.
Para dizer para o mysqld manter aberto poucos
arquivos por vez, você pode tornar a cache de tabela menor
usando a opção -O table_cache=32 para
mysqld_safe (o valor padrão é 64).
Reduzindo o valor de max_connections também
reduzirá o número de arquivos abertos (o valor padrão é 90).
Para alterar o número de descritores de arquivos disponíveis
para mysqld, você pode usar a opção
--open-files-limit=# para
mysqld_safe ou -O
open-files-limit=# para mysqld. See
Secção 4.6.8.4, “SHOW VARIABLES”. O modo mais fácil de fazer
isto é adicioar a opção ao seu arquivo de opção. See
Secção 4.1.2, “Arquivo de Opções my.cnf”. Se você tiver um versão antiga
do mysqld que não suporte isto, você pode
editar o script mysqld_safe. Existe uma linha
ulimit -n 256 comentada no script. Você pode
remover o caracter '#' para ``descomentar''
esta linha, e altere o número 256 para afetar o número de
descritores de arquivos disponíveis para
mysqld.
ulimit (e
open-files-limit) podem aumentar o número de
descritorese de arquivo, mas apenas até o limite imposto pelo
sistema operacional. Também há um limite 'maior' que só pode
ser sobrescrito se você iniciar o
mysqld_safe ou mysqld como
root (apenas se lembre que você também precisa usar a opção
--user=... neste caso). Se você precisa
aumentar o limite do SO no número dos descritores de arquivo
disponíveis para cada processo, cosulte a documentacão para
ser sistema operacional.
Note que se você rodar o shell tcsh,
ulimit não funcioará!
tcsh também relatará o valor incorreto
quando você pergunta pelo limite atual! Neste caso você deve
iniciar mysqld_safe com
sh!
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
