MySQL 5.5.13
Parameter description:
[Client]
Character-set-server = UTF8
Port = 3306
Socket =/data/mysql/3306/mysql.sock
[Mysqld]
Character-set-server = UTF8
user = MySQL
Port = 3306
Socket =/data/mysql/3306/mysql.sock
Basedir =/usr/local/webserver/mysql
DataDir =/data/mysql/3306/data
Log-error =/data/mysql/3306/mysql_error.log
Pid-file =/data/mysql/3306/mysql.pid
# Table_cache parameter sets the number of table caches. Each connection comes in with at least one table cache open. #因此, the size of the Table_cache should be related to the Max_connections setting. For example, for 200 # parallel connections, the table should have a cache of at least 200xN, where N is the maximum number of tables in a join in which query # can be executed. In addition, you need to keep some extra file descriptors for temporary tables and files.
#当 Mysql accesses a table, if the table is already open in the cache, you can access the cache directly, if # is not yet cached, but there is room in the Mysql table buffer, the table is opened and placed in the slow # flush area, and if the table is full, the currently unused table is released according to certain rules , or temporarily enlarge the table cache, the advantage of using table caching is that you can access the contents of the table more quickly. Execute flush tables to empty the cached contents. In general, you can determine whether you need to increase table_cache values (where Open_tables is the number of tables opened before #, by looking at the status value of the peak time of the database Open_tables #和 opened_tables, Opened_ Tables are the number of tables that are already open). That is, if Open_tables is approaching Table_cache, and opened_tables this value is gradually increasing, consider increasing the size of this # value. There is also the time when table_locks_waited is higher, also need to increase table_cache.
Open_files_limit = 10240
Table_cache = 512
#非动态变量, restart service required
#指定MySQL可能的连接数量. When the MySQL main thread receives a very wide number of connection requests within a short time, this parameter takes effect, and the main thread takes a short time to check the connection and start a new thread. The value of the Back_log parameter indicates how many requests can be on the stack in the short time before MySQL temporarily stops responding to the new request. If the system has many connections in a short time, you need to increase the value of the parameter, which specifies the size of the incoming TCP/IP connection's listening queue. The different operating systems have their own limits on the size of this queue. Attempting to set Back_log above your operating system will be ineffective. The default value is 50. For Linux systems It is recommended to set to an integer less than 512.
Back_log = 600
#MySQL允许最大连接数
Max_connections = 5000
#可以允许多少个错误连接
Max_connect_errors = 6000
#使用 –skip-external-locking mysql option to avoid external locking. This option is turned on by default
external-locking = FALSE
#设置最大包, limit the packet size that the server accepts, and avoid the problem with the execution of the super long SQL the default is 16M, and when the MySQL client or mysqld server receives a packet larger than max_allowed_packet byte, it emits a "packet too large" error. and close the connection. For some clients, if the communication packet is too large, a "lost connection to the MySQL server" error may be encountered during query execution. The default value is 16M.
#dev-doc:http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html
Max_allowed_packet = 32M
# sort_buffer_size is a connection-level parameter that allocates the set of memory at a time when each connection (session) needs to use this Buffer for the first time.
#Sort_Buffer_Size is not the larger the better, because it is connection-level parameters, too large settings + high concurrency may deplete the system memory resources. For example: 500 connections will consume 500*sort_buffer_size (8M) =4g memory
When the #Sort_Buffer_Size exceeds 2KB, mmap () instead of malloc () is used to allocate memory, resulting in lower efficiency.
#技术导读http://blog.webshuo.com/2011/02/16/mysql-sort_buffer_size/
#dev-doc: http://dev.mysql.com/doc/refman/5.5/en/server-parameters.html
#explain select*from table where order limit; filesort
#属重点优化参数
Sort_buffer_size = 8M
#用于表间关联缓存的大小
Join_buffer_size = 1M
#服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量, if there is room in the cache when disconnected, the client's thread is placed in the cache, and if the thread is requested again, the request is read from the cache, if the cache is empty or a new request, Then this thread will be recreated, and if there are many new threads, adding this value can improve system performance. By comparing the variables of connections and threads_created states, you can see the effect of this variable
Thread_cache_size = 300
#设置thread_concurrency的值的正确与否, the performance of MySQL has a great impact on multiple CPUs (or multi-core), the error set the value of Thread_concurrency, will cause MySQL can not take full advantage of multiple CPUs (or multi-core), Occurs at the same time only one CPU (or core) in the working situation. Thread_concurrency should be set to twice times the number of CPU cores. For example, there is a dual-core CPU, then the thread_concurrency should be 4; 2 Dual-core CPUs, the value of thread_concurrency should be 8
#属重点优化参数
Thread_concurrency = 8
#对于使用MySQL的用户, we must not be unfamiliar with this variable. In previous years of MyISAM engine optimization, this parameter is also an important optimization parameter. But with the development, this parameter also burst to expose some problems. The memory of the machine is getting bigger and larger, and people are accustomed to allocating the previously useful parameters more and more. The increase in this parameter also causes a series of problems. Let's start with an analysis of how Query_cache_size works: When a select query is working in DB, DB caches the statement, and when the same SQL comes in DB again, DB returns the result from the cache to the client without changing the table. There is a closing point where DB requires that the table involved in the statement not be changed during that time when it is working with Query_cache. What about the data in the Query_cache if the table is changing? First, the Query_cache and the table-related statements are all invalidated and then written to the update. So if the query_cache is very large, the query structure of the table is more, the query statement is slow to fail, an update or insert will be slow, so see is update or insert why so slow. Therefore, in the database writes the quantity or the update quantity is also relatively large system, this parameter is not suitable allocates too big. And in high concurrency, write a large system, the establishment of the function to ban.
#重点优化参数 (Main library additions and deletions change-myisam)
Query_cache_size = 512M
#指定单个查询能够使用的缓冲区大小, the default is 1M
Query_cache_limit = 2M
#默认是4KB, setting a value is good for large data queries, but if your queries are small data queries, it can easily lead to memory fragmentation and waste.
# Query Cache Fragmentation Rate = Qcache_free_blocks/qcache_total_blocks * 100%
#如果查询缓存碎片率超过20%, you can use flush query cache to defragment, or try to reduce query_cache_min_res_unit, if your query is a small amount of data.
# Query Cache utilization = (query_cache_size–qcache_free_memory)/ query_cache_size * 100%
#查询缓存利用率在25% below the query_cache_size set is too large, can be appropriately reduced; query cache utilization is above 80% and Qcache_lowmem_prunes > 50 query_cache_ Size may be a bit small, or too much fragmentation.
# Query Cache Hit Ratio = (qcache_hits–qcache_inserts)/qcache_hits * 100%
Query_cache_min_res_unit = 2k
Default-storage-engine = MyISAM
#限定用于每个数据库线程的栈大小. The default settings are sufficient to satisfy most applications
Thread_stack = 192K
# Set the default transaction isolation level. The available levels are as follows:
# read-uncommitted, read-committed, Repeatable-read, SERIALIZABLE
# 1.READ uncommitted-READ UNCOMMITTED 2.READ committe-Read submitted 3.REPEATABLE read-repeatable read 4. SERIALIZABLE-Serial
Transaction_isolation = read-committed
# The default size for Tmp_table_size is 32M. If a temporary table exceeds that size, MySQL produces a full form of the table Tbl_name error, and if you do many advanced GROUP by queries, increase the tmp_table_size value.
Tmp_table_size = 246M
Max_heap_table_size = 246M
#索引缓存大小: It determines the speed of database index processing, especially the speed of index reading
Key_buffer_size = 512M
# MySQL reads into buffer size. A request to sequentially scan a table allocates a read buffer, which is allocated a memory buffer by MySQL. The read_buffer_size variable controls the size of this buffer. If the sequential scan request for a table is very frequent, and you think that frequent scans are too slow, you can improve performance by increasing the value of the variable and the size of the memory buffer.
Read_buffer_size = 4M
# MySQL's random read (query operation) buffer size. When rows are read in any order (for example, in sorted order), a random read buffer is assigned. When sorting queries, MySQL first scans the buffer to avoid disk search, improve query speed, if you need to sort large amounts of data, you can adjust the value appropriately. However, MySQL will release this buffer space for each client connection, so try to set this value as appropriate to avoid excessive memory overhead.
Read_rnd_buffer_size = 16M
#批量插入数据缓存大小, can effectively improve the insertion efficiency, the default is 8M
Bulk_insert_buffer_size = 64M
# MyISAM The buffer needed to reorder when the table is changed
Myisam_sort_buffer_size = 128M
# The maximum amount of temporary files allowed when MySQL rebuilds the index (when REPAIR, ALTER TABLE, or LOAD DATA INFILE).
# If the file size is larger than this, the index is created through a key-value buffer (slower)
Myisam_max_sort_file_size = 10G
# If a table has more than one index, MyISAM can fix them by using more than one thread in parallel sorting.
# This is a good choice for users with multiple CPUs and large amounts of memory.
Myisam_repair_threads = 1
#自动检查和修复没有适当关闭的 MyISAM Table
Myisam_recover
Interactive_timeout = 120
Wait_timeout = 120
Innodb_data_home_dir =/data/mysql/3306/data
#表空间文件 Important data
Innodb_data_file_path = Ibdata1:2000m;ibdata2:10m:autoextend
#这个参数用来设置 InnoDB stored data directory information and other internal data structure of the memory pool size, similar to Oracle's library cache. This is not a mandatory parameter that can be breached.
Innodb_additional_mem_pool_size = 16M
#这对Innodb表来说非常重要. InnoDB is more sensitive to buffering than MyISAM tables. MyISAM can be run under the default Key_buffer_size settings, however InnoDB is like a snail in the default innodb_buffer_pool_size settings. Because InnoDB caches data and indexes without leaving the operating system with too much memory, you can set it up to 70-80% usable memory if you only need to use InnoDB. Some of the rules applied to Key_buffer are-if your data is small and not exploding, then you don't have to set the innodb_buffer_pool_size too big.
Innodb_buffer_pool_size = 512M
#文件IO的线程数, typically 4, but can be set larger under Windows.
Innodb_file_io_threads = 4
# Number of allowed threads within the InnoDB core.
# The optimal value depends on the application, hardware, and operating system scheduling.
# too high a value can cause a thread to be mutually exclusive bumps.
Innodb_thread_concurrency = 8
#如果将此参数设置为1, the log is written to disk each time the transaction is committed. To provide performance, you can set to 0 or 2, but assume the risk of losing data in the event of a failure. A setting of 0 indicates that the transaction log is written to the log file, and the log files are flushed to disk once per second. A set of 2 indicates that the transaction log will be written to the log at the time of submission, but the log file is flushed to disk once.
Innodb_flush_log_at_trx_commit = 2
#此参数确定些日志文件所用的内存大小, in M as a unit. A larger buffer can improve performance, but unexpected failures will lose data. MySQL developer recommends setting to 1-8m
Innodb_log_buffer_size = 16M
#此参数确定数据日志文件的大小, in M, larger settings can improve performance, but also increase the time required to recover a failed database
Innodb_log_file_size = 128M
#为提高性能, MySQL can write log files to multiple files in a circular fashion. Recommended set to 3M
Innodb_log_files_in_group = 3
#推荐阅读http://www.taobaodba.com/html/221_innodb_max_dirty_pages_pct_checkpoint.html
# The number of dirty_page in Buffer_pool directly affects the closing time of InnoDB. Parameter innodb_max_dirty_pages_pct can directly control the ratio of dirty_page in Buffer_pool, and fortunately innodb_max_dirty_pages_pct can be changed dynamically. Therefore, before closing the InnoDB, the innodb_max_dirty_pages_pct is reduced, forcing the data block flush a period of time, can greatly shorten the time of MySQL shutdown.
innodb_max_dirty_pages_pct = 90
# InnoDB has its built-in deadlock detection mechanism that can cause unfinished transactions to roll back. However, if you combine InnoDB with a MYISAM lock tables statement or a Third-party transaction engine, InnoDB cannot recognize the deadlock. To eliminate this possibility, you can set Innodb_lock_wait_timeout to an integer value indicating how long the MySQL waits (in seconds) before allowing other transactions to modify the data that is eventually rolled back by the transaction.
Innodb_lock_wait_timeout = 120
#独享表空间 (OFF)
innodb_file_per_table = 0
#start mysqld With–slow-query-log-file=/data/mysql/3306/slow.log
Slow_query_log
Long_query_time = 1
replicate-ignore-db = MySQL
REPLICATE-IGNORE-DB = Test
Replicate-ignore-db = Information_schema
#配置从库上的更新操作是否写二进制文件, if this is from the library, but also to do other from the library's main library, then need to hit this parameter, so that from the library from the library can be log synchronization this parameter to use with-logs-bin
Log-slave-updates
Log-bin =/data/mysql/3306/binlog/binlog
Binlog_cache_size = 4M
#STATEMENT, row,mixed.
#基于SQL语句的复制 (statement-based replication, SBR), row-based replication (row-based replication, RBR), mixed-mode replication (mixed-based replication, MBR )。 Accordingly, the Binlog format also has three kinds: statement,row,mixed.
Binlog_format = MIXED
Max_binlog_cache_size = 64M
Max_binlog_size = 1G
Relay-log-index =/data/mysql/3306/relaylog/relaylog
Relay-log-info-file =/data/mysql/3306/relaylog/relaylog
Relay-log =/data/mysql/3306/relaylog/relaylog
Expire_logs_days = 30
Skip-name-resolve
#master-connect-retry = 10
Slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
Server-id = 1
[Mysqldump]
Quick
Max_allowed_packet = 32M
[Myisamchk]
Key_buffer_size = 256M
Sort_buffer_size = 256M
Read_buffer = 2M
Write_buffer = 2M
[Mysqlhotcopy]
Interactive-timeout