MySQL강좌19편: my.cnf파일을 이용한 MYSQL튜닝 개론
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 4,294 조회
- 0 추천
- 목록
본문
MySQL강좌19편: my.cnf파일을 이용한 MYSQL튜닝 개론
1.my.cnf개론
흔히 MYSQL을 튜닝하는 것은 매우 힘들다고들 한다. 물론 힘든 방법만을 골라서 배운다면 그렇다. 다행하게도 MYSQL에는 자기자신의 시스템의 맞도록 튜닝된 설정파일을 제공하고 있다. 그것이 바로 my.cnf파일인데 그 종류가 하나가 아니므로 각자 자기 상황에 맞도록 사용하면 된다.
MYSQL을 설치한 후에 /usr/local/mysql/share/mysql/디렉토리에는 몇가지의 *.cnf파일이 있다. 시스템 환경에 맞게 이파일들을 활용하면 MYSQL의 성능을 향상시킬 수 있는 좋은 방법이 된다. MYSQL에는 이들 *.cnf파일을 이용하여 성능향상을 위한 튜닝방법으로 다음과 같이 3가지 방법이 있다.
① /etc/my.cnf : MYSQL에 관련된 모든 옵션들을 지정할 수 있는 파일(Global
Option)
② DATADIR/my.cnf : MYSQL의 데이터디렉토리(/usr/local/mysql/data)내에서
사용하는 것으로 MYSQL 데몬(server)와 관련된 옵션들만
지정하는 파일
③ $HOMEDIR/.my.cnf : MYSQL사용자들의 개인홈디렉토리내에 지정되는 것으로 개별 사용자별로 적용하기 위한 파일. (파일명에 .(점)주의)
즉 MYSQL이 설치된 /usr/local/mysql/share/mysql/디렉토리에 보면 아래와 같은 파일들이 있다. 다음은 이 파일들을 확인한 것이다.
[root@sulinux mysql]#ls -l /usr/local/mysql/share/mysql/*.cnf -rw-r--r-- 1 root root 4947 4월 15 2011 /usr/local/mysql/share/mysql/my-huge.cnf -rw-r--r-- 1 root root 20776 4월 15 2011 /usr/local/mysql/share/mysql/my-innodb-heavy-4G.cnf -rw-r--r-- 1 root root 4921 4월 15 2011 /usr/local/mysql/share/mysql/my-large.cnf -rw-r--r-- 1 root root 4930 4월 15 2011 /usr/local/mysql/share/mysql/my-medium.cnf -rw-r--r-- 1 root root 2484 4월 15 2011 /usr/local/mysql/share/mysql/my-small.cnf [root@sulinux mysql]# |
위의 파일들 가운데 여러분들의 상황에 맞는
파일을 사용하기만 하면된다. 즉 위의 파일들 가운데 시스템사양(특히
메모리용량)에 맞는 파일을 선택하여 /etc/my.cnf파일이름으로
복사한 후에 mysqld데몬을 실행하면 이 파일의 옵션들이 모두 적용되어 실행된다.
위의 파일들 가운데 어떤 파일을 사용하는가에 대한 기준은 다음과 같다.
- 시스템 메모리가 4G이상일 때 : my-innodb-heavy-4G.cnf
- 시스템 메모리가 1G~2G일 때 : my-huge.cnf
- 시스템 메모리가 512MB정도 일 때 : my-large.cnf
- 시스템 메모리가 32MB~64MB정도 일 때 : my-medium.cnf
- 시스템 메모리가 64MB이하일 때 : my-small.cnf
하지만 명심할 것이 두가지있다.
첫번째는 위의 파일들을 선택한 후에 설정되어있는 대로만 사용해야하는 것이 아니라는 점이다. 즉 위의 파일들 가운데 하나를 선택해서 /etc/my.cnf로 복사하였다 한 후에 각자 상황에 맞도록 최적화하기 위하여 그 내용을 수정할 수 있다는 점이다.
두번째는 위의 파일들 가운데 선택하는 기준을 메모리의 용량으로 분류해 놓았는데 이것은 정확한 기준이 아니라는 점이다. 시스템의 사양이 CPU, MEMORY, DISK종류, 메인보드의 종류등에 따라서 차이가 크기 때문에 어떤 파일을 선택해야하는가는 뒤의 MEMORY기준외에 각자 자기자신에게 맞는 기준을 찾아야 한다.
2.my-innodb-heavy-4G.cnf파일
위치 : /usr/local/mysql/share/mysql/my-innodb-heavy-4G.cnf
메모리(RAM)가 4G이상될 경우에 사용하는 MYSQL 컴파일설정 파일로서 InnoDB를 사용하는 대부분의 시스템에서 사용한다. 다소 복잡한
쿼리문을 사용하여 쿼리시간을 많이 요하는 시스템에서도 사용된다. MYSQL 설치후에 이 파일을 /etc디렉토리 또는 /usr/local/mysql/data디렉토리내로 my.cnf파일이름으로 복사한 후에 MYSQL을 실행하면 이 파일에
설정된 옵션들이 모두 적용된다.
다음은 이 파일을 /etc/my.cnf파일로 복사한 후에 MYSQL을 실행하면 이 파일에 저장된 다음 설정들이 모두 적용되어 실행된다.
[client] port = 3306 socket = /tmp/mysql.sock
[mysqld] port = 3306 socket = /tmp/mysql.sock back_log = 50 max_connections = 100 max_connect_errors = 10 table_cache = 2048 max_allowed_packet = 16M binlog_cache_size = 1M max_heap_table_size = 64M sort_buffer_size = 8M join_buffer_size = 8M thread_cache_size = 8 thread_concurrency = 8 query_cache_size = 64M query_cache_limit = 2M ft_min_word_len = 4 default_table_type = MYISAM thread_stack = 192K transaction_isolation = REPEATABLE-READ tmp_table_size = 64M log-bin=mysql-bin binlog_format=mixed log_slow_queries long_query_time = 2 log_long_format server-id = 1 key_buffer_size = 32M read_buffer_size = 2M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_max_extra_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 2G innodb_data_file_path = ibdata1:10M:autoextend innodb_file_io_threads = 4 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 8M innodb_log_file_size = 256M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120
[mysqldump] quick max_allowed_packet = 16M
[mysql] no-auto-rehash
[isamchk] key_buffer = 512M sort_buffer_size = 512M read_buffer = 8M write_buffer = 8M
[myisamchk] key_buffer = 512M sort_buffer_size = 512M read_buffer = 8M write_buffer = 8M
[mysqlhotcopy] interactive-timeout
[mysqld_safe] open-files-limit = 8192 |
3.my-huge.cnf파일
위치 : /usr/local/mysql/share/mysql/my-huge.cnf
메모리(RAM)가 1G~2G일 경우에 사용하는 파일로서 MYSQL설치 후에 이 파일을 /etc디렉토리에 my.cnf파일이름으로 복사한 후에 MYSQL을 실행하면 이 파일내의 모든 옵션들이 적용된다.
다음은 이 파일을 /etc/my.cnf파일로 복사한 후에 MYSQL을 실행하면 이 파일에 저장된 다음 설정들이 모두 적용되어 실행된다.
[client] port = 3306 socket = /tmp/mysql.sock
[mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 384M max_allowed_packet = 1M table_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M thread_concurrency = 8 skip-federated log-bin=mysql-bin server-id = 1
[mysqldump] quick max_allowed_packet = 16M
[mysql] no-auto-rehash
[isamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M
[myisamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M
[mysqlhotcopy] interactive-timeout |
4. my-large.cnf파일
위치 : /usr/local/mysql/share/mysql/my-large.cnf
메모리(RAM)가 512MB정도일 경우에 사용하는 파일로서 MYSQL을 설치한 후에
이 파일을 /etc디렉토리에 my.cnf파일이름으로 복사한
후에 mysqld 데몬을 실행하면 이 파일에 있는 모든 옵션들이 적용된다.
다음은 이 파일을 /etc/my.cnf파일로 복사한 후에 MYSQL을 실행하면 이 파일에 저장된 다음 설정들이 모두 적용되어 실행된다.
[client] port = 3306 socket = /tmp/mysql.sock
[mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 256M max_allowed_packet = 1M table_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 thread_concurrency = 8 skip-federated log-bin=mysql-bin binlog_format=mixed server-id = 1
[mysqldump] quick max_allowed_packet = 16M
[mysql] no-auto-rehash
[isamchk] key_buffer = 128M sort_buffer_size = 128M read_buffer = 2M write_buffer = 2M
[myisamchk] key_buffer = 128M sort_buffer_size = 128M read_buffer = 2M write_buffer = 2M
[mysqlhotcopy] interactive-timeout |
5. my-medium.cnf파일
위치 : /usr/local/mysql/share/mysql/my-medium.cnf
메모리(RAM)가 32MB~64MB정도일 경우에 사용하는 파일로서 MYSQL을 설치한 후에 이 파일을 /etc디렉토리에 my.cnf파일이름으로 복사한 후에 mysqld 데몬을 실행하면 이 파일에 있는 모든 옵션들이 적용된다.
다음은 이 파일을 /etc/my.cnf파일로 복사한 후에 MYSQL을 실행하면 이 파일에 저장된 다음 설정들이 모두 적용되어 실행된다.
[client] port = 3306 socket = /tmp/mysql.sock
[mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M skip-federated log-bin=mysql-bin binlog_format=mixed server-id = 1
[mysqldump] quick max_allowed_packet = 16M
[mysql] no-auto-rehash
[isamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M
[myisamchk] key_buffer = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M
[mysqlhotcopy] interactive-timeout |
6. my-small.cnf파일
위치 : /usr/local/mysql/share/mysql/my-small.cnf
메모리(RAM)가 64MB이하일 경우에 사용하는 파일로서 MYSQL을 설치한 후에 이
파일을 /etc디렉토리에 my.cnf파일이름으로 복사한 후에 mysqld 데몬을 실행하면 이 파일에있는 모든 옵션들이 적용된다
다음은 이 파일을 /etc/my.cnf파일로 복사한 후에 MYSQL을 실행하면 이 파일에 저장된 다음 설정들이 모두 적용되어 실행된다.
[client] port = 3306 socket = /tmp/mysql.sock
[mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer = 16K max_allowed_packet = 1M table_cache = 4 sort_buffer_size = 64K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 2K thread_stack = 128K server-id = 1
[mysqldump] quick max_allowed_packet = 16M
[mysql] no-auto-rehash
[isamchk] key_buffer = 8M sort_buffer_size = 8M
[myisamchk] key_buffer = 8M sort_buffer_size = 8M
[mysqlhotcopy] interactive-timeout |
관련자료
-
이전
-
다음