강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

MySQL강좌19편: my.cnf파일을 이용한 MYSQL튜닝 개론

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

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

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  99 명