MySQL my.cnf

[mysqld]

# MySQL 서버 기본 옵션

datadir = /data/mysql

socket = /var/lib/mysql/mysql.sock

user=mysql

 

init_connect=SET collation_connection = utf8_general_ci

init_connect=SET NAMES utf8

character-set-server = utf8

collation-server = utf8_general_ci

 

big-tables

# 기본 엔진설정

default-storage-engine = InnoDB            

 

skip-host-cache

# 역DNS 검색 비활성

skip-name-resolve

# 외부(TCP/IP) 잠금 비활성        

skip-external-locking                  

 

max_connections = 500

table_cache = 256

wait_timeout = 50

 

## General 로그를 사용하려면 아래 설정은 그대로 유지하고

## MySQL 서버에 로그인한 후 “SET GLOBALgeneral_log=1″ 명령으로 활성화

# 0=제네럴로그 비활성

general_log = 1

# 제네럴로그 파일경로    

general_log_file = /var/log/mysql/general_query.log

 

## MySQL 에서는 지정된 시간 이상으로 쿼리가실행되는경우 해당 쿼리를 별도의 로그 파일로 남길수있다.(슬로우 쿼리 로그)

# DDL쿼리도 슬로우 쿼리에 기록

log_slow_admin_statements              

# 슬로우 쿼리로그 활성화

slow-query-log = 1

# 이 변수값보다 쿼리처리가 길게 걸린다면 에러로그에 기록       

long_query_time = 1    

# 슬로우 쿼리 로그파일 경로       

slow_query_log_file = /var/log/mysql/slow_query.log    

 

## MySQL 스케줄러를 사용하려면 아래 event-scheduler 옵션을 ON으로 변경

# event-scheduler = OFF                 # 이벤트 비활성

event-scheduler = ON

# 함수 sysdate()와 now() 동일하게 처리

sysdate-is-now                     

 

# 동시접속시 대기시킬수있는 커넥션 갯수

back_log = 100

# 최대 클라이언트 연결 갯수

max_connections = 300              

max_connect_errors = 999999

# 다쓴 쓰레드를 스레드풀에 저장할 갯수

thread_cache_size = 50

# 각 쓰레드별 오픈할 테이블수

table_open_cache = 400

# 커넥션 최대 대기시간(초)       

wait_timeout = 28800                   

# 요청된 쿼리의 최대길이의 값

max_allowed_packet = 32M   

# MEMORY 테이블의 최대크기     

max_heap_table_size = 32M

# 메모리 내의 임시테이블 크기 초과시 디스크에 저장              

tmp_table_size = 512K  

 

 

# 정렬에 필요한 버퍼의 크기 ORDER BY 또는 GROUP BY 연산 속도와 관련

# sort_buffer_size = 128K              

# 조인이 테이블을 풀스캔 하기위해 사용하는 버퍼크기

# join_buffer_size = 128K              

# 테이블 스캔에 필요한 버퍼크기

# read_buffer_size = 128K              

# 디스크 검색을 피하기위한 랜덤 읽기 버퍼크기

# read_rnd_buffer_size = 128K          

# 정렬에 필요한 버퍼의 크기 ORDER BY 또는 GROUP BY 연산 속도와 관련

sort_buffer_size = 512K                

# 조인이 테이블을 풀스캔 하기위해 사용하는 버퍼크기

join_buffer_size = 6K                      

# 테이블 스캔에 필요한 버퍼크기

read_buffer_size = 64K                 

# 디스크 검색을 피하기위한 랜덤 읽기 버퍼크기

read_rnd_buffer_size = 256K                

 

# 쿼리 결과를 캐싱라기 위해 할당된 메모리 크기

query_cache_size = 32M             

# 이 변수 값보다 큰 값은 캐싱이 안됨

query_cache_limit = 2M             

 

# GROUP_CONCAT()함수 사용시 컬럼값 최대크기

group_concat_max_len = 1024            

 

# 쓰레스 갯수

thread_concurrency = 2             

 

## 마스터 MySQL 서버에서 “레코드 기반 복제”를 사용할 대는 READ-COMMIT 사용 가능

## 복제에 참여하지 않는 MySQL 서버에서는 READ-COMMIT 사용 가능

## 그 외에는 반드시 REPEATABLE-READ로 사용

transaction-isolation = REPEATABLE-READ    

# isolation 레벨 [READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE]

 

# InnoDB 관련 옵션

# 테이블 단위로 테이블스페이스 할당, 활성시 확장자 .ibd 파일이 생성됨

innodb_file_per_table = 1              

# innodb 홈디렉터리 경로

innodb_data_home_dir = /data/mysql           

# 파일명 : 초기용량 : 자동증가 : 최대사이즈

innodb_data_file_path = ibdata1:256M:autoextend

#테이블 스페이스 자동 확장시 크기

innodb_autoextend_increment = 100          

innodb_log_group_home_dir = /data/mysql

# 로그 디렉터리 정보

innodb_log_arch_dir = /data/mysql              

# 데이터와 인덱스를 캐시하기 위해 사용하는 메모리 버퍼크기

innodb_buffer_pool_size = 10G              

                             

# innodb에서 사용할 메모리 양으로 전체 메모리의 50~80% 정도로 설정

# 데이터 디렉토리 정보와 내부 데이타 구조를 저장하는 메모리 풀의 크기

innodb_additional_mem_pool_size = 16M      

# Redo 로그 버퍼크기 

innodb_log_buffer_size = 16M               

 

# 로그 버퍼 사이즈로 성능에 맞춰 로그를 기록하는 경우 크게 설정

# 로그 파일 사이즈로 버퍼풀 사이즈의 25% 정도로 설정

innodb_log_file_size = 64M         

 

# 커밋 로그 옵션으로 성능 최적화로 1분마다 저장되도록 2로 설정      

# 1=트랜젝션 실행할때마다 로그 파일에 기록되고 디스크 플러시가 실행

innodb_flush_log_at_trx_commit = 2

                             

 

# 트렌젝션 two-phase commit 지원, 디스크 플러시 횟수를 줄여 성능항상

innodb_support_xa = OFF                

 

# InooDB내에 쓰레드 갯수, 변수 0은 쓰레드간 동시성 비활성화

# innodb_thread_concurrency = 0            

# 롤백이 진행되기 전에 LOCK을 대기하는 시간(초)

innodb_lock_wait_timeout = 20          

# 크래시 복구 모드 설정 

innodb_force_recovery = 0              

# 성능을 위해 메모리에서 직접 액세스 하도록 설정

innodb_flush_method = O_DSYNC              

 

innodb_purge_threads = 1

innodb-read-io-threads = 2

innodb-write-io-threads = 2

innodb_thread_concurrency = 6

innodb-buffer-pool-instance = 3

 

# O_DIRECT=운영체제의 버퍼를 사용 않고 IO 실행, RAID 컨트롤러(캐시메모리 장착된)가 없거나 SAN 사용시 O_DIRECT를 사용 하지 않음

# 이중 쓰기 버퍼 비활성

innodb_doublewrite = 0                 

# 쓰레드가 지연되기 전에 (suspended) 풀어 주기 위해 InnoDB 뮤텍스 (mutex)를 기다리는 쓰레드의 대기 시간

innodb_sync_spin_loops = 20                

# LOCK TABLES은 AUTOCOMMIT=0경우에, InnoDB로 하여금 내부적으로 테이블을 잠금

innodb_table_locks = 1             

# InnoDB 큐를 조이닝 (joining)하기 전에 InnoDB 쓰레드가 일시 정지 (sleep)하는 시간  

innodb_thread_sleep_delay = 1000           

# 퍼지 연산 (purge operation)이 래깅 (lagging)될 때 INSERT, UPDATE 및 DELETE 연산을 지연 시키는 방법을 제어,

# 디폴트값 0일시 지연 없음

innodb_max_purge_lag = 0               

# 동시에 실행되는 쓰레드의 숫자. 이 값이 0이 되면 동시성 제어 (concurrency control)가 비활성화

innodb_commit_concurrency = 0          

# InnoDB에 동시에 들어갈 수 있는 쓰레드의 숫자는 innodb_thread_concurrency 변수로 알아볼 수가 있다.

# 여러 개의 쓰레드가 이미 컨커런시 한계에 도달하였다면, 하나의 쓰레드만이 큐에 들어갈 수 있다.

# 하나의 쓰레드가 InnoDB에 들어가게 되면, innodb_concurrency_tickets의 값과 일치하는 “자유 티켓”의 숫자가 주어지고

# 쓰레드가 자신의 티켓을 사용하기 전 까지는 자유롭게 InnoDB에 들어가고 나올 수가 있다.

# 이런 후에는, 쓰레드는 다시금 일관성 검사를 하고 InnoDB에 다시 들어가려고 시도하게 된다 

innodb_concurrency_tickets = 500           

 

[mysql]

# MySQL 설정그룹

default-character-set=utf8

# 경고 발생시 메세지 자동 출력

show-warnings                      

# SQL 프롬프트 설정

prompt=u@h:d_R:m:s>             

# 데이터 출력시 페이징처리

# pager=”less -n -i -F -X -E”              

# 자동 완성 기능 비활성화

# no-auto-rehash                   

# 데이터 변경 또는 삭제시 where구문 필수입력

# safe-updates                     

 

[myisam]

# MyISAM 옵션 설정 기본 그룹

## InnoDB를 사용하지 않고 MyISAM만 사용한다면 key_buffer_size를 4GB까지 설정

# 인텍스 캐시 크기

key_buffer_size = 32M                  

# 대량 삽입에 사용된 트리 캐시의 크기, 쓰레드당 각각 할당됨

bulk_insert_buffer_size = 32M              

# 인덱스 정렬시 할당되는 버퍼의 크기

myisam_sort_buffer_size = 1M               

# 인덱스 재 생성시 사용할 임시 파일의 최대 크기

myisam_max_sort_file_size = 2G         

# 정렬 복구시 사용될 쓰레드 갯수

myisam_repair_threads = 1              

# MyISAM 테이블을 열었을시 테이블 자동복구

myisam_recover                     

# 하나의 FULLTEXT 인덱스에 포함 되는 단어의 최소 길이 값,

ft_min_word_len = 3                    

 

 

[mysqld_safe]

# 에러로그에 경고메세지 기록

log-warnings = 1                   

# 에러로그 파일경로

log-error=/var/log/mysqld.log              

# 프로세스 ID 파일경로

pid-file=/var/run/mysqld/mysqld.pid  

'리눅스ETC' 카테고리의 다른 글

sftp 로그 남기기  (0) 2016.03.30
my.cnf utf8  (0) 2016.03.30
mysqldump  (0) 2016.03.30
mariaDB xtrabackup  (0) 2016.03.30
자바 자체(셀프? 사설?)인증서 등록하기  (0) 2016.03.30

to Top