• Mysql 5.5 5.6 my.cnf 옵션

    [mysqld]
    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
    skip-name-resolve                   #
    DNS 검색비활성
    skip-external-locking              # 외부(TCP/IP) 잠금비활성

    max_connections = 500
    table_cache = 256
    wait_timeout = 50

    ## General 로그를 사용하려면 아래 설정은 그대로 유지하고
    ## MySQL 서버에 로그인한  "SET GLOBALgeneral_log=1″ 명령으로 활성화
    general_log = 1        # 0=제네럴로그 비활성
    general_log_file = /var/log/mysql/general_query.log  # 제네럴로그 파일경로

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

    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            # 이벤트 비활성
    sysdate-is-now                    # 함수 sysdate() 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          # 요청된 쿼리의 최대길이의 
    max_heap_table_size = 32M         # MEMORY 테이블의 최대크기
    tmp_table_size = 512K             # 메모리 내의 임시테이블 크기  초과시 디스크에 저장

    # 2012.09.13, xCode, ref http://dev.kthcorp.com/2011/07/01/mysql-innodb-storage-engine-benchmark/
    #sort_buffer_size = 128K          #
    정렬에 필요한 버퍼의 크기 ORDER BY 또는 GROUP BY 연산 속도와관련
    #join_buffer_size = 128K          # 조인이 테이블을 풀스캔 하기위해 사용하는 버퍼크기
    #read_buffer_size = 128K          # 테이블 스캔에 필요한 버퍼크기
    #read_rnd_buffer_size = 128K      # 디스크 검색을 피하기위한 랜덤 읽기 버퍼크기
    sort_buffer_size = 512K           # 정렬에 필요한 버퍼의 크기 ORDER BY 또는 GROUP BY 연산 속도와 관련
    join_buffer_size = 6K             # 조인이 테이블을 풀스캔 하기위해 사용하는버퍼크기
    read_buffer_size = 64K            # 테이블 스캔에 필요한 버퍼크기
    read_rnd_buffer_size = 256K       # 디스크 검색을 피하기위한 랜덤 읽기 버퍼크기

    query_cache_size = 32M            # 쿼리 결과를 캐싱라기 위해 할당된 메모리크기
    query_cache_limit = 2M            # 이  변수 값보다 큰 값은 캐싱이 안됨

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

    # 2012.09.13, xCode, 1 chip x 8 core
    thread_concurrency = 2            #
    쓰레스 갯수

    ## 마스터 MySQL 서버에서 "레코드 기반 복제"를 사용할 대는 READ-COMMIT 사용가능
    ## 복제에 참여하지 않는 MySQL 서버에서는 READ-COMMIT 사용 가능 

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

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

     

    [innoDB]
    innodb_file_per_table = 1      #
    테이블 단위로 테이블스페이스 할당, 활성시 확장자 .ibd 파일이생성됨
    innodb_data_home_dir = /data/mysql    # innodb 홈디렉터리 경로
    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     # 데이터 디렉토리 정보와 내부 데이타 구조를 저장하는 메모리 풀의 크기
    innodb_log_buffer_size = 16M              # Redo 로그 버퍼크기

    로그 버퍼 사이즈로 성능에 맞춰 로그를 기록하는 경우 크게 설정
    innodb_log_file_size = 64M                #로그  파일 사이즈로 버퍼풀 사이즈의 25% 정도로 설정
    innodb_flush_log_at_trx_commit = 2        # 커밋 로그 옵션으로 성능 최적화로 1분마다 저장되도록 2설정
    # 1=트랜젝션 실행할때마다 로그 파일에 기록되고 디스크 플러시가 실행
    innodb_support_xa = OFF                   # 트렌젝션 two-phase commit 지원, 디스크  플러시 횟수를 줄여 성능항상
    # 분산데이터 기능 (2-PhaseCommit) 

    # 2012.09.13, xCode, 1 chip x 8 core
    #innodb_thread_concurrency = 0            # InooDB
    내에 쓰레드 갯수, 변수 0은 쓰레드간 동시성 비활성화
    innodb_lock_wait_timeout = 20             # 롤백이 진행되기 전에 LOCK을 대기하는 시간()
    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                    # 이중 쓰기 버퍼 비활성
    innodb_sync_spin_loops = 20               # 쓰레드가 지연되기 전에 (suspended) 풀어 주기 위해 InnoDB 뮤텍스 (mutex)를 기다리는 쓰레드의  대기 시간
    innodb_table_locks = 1                    # LOCK TABLES AUTOCOMMIT=0경우에, InnoDB로 하여금 내부적으로 테이블을 잠금
    innodb_thread_sleep_delay = 1000          # InnoDB 큐를 조이닝 (joining)하기 전에 InnoDB 쓰레드가 일시 정지 (sleep)하는 시간
    innodb_max_purge_lag = 0                  # 퍼지 연산 (purge operation)이 래깅 (lagging)될  INSERT, UPDATE DELETE 연산을 지연 시키는 방법을 제어, 디폴트값 0일시 지연
    innodb_commit_concurrency = 0             # 동시에 실행되는 쓰레드의 숫자. 이 값이 0이 되면 동시성 제어 (concurrency control)가 비활성화
    innodb_concurrency_tickets = 500          

    # InnoDB에 동시에 들어갈 수 있는 쓰레드의 숫자는 innodb_thread_concurrency 변수로 알아볼 수가 있다. 여러 개의 쓰레드가 이미  컨커런시 한계에 도달하였다면, 하나의 쓰레드만이 큐에 들어갈 수 있다. 하나이 쓰레드가 InnoDB에 들어가게 되면, innodb_concurrency_tickets의 값과 일치하는 "자유 티켓"의 숫자가 주어지고, 쓰레드가 자신의 티켓을 사용하기 전 까지는 자유 게 InnoDB에 들어가고 나올 수가 있다. 이런 후에는, 쓰레드는 다시금 일관성 검사를 하고 InnoDB에 다시 들어가려고 시도 게 된다

    [mysql]
    default-character-set=utf8
    show-warnings                             #
    경고 발생시 메세지 자동 출력
    prompt=\u@\h:\d\_\R:\m:\\s>               # SQL 프롬프트 설정
    #pager="less -n -i -F -X -E"              # 데이터  출력시 페이징처리
    #no-auto-rehash                           # 자동 완성 기능 비활성화
    #safe-updates                             # 데이터 변경 또는 삭제시 wherer구문 필수입력

    [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_recover                            # MyISAM 테이블을 열었을시 테이블 자동복구
    ft_min_word_len = 3                       # 하나의 FULLTEXT 인덱스에 포함 되는 단어의 최소 길이 ,
    #
    변경후 REPAIR TABLE tbl_name QUICK 으로 재 구축해야함 

    [mysqld_safe]

    log-warnings = 1                          # 에러로그에 경고메세지 기록
    log-error=/var/log/mysqld.log             # 에러로그 파일경로\

    pid-file=/var/run/mysqld/mysqld.pid       # 프로세스 ID 파일경로 

    # 2012.09.13, xCode

    tcmalloc on

    [ndbd]

    connect-string="nodeid=2;host=localhost:1186"

    [ndb_mgm]

    connect-string="host=localhost:1186"

    출처: <http://bluebreeze.co.kr/608>

     

     

    현재 사용 중인 옵션 mysql 5.6

     

    [client]
    port = 3306
    socket = /var/lib/mysql/mysql.sock

    [mysqld]

    # generic configuration options
    port = 3306
    socket = /var/lib/mysql/mysql.sock

    back_log = 50

    max_connections = 1000
    max_connect_errors = 1000000
    max_allowed_packet = 16M
    binlog_cache_size = 1M

    # HEAP TABLE
    max_heap_table_size = 128M
    tmp_table_size = 128M

    sort_buffer_size = 8M
    join_buffer_size = 8M

    thread_cache_size = 8

    thread_concurrency = 4

    #Query Cache 상태와 유지관리
    #FLUSH QUERY CACHE
    #FLUSH QUERY CACHE는 Query Cache의 메모리를 조각모음해서 메모리 사용 효율을 높일때 사용 한다.
    #FLUSH TABLES
    #FLUSH TABLES는 Query Cache를 비운다.
    #RESET QUERY CACHE
    #RESET QUERY CACHE는 Query Cache의 캐시된 모든 쿼리결과를 제거 한다.
    #
    # 0(OFF) : results를 캐쉬하거나 retrieve하지 않음.
    # 1(ON) : select sql_no_cache.. 쿼리를 제외한 모든 results를 캐쉬
    # 2(DEMAND): select sql_cache… 쿼리만 캐쉬
    query_cache_type = 1
    # DB 실제 사용량에 비례해서 운영하면서 조절하면 됨
    query_cache_size = 64M
    # 설정저장가능한 최대 results크기(디폴트:1M) 보통 query_cache_size의 1~10%정도 설정
    query_cache_limit = 6M

    ft_min_word_len = 4

    #default_table_type = MYISAM

    thread_stack = 192K

    transaction_isolation = REPEATABLE-READ

    log-bin=mysql-bin

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

    #log_long_format

    server-id = 1
    #*** MyISAM Specific options
    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

    #skip-bdb

    # *** INNODB Specific options ***
    #innodb_additional_mem_pool_size = 16M
    innodb_buffer_pool_size = 321M
    # Innodb 사용시 5.x 부터 사용 가능한 테이블당 파일 용량 조절
    #innodb_data_file_path = ibdata1:10M:autoextend
    innodb_file_per_table
    innodb_file_io_threads = 4
    innodb_thread_concurrency = 4
    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 = 30
    explicit_defaults_for_timestamp
    [mysqldump]
    # Do not buffer the whole result set in memory before writing it to
    # file. Required for dumping very large tables
    quick

    max_allowed_packet = 16M
    [mysql]
    no-auto-rehash
    # Only allow UPDATEs and DELETEs that use keys.
    #safe-updates

    [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]
    # Increase the amount of open files allowed per process. Warning: Make
    # sure you have set the global system limit high enough! The high value
    # is required for a large number of opened tables
    open-files-limit = 8192

    Comments

    comments

    Post Tagged with , ,

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.