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