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-packetnet-buffer-length확장 삽입을하지 않도록보다 훨씬 더 나은 것 같다. - 크리스토퍼

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

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