Estou tentando fazer um mysqldump em umjanelasservidor e recebo o seguintemensagem de erro:
mysqldump: Got error: 23: Out of resources when opening file '.\db\sometable.MYD' (Errcode: 24) when using LOCK TABLES
Aqui está ocomandoEstou correndo :
mysqldump -u user -p"pass" --lock-tables --default-character-set=latin1 -e --quick databasename > "query.sql"
Reiniciar o serviço mysql não ajudou.
Sempre recebo a mensagem para a mesma mesa.
Eu tentei reduzir otabela_cacheemax_connectionsvariáveis de 64 a 32 e 30 a 10 respectivamente, mas ainda recebo o erro, só que desta vez para uma tabela diferente (e de agora em diante a mensagem de erro sempre menciona a segunda tabela).
O mesmo script está sendo executado em uma dúzia de outrosjanelasservidores com o mesmo banco de dados sem problemas.
Todos os bancos de dados possuem 85 tabelas.
Responder1
De acordo comaqui- "Código de erro do sistema operacional 24: Muitos arquivos abertos" que se alinha com o erro mais geral 23 "Sem recursos".
Parece que você está ficando sem identificadores de arquivo. Geralmente, isso é uma configuração/problema do servidor, no MySQL ou no próprio sistema operacional.
Talvez verifique/ajuste o--open-files-limit
contextono próprio MySQL e veja se isso ajuda.
Além disso, talvez tente executar o dump, enquanto ninguém mais estiver usando o banco de dados, com o--single-transaction
contextoem vez de --Lock-File
, como várias pessoas sugerem, isso funcionará em uma tabela por vez, em vez de abri-las todas de uma vez (portanto, usando menos identificadores de arquivo).
Além disso, você provavelmente terá que encontrar a causa raiz do motivo pelo qual esse servidor específico está ficando sem recursos. O que provavelmente envolveria a solução de problemas, desabilitando tantos serviços/processos quanto possível e verificando se o despejo foi concluído. Então descubra a partir daí quem é o culpado que está consumindo muitos recursos e talvez não os liberando corretamente.
Responder2
Você está em condições de experimentá-lo --single-transaction
em vez de --lock-tables
, por exemplo, as tabelas são InnoDB e você não está usando tabelas Cluster e que ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE não acontecerão durante o dump? É melhor confirmar se está tudo bem com sua organização de suporte MySQL, se você tiver uma.
Eu só tentei isso no Unix, mas basicamente se eu tentar com um banco de dados com 2.000 tabelas, ele falhará com um erro semelhante ao seu, por exemplo, usei todos os meus identificadores de arquivos abertos.
Responder3
Você pode receber este erro:
MySQL: Código de erro: 24 ao usar LOCK TABLES
... junto com outros erros quando você atualiza para o MySQL 5.5 e está executando seus backups no Plesk ou qualquer outro sistema operacional em execução mysqldump
.
Consertar:
- Editar
my.cnf
Adicionar:
open_files_limit=2048
Reinicie o MySQL
Se você estiver recebendo:
Não é possível carregar do mysql.proc. A tabela provavelmente está corrompida (1548)
Isso é resultado de uma atualização para 5.5. Executar:
mysql_upgrade --force
Testado e trabalhado no CentOS 6.7 e Plesk 12.
Responder4
Eu tive um problema semelhante ao de Philipe. Quando comecei o dump, vi um erro como este:
mysqldump: Got error: 23: Out of resources when opening file './c1baznarz/timecard.MYD' (Errcode: 24) when using LOCK TABLES
Usei um comando simples:
mysqldump -uroot -p c1baznarz > c1baznarz.sql
Então, adiciono outro comando ao meu mysqldump:
--single-transaction
e o despejo está pronto. Então, toda a minha consulta mysqldump se parece com isto:
mysqldump -uroot -p --lock-tables --single-transaction c1baznarz > c1baznarz.sql