mysqldump를위한 자원 부족


21

Windows 서버 에서 mysqldump를 수행하려고하는데 다음과 같은 오류 메시지가 나타납니다 .

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

다음은 내가 실행중인 명령입니다 .

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

mysql 서비스를 다시 시작해도 도움이되지 않았습니다.

나는 항상 같은 테이블에 대한 메시지를받습니다.

table_cache 및 max_connections 변수를 각각 64에서 32로, 30에서 10으로 줄이려고 시도 했지만 여전히 다른 테이블에 대해 이번에 만 오류가 발생합니다 (지금부터는 오류 메시지가 항상 두 번째 테이블을 언급합니다).

동일한 스크립트가 동일한 데이터베이스를 가진 12 개의 다른 Windows 서버에서 문제없이 실행되고 있습니다.

모든 데이터베이스에는 85 개의 테이블이 있습니다.


어떤 운영 체제에서 MySQL을 실행하고 있습니까?
— davey

어디서나 Windows.
— Philippe Carriere

DB에 몇 개의 테이블이 있습니까? 일종의 파일 설명자 제한처럼 보입니다.
— davey

DB에 85 개의 테이블이 있습니다.
— Philippe Carriere

설명에 정보가 추가되었습니다.
— Philippe Carriere

답변:


21

여기 에 따르면 - "OS 오류 코드 24 : 열린 파일이 너무 많습니다"라는 일반적인 오류 23 "자원 부족"과 일치합니다.

따라서 파일 핸들이 부족한 것처럼 보입니다. 이것은 일반적으로 MySQL 또는 OS 자체에서 서버 엔드 설정 / 문제입니다.

아마도 MySQL 자체 의 --open-files-limit설정 을 확인 / 조정하고 이것이 도움이되는지 확인하십시오.

다른 사람이 더불어, DB를 사용하지 않는 동안 또한, 아마도, 덤프를 실행 해 --single-transaction설정 하는 대신 --Lock-File, 여러 사람이 (그러므로 덜 파일 핸들을 사용하여) 한 번에 모두를 여는 대신 한 번에 하나 개의 테이블을 작동 제안한다.

그 외에도이 특정 서버에 리소스가 부족한 이유에 대한 근본 원인을 찾아야 할 것입니다. 가능한 많은 서비스 / 프로세스를 비활성화하고 덤프가 통과하는지 확인하여 문제 해결이 필요할 수 있습니다. 그런 다음 거기에서 범인이 누가 너무 많은 자원을 소비하고 있고 올바르게 해제하지 않았는지 알아 내십시오.


2
--lock-tables 대신 단일 트랜잭션이 작동했습니다. 고마워
— Philippe Carriere

이상하게도 InnoDB를 사용하지 않지만이 매개 변수가 없으면 작동하지 않습니다. 단일 트랜잭션은 innoDB에만 관련이 있다고 생각했습니다.
— Philippe Carriere

좋은. :) 기뻤습니다.
— techie007

4
--lock-all-tables또한 --single-transactionInnoDB 이외의 테이블에서 작업 할 때 불일치 문제가 발생하지 않습니다 .
— freiheit

명확히하기 위해 : --single-transactionforces --lock-tables=off. 비 트랜잭션 테이블에서는 이것을 사용하지 마십시오.
— b2ag

6

예 --single-transaction를 --lock-tables들어 테이블이 InnoDB이고 클러스터 테이블을 사용하지 않고 덤프 중에 ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE이 발생하지 않는 대신 시도해보십시오 . MySQL 지원 조직 (있는 경우)에 문의하여 확인하십시오.

나는 유닉스에서만 이것을 시도했지만 기본적으로 2000 테이블이있는 DB로 시도하면 당신과 비슷한 오류로 실패합니다. 예를 들어 열려있는 모든 파일 핸들을 사용했습니다.


+1. 당신은 techie007과 같은 솔루션을 사용했지만 먼저 대답 했으므로 그의 대답을 받아들입니다. 기록을 위해, 나는 innoDB를 사용하지 않습니다.
— Philippe Carriere

2

이 오류가 발생할 수 있습니다 :

LOCK TABLES 사용시 MySQL : Errcode : 24

... MySQL 5.5로 업그레이드하고 Plesk 또는 다른 OS 실행에서 백업을 실행할 때 다른 오류와 함께 mysqldump.

고치다:

  1. 편집하다 my.cnf
  2. 더하다:

    open_files_limit=2048
    
  3. MySQL 재시작

수신중인 경우 :

mysql.proc에서로드 할 수 없습니다. 테이블이 손상되었을 수 있습니다 (1548).

이는 5.5로 업그레이드 한 결과입니다. 실행 :

mysql_upgrade --force

CentOS 6.7 및 Plesk 12에서 테스트 및 작업했습니다.


0

필립과 비슷한 문제가있었습니다. 덤프를 시작할 때 다음과 같은 오류가 발생했습니다.

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

간단한 명령을 사용했습니다.

mysqldump -uroot -p c1baznarz > c1baznarz.sql

따라서 mysqldump에 다른 명령을 추가합니다.

--single-transaction

덤프가 준비되었습니다. 따라서 모든 mysqldump 쿼리는 다음과 같습니다.

mysqldump -uroot -p --lock-tables --single-transaction c1baznarz > c1baznarz.sql
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.