设为首页 收藏本站
查看: 682|回复: 0

[经验分享] 关于my.cnf配置文件详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-23 09:16:33 | 显示全部楼层 |阅读模式
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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59876-1-1.html 上篇帖子: MySQL数据库替换longtext类型字段的某个词 下篇帖子: Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用 配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表