본문 바로가기
MySQL Admin Guide/MySQL Ver.5.1 Admin Guide

3장 MySQL 엔진과 my.cnf : (2) my.cnf

by 모모레 2009. 3. 30.

1. my.cnf 정의 및 지정방법
my.cnf는 Unix 계열의 MySQL엔진에서 사용하는 configure 파일이다. Windows 계열에서는 my.ini라는 이름으로 사용된다. 이 파일은 앞서 설치 시 했던 것처럼 인스톨 할때와 MySQL 프로세스를 띄울 때, 지정하여 사용할 수 있다.

지정하는 방법은 다음과 같다.
./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql
./bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

만약 설정하지 않을 경우 다음의 순서대로 my.cnf를 찾아간다.
  1. /etc/my.cnf
  2. $MYSQL_HOME/my.cnf
  3. ~/my.cnf

만약 추가적으로 my.cnf 외에 다른 cnf 파일을 지정하여 사용하고 싶을 경우 --defaults-extra-files 를 사용하여 설정할 수 있다. 이 옵션을 사용하는 경우는 보통 여러 대의 MySQL 서버를 운영하는 회사에서 기본적인 설정은 my.cnf 를 사용하여 설정하고 서버별 특이 사항은 다른 cnf파일을 생성하여 구성하는 방식으로 configure내용을 관리하는 경우이다. 이와 같이 관리하는 경우 추가로 생성한 cnf 파일은 --defaults-extra-files 옵션을 사용하여 설정한다.

2. my.cnf 파일 구성형식
my.cnf는 설정할 variable을 그룹별로 모아서 기술하는 것을 원칙으로 한다. 일반적으로 그룹은 variable을 읽어서 사용할 Client 프로그램이나 Server 프로그램이 된다. 예외적으로 client라는 그룸이 있는데, 이것은 모든 Client 프로그램이 기본적으로 모두 포함되는 variable을 모아놓은 그룹으로 일반적으로 소켓파일이나 포트명을 기술한다.

그룹은 중괄호(ex> [])를 이용하여 작성한다. Variable은 Variable=value 의 포맷으로 작성하면 된다. 예제는 다음과 같다.

[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
datadir=/data01/mysql
...

Variable을 작성할때 다음과 같은 규칙이 적용된다.

  1. Variable을 작성할때 comment처리를 하려고 하는 경우에는 일반적으로 사용하는 경우인 #을 사용하면 된다.
  2. Variable 과 Value사이에는 공백이 있어도 무방하다.
  3. Variable앞에 -, --는 사용하지 않는다.
  4. my.cnf에 기술된 Variable은 처음 서버가 로드 될때에만 적용된다.
  5. my.cnf에 기술되지 않은 Variable은 default값으로 설정된다.
  6. 모든 Variable은 그룹안에 속해야 한다.

3. my.cnf 예제 파일
MySQL을 설치하면 support-files 디렉토리에 my.cnf 파일의 예제파일을 작성하여 제공하고 있다. 초보 사용자가 설정하기 어려운 경우에는 자신이 설치한 MySQL서버의 상태에 맞게 예제파일을 선택하여 configure파일로 사용할 수 있다.

 

[그림 3-6] support-files 예제

4. 기본적인 my.cnf Variable
기본적으로 알아야 하는 Variable은 다음과 같다.

 

 

Variable 설명
autocommit autocommit 모드 설정, 1인 경우 autocommit설정, 0인 경우 disable
binlog_cache_size 트랜잭션 실행동안 바이너리 로그를 저장하기 위한 캐쉬 사이즈
binlog-format 바이너리 로그의 format을 설정함.
datadir data directory 설정
key_buffer_size 설정
log_bin 바이너리 로그를 생성할지의 여부를 설정함.
log-slow-queries long_query_time보다 오래 실행되는 쿼리를 로그로 남기는 작업을 설정함.
long_query_time slow query 기준이 되는 값(초)
max_allowed_packet 가장 크게 생성될 수 있는 packet사이즈를 설정함.
max_binlog_size 바이너리 로그 파일의 최대 크기 설정값
max_connections 동시에 접근 가능한 커넥션 갯수 설정
open-files-limit 설정
port 접속시 사용할 port 설정
read_buffer_size 설정
read_only 데이터를 수정할 수 없게 설정함.
server-id 서버의 유니크한 id 설정
slow-query-log log-slow-queries와 같음
slow_query_log_files slow-query-log 파일 이름을 설정함.
socket 사용할 소켓 파일 설정
sort_buffer_size 설정
storage_engine 기본적으로 사용할 스토리지 엔진 값을 설정
tmpdir temporary table 생성하는 디렉토리 설정
wait_timeout 설정