De recursos para mysqldump

21

Estou tentando fazer um mysqldump em um servidor Windows e recebo a seguinte mensagem de erro :

mysqldump: Got error: 23: Out of resources when opening file '.\db\sometable.MYD' (Errcode: 24) when using LOCK TABLES

Aqui está o comando que estou executando:

mysqldump -u user -p"pass" --lock-tables --default-character-set=latin1 -e --quick databasename > "query.sql"

Reiniciar o serviço mysql não ajudou.

Eu sempre recebo a mensagem para a mesma tabela.

Eu tentei reduzir as variáveis table_cache e max_connections de 64 para 32 e 30 para 10, respectivamente, mas ainda recebo o erro apenas dessa vez para uma tabela diferente ( e de agora em diante a mensagem de erro é sempre mencionando a segunda tabela).

O mesmo script está sendo executado em uma dúzia de outros servidores Windows que possuem o mesmo banco de dados sem problemas.

Todos os bancos de dados têm 85 tabelas.

    
por Philippe Carriere 20.01.2010 / 15:58

3 respostas

20

De acordo com aqui - "Código de erro do sistema operacional 24 : Muitos arquivos abertos ", que alinha-se com o erro mais geral 23" Out of resources ".

Portanto, parece que você está ficando sem identificadores de arquivo. Isso geralmente é a configuração / problema final do servidor, seja no MySQL ou no próprio SO.

Talvez verifique / ajuste a --open-files-limit configuração no MySQL e veja se isso ajuda.

Além disso, talvez tente executar o despejo, enquanto ninguém mais está usando o banco de dados, com o --single-transaction configuração em vez de --Lock-File , pois várias pessoas sugerem que isso funcionará uma tabela de cada vez, em vez de abri-las todas de uma vez (portanto, usar menos identificadores de arquivos).

Além disso, você provavelmente terá que encontrar uma causa raiz do motivo pelo qual esse servidor específico está ficando sem recursos. O que provavelmente envolveria a solução de problemas, desativando o máximo de serviços / processos possíveis e verificando se o despejo foi realizado. Então, descubra a partir daí quem é o culpado que está comendo muitos recursos e talvez não os liberando corretamente.

    
por 20.01.2010 / 18:25
5

Você está em condições de testá-lo com --single-transaction em vez de --lock-tables ? as tabelas são InnoDB e você não está usando tabelas de Cluster e que ALTER TABLE, DROP TABLE, RENAME TABLE e TRUNCATE TABLE não acontecerão durante o despejo? Melhor confirmar que está tudo bem com sua org de suporte ao MySQL se você tiver uma.

Eu só tentei isso no unix, mas basicamente, se eu tentar com um banco de dados com 2000 tabelas, ele falha com um erro semelhante ao seu. Eu usei todas as minhas alças de arquivos abertos.

    
por 20.01.2010 / 19:43
2

Você pode receber este erro:

MySQL: Errcode: 24 when using LOCK TABLES

... juntamente com outros erros quando você atualiza para o MySQL 5.5 e você está executando seus backups no Plesk ou qualquer outro sistema operacional executando mysqldump .

Para corrigir:

  1. Editar my.cnf
  2. Adicionar:

    open_files_limit=2048
    
  3. Reinicie o MySQL

Se você está recebendo:

Cannot load from mysql.proc. The table is probably corrupted (1548)

Isso é resultado de uma atualização para o 5.5. Execute:

mysql_upgrade --force

Testado e trabalhado no CentOS 6.7 e no Plesk 12.

    
por 19.10.2015 / 18:09

Tags