에러 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