에러 2006 mysql 해결방법

에러 2006 mysql 해결방법

Error 2013

■ 에러 발생 

데이터 이관 중 export시 발생

[root@localhost data]# mysqldump -u kim-p --routines --triggers  --single-transaction kim --events > /dump/dump.sqlmysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `***` at row: 167770

■ 발생 이유

2013은 서버 연결이 끊어 졌음을 의미

1. 누군가 세션을 kill하여 발생할 수 있습니다.

2. 네트워크 문제로 인해 연결이 끊어져서 발생 할 수 있습니다.

3. 서버 내 충돌이 일어나 끊길 수 있습니다.

4. 연결이 유휴 상태 wait_timeout이며 종료될 수 있습니다.

3. 클라이언트가 데이터를 충분히 빨리 가져 오지 못하고 종료되어 net_wait_timeout될 수 있습니다.

■ 조치 방법

아래 네트워크 timeout을 재설정 한뒤 export 재시도

MySQL [(none)]> show variables like 'net_read_timeout%';+------------------+-------+| Variable_name    | Value |+------------------+-------+| net_read_timeout | 30    |+------------------+-------+1 row in set (0.01 sec) MySQL [(none)]> show variables like 'net_write_timeout%';+-------------------+-------+| Variable_name     | Value |+-------------------+-------+| net_write_timeout | 60    |+-------------------+-------+1 row in set (0.00 sec)   MySQL [(none)]> set global net_read_timeout = 10800;MySQL [(none)]> set global net_write_timeout = 10800;

Error 2006

■ 에러 발생

데이터 이관 중 import를 하다가 중간에 아래와 같은 에러가 발생하고 중단되었다.

[root@localhost data]# mysql -uroot -p kim < dump.sqlERROR 2006 (HY000) at line 19232: MySQL server has gone away

## 에러 로그

2022-10-17T23:58:04.143584Z 0 [Note] InnoDB: Buffer pool(s) load completed at 221018  8:58:042022-10-17T23:58:04.160959Z 0 [Note] Server hostname (bind-address): '*'; port: 33062022-10-17T23:58:04.162289Z 0 [Note] IPv6 is available.2022-10-17T23:58:04.162317Z 0 [Note]   - '::' resolves to '::';2022-10-17T23:58:04.162366Z 0 [Note] Server socket created on IP: '::'.2022-10-17T23:58:04.175732Z 0 [Note] Event Scheduler: Loaded 0 events2022-10-17T23:58:04.175840Z 0 [Note] /mysql/bin/mysqld: ready for connections.Version: '5.7.34'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)2022-10-18T00:13:56.590061Z 4 [Note] Aborted connection 4 to db: 'kim' user: 'root' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)

■ 발생 이유

1. 서버 연결이 끊어졌거나 실행중에 서버가 죽었을 때 등 서버와의 연결에 문제가 생겼을 때 발생합니다.

2. 부적절하거나 너무 큰 쿼리를 보냈을 때. 이 경우 데이터베이스는 뭔가가 잘못됐다고 판단하고 연결을 끊습니다.

3. 이전 연결 세션에 영향을 받은 경우 끊길 수 있습니다.

■ 조치 방법

max_allowed_packet 파라미터를 재설정하여 쿼리 제한을 증가시켜줍니다.

설정된 용량보다 더 큰 패킷을 받으면 위의 에러가 발생합니다.

패킷이란 mysql서버에 보내는 sql문의 단위입니다. 

## 기존 설정 (기본값인 4MB)mysql> show variables like 'max_allowed_packet';+--------------------+---------+| Variable_name      | Value   |+--------------------+---------+| max_allowed_packet | 4194304 |+--------------------+---------+1 row in set (0.00 sec)  ## MySQL 5.7 서버의 최대 패킷 용량인 1GB로 설정mysql> set global max_allowed_packet=1073741824;Query OK, 0 rows affected (0.00 sec)  ## Import 재시작[root@localhost data]# mysql -uroot -p  kim < dump.sql

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다