본문 바로가기
DataBase/MySQL

MySQL max_allowed_packet 확인 및 설정 방법 (MySQL 5.7)

by 코딩이라구 2022. 10. 20.

MySQL에서 패킷(Packet) 사이즈를 지정하는 방법에 대하여 알아보도록 하겠습니다. 또한 "Packet larger than max_allowed_packet are not allowed" 오류가 났을 때 해결하는 방법도 포함되어 있습니다.


MySQL 5.7 Version max_allowed_packet 확인 및 설정

 

1. max_allowed_packet 이란?

MySQL 서버(Server)와 클라이언트(Client) 사이에서 주고받는 패킷(SQL 구문 또는 Row)의 사이즈를 제한하는 역할을 하는 값입니다. 그리고 API 사용 시에는 보낼 수 있는 파라미터의 최대 사이즈 값입니다.

 

2. 기본값과 최대값

  • 기본 : 4M
  • 최대(MAX) : 1000M(1G)

 

3. max_allowed_packet 사이즈 확인

-- max_allowed_packet 사이즈 확인 방법
SHOW VARIABLES WHERE variable_name = 'max_allowed_packet';

-- 'max'로 시작하는 모든 값들의 사이즈 확인 (LIKE 연산자 사용)
SHOW VARIABLES WHERE variable_name like 'max%';

 

4. max_allowed_packet 사이즈 설정

패킷 사이즈는 max_allowed_packet 설정을 통하여 최대 1G까지 늘릴 수 있습니다. BLOB(대용량) 컬럼이나 긴 문자열(Long Query)을 사용하여 패킷 사이즈를 변경할 수 있습니다. 하지만, 현재 사용 중인 서버 및 클라이언트의 메모리를 확인 후 메모리 부족 현상이 일어나지 않도록 주의해야 합니다.

 

1) my.ini 파일을 통한 max_allowed_packet 사이즈 설정

  1. 서버상의 MySQL 환경 파일 열기 - my.ini파일
    ※ 경로(Path) - C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 대부분 이 경로가 기본으로 지정되어 있는데, 사용자가 경로를 직접 설정한 분들께서는 해당 설정 경로의 my.ini 파일을 열어주시기 바랍니다.
    (C:\ProgramData 폴더는 숨겨져 있으므로 보기에서 숨긴 항목 보기를 클릭하면 보실 수 있습니다.)
  2. Text 찾기(Ctrl + F)에서 max_allowed_packet을 검색
  3. 기본 default값이 4M > 32M (적당한 용량을 선택하여 변경)
  4. 서비스에서 MySQL 재실행
    ※ 재실행을 하지 않으면 해당 패킷 사이즈가 적용되지 않습니다.

 

2) MySQL 명령어를 통한 max_allowed_packet 사이즈 설정

-- GLOBAL 명령을 이용하여 32M(=33554432)로 변경, 33554432 값을 직접 입력하여도 무방
SET GLOBAL max_allowed_packet = 32*1024*1024;

-- 또는 SESSION 명령을 이용하여 변경
SET SESSION max_allowed_packet = 33554432;

 

3) 패킷 사이즈가 부족한 경우 발생하는 오류 및 해결 방법

패킷 사이즈가 부족한 경우 발생하는 오류로는 "Packets larger than max_allowed_packet are not allowed"가 발생할 수 있으며, 쿼리 길이가 Packet에 설정한 최대 길이 제한보다 큰 경우 발생하는 오류입니다. 이때 위 방법으로 max_allowed_packet을 적절하게 조절하여 해당 오류를 해결할 수 있습니다.

댓글