
mysqldump를 사용하여 다른 서버에서 생성된 160MB 파일에서 데이터를 가져오기 위해 다음 명령을 사용하고 있습니다. 가져오려는 환경은 max_allowed_packet이 "16M"으로 설정된 최신 WAMP 서버를 실행하고 있습니다.
C:\wamp\bin\mysql\mysql5.1.36\bin>mysql --max_allowed_packet=15M -u root -pXXX drupal < C:\prod.sql
ERROR 2006 (HY000) at line 644: MySQL server has gone away
이는 약 39초 동안 85.5MB를 가져온 후에도 지속적으로 발생하는 것 같습니다.
my.ini에서 max_allowed_packet을 늘리는 방법에 대한 많은 제안을 읽었으므로 기본값인 1M이 아닌 16M으로 설정했습니다. 그러나 내가 받는 오류는 내가 무엇을 하든 계속 발생합니다. 어떤 아이디어가 있나요?
이제 my.ini에서 해결되었습니다.
[wampmysqld]
port = 3306
socket = /tmp/mysql.sock
key_buffer = 384M
max_allowed_packet = 100M
table_cache = 4096
sort_buffer_size = 2M
net_buffer_length = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 64M
myisam_sort_buffer_size = 64M
basedir=c:/wamp/bin/mysql/mysql5.1.36
log-error=c:/wamp/logs/mysql.log
datadir=c:/wamp/bin/mysql/mysql5.1.36/data
thread_cache_size = 8
query_cache_size = 32M
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 10M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 100
wait_timeout = 28800
[mysqldump]
quick
max_allowed_packet = 100M
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
답변1
SQL의 데이터 구조는 무엇입니까?
하나의 열이 16M보다 큰 이미지나 PDF와 같은 얼룩일 수 있습니다. max_allowed_packet을 160MB로 설정하고(어떤 패킷도 전체 파일 크기보다 클 수 없음) 다시 테스트해 보십시오. 나중에 언제든지 다시 전환할 수 있습니다.
가져온 데이터를 가져오면 SHOW TABLE STATUS 명령을 사용하여 데이터 크기를 가져오고 그 크기를 확인하면 더 정확한 값을 얻을 수 있습니다.
그러나 오류는 매우 일반적이며 오류가 표시되는 가능한 이유 목록이 있습니다.mysql 웹사이트에서
문제를 찾으려면 각 문제를 해결해야 하지만 내 경험상 항상 패킷이 너무 컸습니다. 바로 이런 이유로 내 프로덕션 상자 중 하나에서 max_packet_size를 180MB로 설정했습니다.
답변2
my.cnf에서 wait_timeout을 100처럼 올린 다음 서버를 다시 시작하십시오.
wait_timeout = 100
답변3
Richard의 답변이 일반적인 솔루션이지만 .err
로그를 확인하세요. MySQL의 메모리가 부족하여 다시 시작될 수 있습니다. 최근에 하드웨어 오류로 인해 이런 일이 발생했습니다.