mysql構成(my.cnf)
8298 ワード
mysqlコンパイルのデフォルト構成は、ほとんどが適切ですが、信頼できるものではありません.mysqlの使用目標は非常に柔軟であり、自分がサーバ上で唯一のアプリケーションであると仮定していないため、大量のリソースを使用しないように設計されています.デフォルトではmysqlは、わずかなデータの単純なクエリーを実行するために適切なリソースを使用して起動するだけです.データ量が大きい場合は、mysqlの構成を自分で構成する必要があります.
構成時にはmysqlリリースで提供されているインスタンスプロファイルや、オペレーティングシステムのインストールパッケージに付属するプロファイルは使用しないことをお勧めします.最初から始めたほうがいいです.
実際にmysqlの構成性が強すぎて弱点とも言えるが、構成に多くの時間がかかるように見えるが、ほとんどの構成のデフォルト値はすでに最適な構成なので、あまり構成を変更しないほうがいい.一部の構成の存在を忘れることもできる.
以下は完全な最小プロファイルです.
他のプロファイルに比べて、ここの構成オプションは少なすぎるかもしれません.しかし、実際には多くの人のニーズを超えています.バイナリ・ログなど、他にも重要な構成があります.
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プロファイルの構成項目です.
構成時には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サーバのクエリーの実行、解析、および内部管理で消費されるメモリを制御できませんが、特定のエントリで使用されるメモリの量は多くのパラメータで制御できます.一般的なメモリ構成方法は次のとおりです.
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