본문 바로가기

데이터베이스/MySql & MariaDB

MySql,MariaDB 서버변수 설정(ConnectionTimeOut, Max_allowed_packet)

mysql을 사용하는 중에 몇가지 발생 했던 문제가 있었다.
첫번째는 ConnectionTimeout 으로 웹페이지를 사용 할 수 없는 문제가 발생 했는데..
검색 해보니, db에 연결 할 수 있는 최대 커넥션의 수가 매우 적고. 대기time 도 짧다는 것..
사이트 및 기타 프로그램에 따라서 커넥션 수 및 적정 타임 아웃을 설정 하여 사용 하면 될 것으로 판단.
아래처럼 수정 하여 사용 한다.
show variables;
show global variables like '%timeout%'

SET GLOBAL max_connections = 1000;
set global wait_timeout = 300;

FLUSH PRIVILEGES; 

SHOW VARIABLES LIKE '%max_connections%';
SHOW PROCESSLIST;

위 소스의 설명은 my.ini or my.cnf 의 서버 설정 값을 쿼리로 변경 수정 처리 할 수 있는 내용으로
타임아웃에 관련된 변수의 설정 값을 검색 하고 , 변경 하여, 정책을 적용 하는 내용.

두번째로는 데이터베이스의 복원 시 발생 했던 문제로, max_allowed_package의 값을 초과하여 복구가 불가능 한 경우이다.
이리저리 검색 해보니, 기본적인tcp의 패킷 개념과는 많이 다름.

일단 기본적으로 세팅값을 확인 해보면 1M로 잡혀 있고, dump 시 16M으로 설정되어 있다.

5.x버전은 최대 1GB 까지 가능 하다고 하니 최대치로 변경 후 복원 가능 함
백업 size : 압축 : 18MB, sql file : 250MB 정도의 백업 파일을 복원 해보았음.
정상 복구 되는 것을 확인 할 수 있었다.

아래는 해당max_allowed-package의 값을 확인 , 수정변경 하는 내용이다.
/** 변경전 값 확인 **/
show variables where Variable_name = 'max_allowed_packet';
/** 패킷사이즈 1G로 증가 **/
SET GLOBAL max_allowed_packet = 1073741824; 
 FLUSH PRIVILEGES;
/** 값 확인 **/
show variables where Variable_name = 'max_allowed_packet';
해당 내용 변경되지 않을 경우
/etc/my.cnf 파일에 max_allowed_packet 이 명시되어 있는 경우이다.
이 경우 M 단위로 설정하며
1G의 경우 1024M 으로 설정하면 된다.
좀더 크게 처리
SET GLOBAL  max_allowed_packet=1024*1024*1024;
show variables where Variable_name = 'max_allowed_packet';

flush privileges;