Sin recursos para mysqldump

21

Estoy tratando de hacer un mysqldump en un servidor de Windows y recibo el siguiente mensaje de error :

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

Aquí está el comando que estoy ejecutando:

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

Reiniciar el servicio mysql no ayudó.

Siempre recibo el mensaje para la misma mesa.

He intentado reducir los table_cache y max_connections las variables de 64 a 32 y 30 a 10 respectivamente, pero todavía consigo el error sólo que esta vez para una tabla diferente (y de ahora en adelante el mensaje de error siempre se mentionning la segunda tabla).

El mismo script se ejecuta en una docena de otros servidores de Windows que tienen la misma base de datos sin problemas.

Todas las bases de datos tienen 85 tablas.

Philippe Carriere
fuente
¿En qué sistema operativo tienes MySQL ejecutándose?
davey
Ventanas por todos lados.
Philippe Carriere
¿Cuántas tablas en el DB? Parece una especie de límite de descriptor de archivo.
davey
85 tablas en el DB.
Philippe Carriere
Informaciones agregadas a la descripción.
Philippe Carriere

Respuestas:

21

De acuerdo con aquí - "Código de error del sistema operativo 24: Demasiados archivos abiertos" que se alinea con el error más general 23 "Sin recursos".

Por lo tanto, parece que se está quedando sin identificadores de archivo. Este suele ser un problema / configuración del servidor, ya sea en MySQL o en el sistema operativo.

Quizás verifique / ajuste la --open-files-limitconfiguración en MySQL y vea si eso ayuda.

Además, quizás intente ejecutar el volcado, mientras que nadie más está utilizando la base de datos, con la --single-transactionconfiguración en lugar de --Lock-File, ya que varias personas sugieren que esto funcionará una tabla a la vez en lugar de abrirlas todas a la vez (por lo tanto, utilizando menos identificadores de archivo).

Más allá de eso, probablemente tendrá que encontrar una causa raíz de por qué este servidor en particular se está quedando sin recursos. Lo que probablemente implicaría la resolución de problemas al deshabilitar tantos servicios / procesos como sea posible y ver si el volcado continúa. Luego, descubra a partir de ahí quién es el culpable que está consumiendo demasiados recursos y tal vez no los está liberando correctamente.

techie007
fuente
2
--single-transacción en lugar de --lock-tables funcionó. Muchas gracias.
Philippe Carriere
Curiosamente, no estoy usando InnoDB pero no funciona sin este parámetro. Pensé que una sola transacción solo era relevante con innoDB.
Philippe Carriere
Agradable. :) Me alegro de que haya ayudado.
techie007
44
--lock-all-tablestambién funciona y no tiene los problemas de inconsistencia de --single-transactioncuando se trabaja en tablas que no son InnoDB.
Freiheit
Solo para aclarar: --single-transactionfuerzas --lock-tables=off. No use esto en tablas no transaccionales.
b2ag
6

¿Está en condiciones de probarlo en --single-transactionlugar de, --lock-tablespor ejemplo, las tablas son InnoDB y no está utilizando tablas de clúster y que ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE no ocurrirá durante el volcado? Mejor confirme que esto está bien con su organización de soporte MySQL si tiene una.

Solo he intentado esto en Unix, pero básicamente si intento con un DB con 2000 tablas, falla con un error similar al tuyo, por ejemplo, he usado todos mis identificadores de archivos abiertos.

davey
fuente
+1. Su solución es la misma que techie007 también funcionó, pero él respondió primero, así que acepto su respuesta. Para los registros, no estoy usando innoDB.
Philippe Carriere
2

Puede obtener este error:

MySQL: Errcode: 24 cuando se usan LOCK TABLES

... junto con otros errores cuando actualiza a MySQL 5.5 y ejecuta sus copias de seguridad en Plesk o en cualquier otro sistema operativo que se esté ejecutando mysqldump.

Arreglar:

  1. Editar my.cnf
  2. Añadir:

    open_files_limit=2048
    
  3. Reiniciar MySQL

Si estás recibiendo:

No se puede cargar desde mysql.proc. La tabla probablemente está dañada (1548)

Este es el resultado de una actualización a 5.5. Ejecutar:

mysql_upgrade --force

Probado y trabajado en CentOS 6.7 y Plesk 12.

Marcos Paulino Chahin
fuente
0

Tuve un problema similar al de Philipe. Cuando comienzo a volcar vi un error como este:

mysqldump: Got error: 23: Out of resources when opening file './c1baznarz/timecard.MYD' (Errcode: 24) when using LOCK TABLES

Usé un comando simple:

mysqldump -uroot -p c1baznarz > c1baznarz.sql

Entonces, agrego otro comando a mi mysqldump:

--single-transaction

Y el volcado está listo. Entonces, mi consulta de mysqldump se ve así:

mysqldump -uroot -p --lock-tables --single-transaction c1baznarz > c1baznarz.sql
Grzegorz Brzęczyszczykiewicz
fuente