mysql構成(my.cnf)


mysqlコンパイルのデフォルト構成は、ほとんどが適切ですが、信頼できるものではありません.mysqlの使用目標は非常に柔軟であり、自分がサーバ上で唯一のアプリケーションであると仮定していないため、大量のリソースを使用しないように設計されています.デフォルトではmysqlは、わずかなデータの単純なクエリーを実行するために適切なリソースを使用して起動するだけです.データ量が大きい場合は、mysqlの構成を自分で構成する必要があります.
構成時にはmysqlリリースで提供されているインスタンスプロファイルや、オペレーティングシステムのインストールパッケージに付属するプロファイルは使用しないことをお勧めします.最初から始めたほうがいいです.
実際にmysqlの構成性が強すぎて弱点とも言えるが、構成に多くの時間がかかるように見えるが、ほとんどの構成のデフォルト値はすでに最適な構成なので、あまり構成を変更しないほうがいい.一部の構成の存在を忘れることもできる.
以下は完全な最小プロファイルです.
[mysqld]
#GENERAL
datadir    =    /var/lib/mysql
socket     =    /var/lib/mysql/mysql.sock
pid_file    =    /var/lib/mysql/mysql.pid
user        =    mysql
port         =   3306
default_storage_engine=InnoDB
#INNODB
innodb_buffer_pool_size   = <value>
innodb_log_file_size          =<value>
innodb_file_per_table        =1
innodb_flush_method        =O_DIRECT
#MyISAM
key_buffer_size       = <value>
#LOGGING
log_error   = /var/lib/mysql/mysql-error.log
slow_query_log = /var/lib/mysql/mysql-slow.log
#OTHER
tmp_table_size    = 32M
max_heap_table_size   = 32M
query_cache_type  = 0
query_cache_size = 0
max_connections = <value>
thread_cache = <value>
table_cache = <value>
open_files_limit = 65535
[client]
socket = /var/lib/mysql/mysql.sock
port = 3306

他のプロファイルに比べて、ここの構成オプションは少なすぎるかもしれません.しかし、実際には多くの人のニーズを超えています.バイナリ・ログなど、他にも重要な構成があります.
1、メモリ使用の設定
mysqlを構成してメモリを正しく使用することは、高性能にとって極めて重要です.mysqlのメモリは、制御可能なメモリと制御不可能なメモリの2種類に分けられます.mysqlサーバのクエリーの実行、解析、および内部管理で消費されるメモリを制御できませんが、特定のエントリで使用されるメモリの量は多くのパラメータで制御できます.一般的なメモリ構成方法は次のとおりです.
  • は、使用可能なメモリ上限
  • を決定する.
  • は、各接続mysqlがどれだけのメモリを使用する必要があるかを決定します.例えば、ソートバッファやテンポラリ・テーブル
  • などです.
  • は、オペレーティングシステムがどれだけのメモリを必要とするかを決定します.同じマシン上の他のプログラムで使用するメモリ
  • を含む
  • 残りのメモリをmysqlのキャッシュに全て与える.例えば、InnoDBのバッファ、MyISAMキーキャッシュ、スレッドキャッシュ、テーブルキャッシュ、InnoDBデータ辞書などである.

  • 2、mysqlのI/O動作を配置する
    一部の構成項目はmysqlがディスクにデータを同期する方法と、オペレーションをリカバリする方法に影響します.これらの操作は、高価なI/O操作に関連するため、パフォーマンスに大きな影響を及ぼします.パフォーマンスとデータ・セキュリティのバランスも示しています.通常、データがすぐにディスクに書き込まれることを保証するのは高価です.ディスク書き込みが本当にディスクに永続化されないリスクを少しでも冒すことができれば、同時性を増加させ、I/O待ちを減少させることができますが、どれだけのリスクを許容できるかを決定する必要があります.
    3、mysql同時実行の構成
    mysqlが高同時性に耐えると、mysqlが採用しているエンジンの具体的な構成に基づいて、かつて遭遇したことのないボトルネックに遭遇する可能性があります.一般的によく使われるエンジンはMyISAMとInnoDBです.これはエンジン面から着手し,彼らの特性に基づいて配置する必要がある.
    次はmysqlプロファイルの構成項目です.
    [client]  
    port = 3306
    socket = /home/mysql/mysql/tmp/mysql.sock  
    [mysqld]  
    !include /home/mysql/mysql/etc/mysqld.cnf #        ,    ,          
    port = 3306 
    socket = /home/mysql/mysql/tmp/mysql.sock  
    pid-file = /longxibendi/mysql/mysql/var/mysql.pid  
    basedir = /home/mysql/mysql/  
    datadir = /longxibendi/mysql/mysql/var/  
    # tmp dir settings  
    tmpdir = /home/mysql/mysql/tmp/  
    slave-load-tmpdir = /home/mysql/mysql/tmp/  
    # slave    load data infile     
    #language = /home/mysql/mysql/share/mysql/english/  
    character-sets-dir = /home/mysql/mysql/share/mysql/charsets/  
    # skip options  
    skip-name-resolve #grant  ,    ip         
    skip-symbolic-links #          
    skip-external-locking #       ,   myisamchk,         
    skip-slave-start #  mysql,       
    #sysdate-is-now  
    # res settings  
    back_log = 100#    ,     tcp            ,     back_log,    OS    
    max_connections = 1000 #        ,                       
    max_connect_errors = 10000 #           error     ,             ,       flush hosts ;   ;      
    #open_files_limit = 10240 
    connect-timeout = 10 #           , Linux   ,                    
    wait-timeout = 28800 #           
    interactive-timeout = 28800 #      ,  interactive_timeout(   wait_timeout)       。      wait_timeout       interactive_timeout    。  
    slave-net-timeout = 600 #               。  ,        slave_net_timeout                     
    net_read_timeout = 30 #             
    net_write_timeout = 60 #             
    net_retry_count = 10 #               ,          
    net_buffer_length = 16384 #          net_buffer_length  ,         max_allowed_packet    
    max_allowed_packet = 64M #  
    #table_cache = 512 #           。        mysqld             
    thread_stack = 192K #           
    thread_cache_size = 20 #      
    thread_concurrency = 8 #                CPU    。     CPU     
    # qcache settings  
    query_cache_size = 256M #        
    query_cache_limit = 2M #              
    query_cache_min_res_unit = 2K #              
    # default settings  
    # time zone  
    default-time-zone = system #       
    character-set-server = utf8 #server       
    default-storage-engine = InnoDB #      
    # tmp & heap  
    tmp_table_size = 512M #     ,      ,          
    max_heap_table_size = 512M #     MEMORY (HEAP)               
    log-bin = mysql-bin #       datadir  
    log-bin-index = mysql-bin.index  
    relayrelay-log = relay-log  
    relayrelay_log_index = relay-log.index  
    # warning & error log  
    log-warnings = 1 
    log-error = /home/mysql/mysql/log/mysql.err  
    log_output = FILE #  log_output           ,   FILE,       TABLE,       mysql    slow_log    
    # slow query log  
    slow_query_log = 1 
    long-query-time = 1 #        1        
    slow_query_log_file = /home/mysql/mysql/log/slow.log  
    #log-queries-not-using-indexes  
    #log-slow-slave-statements  
    general_log = 1 
    general_log_file = /home/mysql/mysql/log/mysql.log  
    max_binlog_size = 1G 
    max_relay_log_size = 1G 
    # if use auto-ex, set to 0  
    relay-log-purge = 1 #        ,    。     SQL      
    # max binlog keeps days  
    expire_logs_days = 30 #  30  binlog    
    binlog_cache_size = 1M #session    
    # replication  
    replicate-wild-ignore-table = mysql.% #            
    replicate-wild-ignore-table = test.% #            
    # slave_skip_errors=all 
    key_buffer_size = 256M #myisam  buffer,  key  data  
    sort_buffer_size = 2M #  buffer  ;      
    read_buffer_size = 2M #     (Sequential Scan)       buffer   ;      
    join_buffer_size = 8M # join buffer   ;      
    read_rnd_buffer_size = 8M #MyISAM     (Random Scan)       buffer   ;      
    bulk_insert_buffer_size = 64M #MyISAM                 。  :    per thread     
    myisam_sort_buffer_size = 64M #MyISAM                 ,  REPAIR TABLE  CREATE INDEX     ALTER TABLE      MyISAM          
    myisam_max_sort_file_size = 10G #MyISAM              ,                   。  :            .  MyISAM  ( REPAIR TABLE、ALTER TABLE LOAD DATA INFILE   ) ,  MySQL              。           ,           ,    。          
    myisam_repair_threads = 1 #      1, Repair by sorting       MyISAM   (           )  
    myisam_recover = 64K#   GROUP_CONCAT()           
    transaction_isolation = REPEATABLE-READ  
    innodb_file_per_table  
    #innodb_status_file = 1 
    #innodb_open_files = 2048 
    innodb_additional_mem_pool_size = 100M #                 ,     innodb_buffer_pool    
    innodb_buffer_pool_size = 2G #     、   、    、   、       、        
    innodb_data_home_dir = /longxibendi/mysql/mysql/var/  
    #innodb_data_file_path = ibdata1:1G:autoextend  
    innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend #     
    innodb_file_io_threads = 4 #io     
    innodb_thread_concurrency = 16 #InnoDB   InnoDB                            
    innodb_flush_log_at_trx_commit = 1 #  commit                
    innodb_log_buffer_size = 8M #        
    innodb_log_file_size = 500M #        
    #innodb_log_file_size =100M 
    innodb_log_files_in_group = 2 #        
    innodb_log_group_home_dir = /longxibendi/mysql/mysql/var/#     
    innodb_max_dirty_pages_pct = 90 #innodb            ,        90%  
    innodb_lock_wait_timeout = 50 #InnoDB                     。InnoDB                        。InnoDB LOCK TABLES         。    50   
    #innodb_flush_method = O_DSYNC 
    [mysqldump]  
    quick  
    max_allowed_packet = 64M 
    [mysql]  
    disable-auto-rehash #    TAB     
    default-character-set = utf8 
    connect-timeout = 3