(나같은)초보를 위한 MySQL my.cnf 설정하기

갱신 :
by PG
Photo of author

MySQL을 나름 최적화 해보려고 구글링을 열심히 해봤는데 어려운 설명들만 있고 벤치마크를 해가면서 막 하는 선수들(?)의 글을 보면서 기껏해야 가상화에 블로그 끄적거리는 용도로 쓰는 서버에 정성을 들일 필요가 있나 싶어서 튜닝의 완성은 순정… 이라는 생각으로 기본값을 토대로 설정해 보았다.

my.cnf 설정

CentOS를 기준으로 /etc/my.cnf 를 열면 참으로 간결한 기본 설정이 보인다.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

이걸로는 세부적인 설정을 하지 못하는데 옵션 신텍스를 모르니 설정 관련 파일을 찾아봤다.

[root@servername etc]# find / -name 'my*.cnf'
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/doc/mysql-server-5.1.69/my-huge.cnf
/usr/share/doc/mysql-server-5.1.69/my-large.cnf
/usr/share/doc/mysql-server-5.1.69/my-medium.cnf
/usr/share/doc/mysql-server-5.1.69/my-small.cnf
/usr/share/doc/mysql-server-5.1.69/my-innodb-heavy-4G.cnf
/etc/my.cnf

위 경로의 my.cnf 파일들을 하나하나씩 열어보면 서버의 자원에 맞춰 설정해놓은 기본 세팅이 있는데 그중 서버 환경에 맞는(RAM 기준) 파일을 CTRL+C / V 해서 설정했다. 참고로 블로그를 운영하는 서버는 RAM이 1G 라서 my-larg.cnf를 선택했다. 설정할때 빼고 읽어보지 않을 주석은 깔끔하게 날리고 아래와 같이 수정 후 서비스를 리스타트. 끝.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql

symbolic-links=0

skip-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size =1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 16M
query_cache_limit = 32M
thread_concurrency = 4
max_connections = 100 #200

#slow-query-log-file =
long_query_time = 1
server-id    = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysqlhotcopy]
interactive-timeout

innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

Leave a Comment