mysqldump 오류 2013


18

mysql에서 백업하려는 데이터베이스가 설치되어 있습니다. mysqldump'maia_mail'테이블을 내보내는 데 문제가 있습니다.

# mysqldump -u root -p maia > maia.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15

30 초 미만 동안 실행되며 위와 같이 오류가 발생합니다.

DB의 총 크기는 1.3GB이며 maia_mail 테이블은 1.0GB입니다.

에서 my.cnf나는이 세트를 가지고 :

[mysqld]
max_allowed_packet      = 1300M
[mysqldump]
max_allowed_packet      = 1300M

데이터베이스를 덤프하는 방법에 대한 조언이나 지침을 제공하십시오.


170GB의 여유 공간. 머신 db에 덤프되어 있는지 원격인지에 대해서도 동일합니다.
— garfink

varchar 데이터를 중심으로하는 전자 메일 사본
— garfink

1300M은 최근에 변경되었으며, 기본 16M으로 설정되었을 때도 문제가 발생했습니다. 1300M으로 변경 한 후 서버도 다시 시작되었습니다.
— garfink

16M 기본값으로 다시 설정했습니다. 행 (15)에 동일한 오류 2013 년 결과를 덤프
— garfink

답변:


13

mysqldump를 작동시키기 위해 무거운 손이 될 수있는 InnoDB 설정 변경을 쉽게 제안 할 수 있습니다. 당신은 내가 제안하는 것에 대해 마음에 들지 않을지 모르지만, 그것이 최선의 선택이라고 믿습니다. 여기 간다:

SUGGESTION # 1 : 확장 인서트 비활성화

mysqldump의 기본 설정은 단일 INSERT에서 수백 또는 수천 개의 행을 함께 묶는 것을 포함합니다. 이것을 확장 INSERT라고합니다. max_allowed_packet 이상으로 오버런이 발생 합니다.

나는 큰 mysqldump를 가져 오기 위해 같은 일을하는 것에 대해 논의 한 게시물 Sep 01, 2011( MySQL 서버는 큰 덤프 가져 오기를 방해했습니다. )에 대답했습니다. 확장 INSERT를 비활성화하면 문제가있는 mysqldump를 만드는 데 도움이 될 것이라고 생각합니다.

mysqldump -u root --skip-extended-insert -p maia > maia.sql

나쁜 소식 : 이것이 각 행에 대해 INSERT 명령을 만드는 데 미치는 영향. 이것은 mysqldump를 수행하는데 걸리는 시간을 확실히 증가시킬 것이다. 결과적으로, 재 장전하는데 걸리는 시간도 증가 할 것입니다 (아마도 10-100 배).

나는 skip-extended-insert전에 논의 했다

제안 # 2 : 이진 데이터를 16 진수로 덤프 (선택 사항)

mysqldump의 이진 데이터를 더 바이트로 이식 가능하게하려면 이러한 데이터를 16 진수로 덤프하십시오.

mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql

나쁜 소식 : mysqldump를 조금 더 부 풀릴 것이다

시도 해봐 !!!

참고 : max_allowed_packet의 최대 크기는 1G입니다.


5

12GB 데이터베이스를 덤프하는 동안 동일한 오류가 발생했습니다. 작동하도록 다음과 같이 변경했습니다.

  1. max_allowed_packet을 1024M으로 구성
  2. net_read_timeout을 7200으로 구성
  3. net_write_timeout을 7200으로 구성

참고 : 시간 초과 값이 너무 길다는 것을 알고 있습니다 (7200 초, 즉 20 시간). 그러나 나는 우연히 기회를 배제하기 위해 그렇게했습니다. 최적의 시간 초과 값을 찾는 중입니다.


2
다른 사용자의 경우 : mysqldump 구성 파일이 아니라 서버에서 설정됩니다. 또한 7200 초는 20 시간이 아닌 2 시간입니다.
— Mark

전역 net_read_timeout = 120으로 설정; 전역 net_write_timeout = 900으로 설정; 나를 위해 일했다
— kasi

2

my.ini (Windows) 또는 my.cnf (Linux) 구성 파일에 다음을 포함하십시오.

[mysqld]
max_allowed_packet=1024M 

[mysqldump]
max_allowed_packet=1024M 
net_read_timeout=3600 
net_write_timeout=3600

2
섹션은 다른 방향이어야합니다.
— 중지 해머 모니카

1

덤프 할 메모리가 충분한 지 확인하십시오. 덤프하는 동안 메모리를 계속 확인하십시오 (예 : 다음과 같은 명령 사용).

free -mt

덤프를하는 동안 메모리가 소진되면 얻을 수 있습니다

mysqldump : 오류 2013 : 연결이 끊어짐


1

나는 찾았다 :

--max-allowed-packet=1G --net-buffer-length=32704

... 순 읽기 / 쓰기 시간 초과 변경, TCP Keepalives 등에도 불구하고 이전에 (안정적으로) 작동하지 않은 곳에서 작동합니다.

max_allowed_packet설정은 혼자가 작동하지 않았다, 그래서 경우에 필요하지 않을 수 있습니다 net_buffer_length사용됩니다. - 랄프 볼턴

수정 max-allowed-packet및 net-buffer-length확장 삽입을하지 않도록보다 훨씬 더 나은 것 같다. - 크리스토퍼

참조 의 max_allowed_packet가 충분히 큰 무엇인가, 왜 나는 그것을 변경해야합니까?

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