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_cachemax_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.