|
Mysql作为最常用的数据库软件,对于关系型数据库来说无疑是比较优秀的,随着版本的不断更新,其功能也在增长。my.cnf作为mysql的核心配置文件,很有必要知道一下。
[iyunv@localhost ~]# mysql --version
mysql Ver 14.14 Distrib 5.6.16, for Linux (x86_64) using EditLine wrapper
-------------------------------------------------------------------------------------
# For advice on how to change settings please see
# # http://dev.mysql.com/doc/refman/ ... ation-defaults.html
# # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# # *** default location during install, and will be replaced if you
# # *** upgrade to a newer version of MySQL.
[client]
port =3306
# #default-character-set=utf8
#
#
#
[mysqld_safe]
open-files-limit = 32768
#
[mysqld]
port = 3306【监听端口】
socket =/tmp/mysqld.sock【socket文件】
pid-file =/usr/local/mysql/data/mysqld.pid【pid文件】
basedir =/usr/local/mysql【安装目录】
datadir =/usr/local/mysql/data【数据目录】
#
# #character-set-server =utf8【字符设置】
#
skip-external-locking【避免mysql的外部锁定,保持mysql的稳定性】
skip-name-resolve【避免mysql对外部的连接进行DNS解析,若使用此设置,那么远程主机连接时只能使用ip,而不能使用域名】
max_connections =3000【mysql允许最大连接进程数】
max_connect_errors =10【每个客户端允许异常终端的次数,如果达到此限制,这个客户端将会被mysql服务阻止直到执行了‘FLUSH HOSTS’或者服务重启】
table_open_cache =2048
max_allowed_packet =16M【设置网络传输中传输消息的最大值,默认为1M,最大可以是1G】
binlog_cache_size =8M【设置bin-log缓存大小】
max_heap_table_size =64M
read_buffer_size =2M【指定MYISAM表全表扫描的缓冲大小】
read_rnd_buffer_size =16M
sort_buffer_size =8M【设置排序缓冲区来处理队列所引起的排序,默认为2M,该参数对应分配到的内存是每个连接独占的,如有100个连接,则会分配排序缓冲区大小为2*100,推荐设置为6M-8M】
join_buffer_size = 8M【设定联合查询操作所使用的缓冲区大小】
thread_cache_size = 8【threadcache池可以缓存连接线程的最大数量,默认为0,该值表示可以重新利用保存在缓存中线程的数量,当断开连接时若缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,若果缓存中是空的或者是新的请求,那么线程将被重新创建。设置规律为:1G内存设置为8,2G内存设置为16,4G以上设置为64】
thread_concurrency = 8【根据cpu的数量而定】
query_cache_size = 64M【指定mysql的查询缓存区大小,用来缓冲select结果,这样当下次查询同一结果会直接从内存读取,提高效率,可根据Qcache_lowmem_prunes的大小来判断当前的负载是否足够高】
query_cache_limit = 2M【只有小于该值的结果才会被缓冲,根据实际情况而定,如果该值过大则会覆盖其他所有的查询结果】
ft_min_word_len = 4【被全文检索索引的最小字长,修改此值之后,你需要重建你的FULLTEXT索引】
default_storage_engine = INNODB【指定默认的存储引擎】
thread_stack =192K【线程使用的堆栈大小,此容量的内存在每次连接时被预留,默认设置基本可以满足大多数的应用,除非你有特殊需求,你可以修改此值的大小】
transaction_isolation =REPEATABLE-READ【指定默认的事务隔离级别(READ UNCOMMITIED:读未提交,READ-COMMITTE:读已提交,REPEATABLE READ:可重复读,SERIALIZABLE:串行)】
#
#
tmp_table_size = 128M【内存临时表的大小,如果超过该值,会将临时表写入到数据盘里面】
server-id = 21【serverid可以作为此数据库的唯一标识符,在主从架构中必须启用该选项】
key_buffer_size = 128M【指定索引缓冲区的大小,内存为4G是设置为256M或384M】
bulk_insert_buffer_size = 64M【设置批量插入数据缓存大小,可以有效提高插入效率,默认为8M】
#
# ####LOG
slow_query_log=1【设置慢查询间隔时间】
slow_query_log_file=db-slow.log【指定文件名称】
long_query_time = 1
binlog_cache_size = 4M
max_binlog_cache_size = 8M【指定bin-log缓存日志大小】
max_binlog_size = 1G【指定bin-log日志最大值】
binlog-format = MIXED【设置bin-log日志格式,binlog的格式有三种:STATEMENT(基于sql语句的复制),ROW(基于行的复制),MIXED(混合模式)】
expire_logs_days = 15【指定日志的保存时间】
#
log-error=db-mysql.err
log-bin=db-log-bin【开启二进制日志功能】
relay-log=db-relay-bin【设置中继日志,在主从架构中使用,从库读取中继日志来更新数据】
#
#
myisam_sort_buffer_size = 128M【MyISAM表发生变化时重新排序所需的缓冲】
myisam_max_sort_file_size = 10G【MySQL重建索引时所允许的最大临时文件大小(当REPAIR,ALTER TABLE或者是LOAD DATA INFILE),如果大于设定值,则索引会通过键值缓冲创建】
myisam_repair_threads = 1【如果一个表拥有超过一个索引,MyISAM可以通过并行排序使用超过一个线程去修复它们】
myisam_recover【开启自动检查和修复没有正确关闭的MyISAM表】
#
#
#innodb_force_recovery=1
innodb_additional_mem_pool_size = 16M【此参数指定InnoDB存储的数据目录信息和其它内部数据结构的内存池大小,不是一个强制性参数】
innodb_buffer_pool_size = 512M【这对InnoDB很重要,指定InnoDB的缓冲池大小,InnoDB把数据和索引都缓存起来,根据实际情况而定,如果数据浮动量较大,则可以考虑把值设置稍大一些】
innodb_data_file_path = ibdata1:100M:autoextend【表空间文件,属于重要数据】
innodb_data_home_dir = /usr/local/mysql/data【设置InnoDB的数据目录】
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16【InnoDB允许的线程数量,取决于硬件和应用程序以及系统的调度方式】
innodb_flush_log_at_trx_commit = 1【设置为1,将在每次提交事务后将日志写入磁盘;设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次】
innodb_log_buffer_size = 8M【设置日志文件所使用的内存大小,以M为单位,不宜过大,否则出现意外之后,有可能丢失数据,1-8之间一般都可以了】
innodb_log_file_size = 1G【确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但同时也会增加故障恢复所需要的时间】
innodb_log_files_in_group = 3【设置mysql可以通过循环方式将日志文件写到多个文件,推荐设置为3M】
innodb_log_group_home_dir = /usr/local/mysql/data
innodb_max_dirty_pages_pct = 90【Buffer_Pool中Dirty_Page所占的数量,直接影响InnoDB的关闭时间。参数innodb_max_dirty_pages_pct可以直接控制了Dirty_Page在Buffer_Pool中所占的比率,而且幸运的是innodb_max_dirty_pages_pct是可以动态改变的。所以,在关闭InnoDB之前先将innodb_max_dirty_pages_pct调小,强制数据块Flush一段时间,则能够大大缩短MySQL关闭的时间。】
innodb_lock_wait_timeout = 120【InnoDB 有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合InnoDB使用MyISAM的lock tables 语句或第三方事务引擎,则InnoDB无法识别死锁。为消除这种可能性,可以将innodb_lock_wait_timeout设置为一个整数值,指示 MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)】
innodb_file_per_table = 1【开启独享表空间。0代表关闭,1代表开启】
#
[mysqldump]
quick
max_allowed_packet = 32M
#
[mysql]
no-auto-rehash
#
#
#
#
[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 4M
write_buffer = 4M
#
[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 4M
write_buffer = 4M
#
[mysqlhotcopy]
interactive-timeout
#
#
#
#
# # Remove leading # and set to the amount of RAM for the most important data
# # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# # innodb_buffer_pool_size = 128M
#
# # Remove leading # to turn on a very important data integrity option: logging
# # changes to the binary log between backups.
# # log_bin
#
# # These are commonly set, remove the # and set as required.
# # basedir = .....
# # datadir = .....
# # port = .....
# # server_id = .....
# # socket = .....
#
# # Remove leading # to set options mainly useful for reporting servers.
# # The server defaults are faster for transactions and fast SELECTs.
# # Adjust sizes as needed, experiment to find the optimal values.
# # join_buffer_size = 128M
# # sort_buffer_size = 2M
# # read_rnd_buffer_size = 2M
#
# #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
|
|