生产环境MySQL Server核心参数的配置
⑴ lower_case_table_names
● 推荐理由
GNU/Linux 平台,对数据库、表、存储过程等对象名称大小写敏感
为减少开发人员的开发成本,为此推荐大家设置该参数使对象名称都自动转换成小写
● 参数介绍
取值范围:
为0:区分大小写、Linux 平台默认值
为1:不区分大小写
Linux安装的MySQL的配置文件中(/etc/my.cnf)、是没有lower_case_table_names=1这行的
在Windows安装的MySQL的配置文件中(my.ini)、是有lower_case_table_names=1这行的
所以、特别提醒下、在 Replication 配置下、Master和Slave中该参数应当保持一致!!
⑵ max_connect_errors
● 推荐理由
一台物理服务器只要连接 MySQL 数据库服务器 异常中断累计超过10次,就再也无法连接上mysqld服务
为此建议大家设置此值至少大于等于10
处理方案有 2 :
要么重启mysqld、要么 mysqladmin flush-hosts
● 参数介绍
不过、该参数和安全相关、
某些
黑客或许会尝试失败来暴力破解密码、该值如若设置过大会留下可趁之际
⑶ interactive_timeout和wait_timeout
● 推荐理由
如果你的MySQL Server有大量的闲置连接,他们不仅会白白消耗内存,而且如果连接一直在累加
那么、最终肯定会达到MySQL Server的连接上限数,这会报'too many connections'的错误
推荐值:
inactive_timeout=172800
wait_timeout=172800
● 参数介绍
interactive_timeout
参数含义:服务器关闭交互式连接所等待的秒数
wait_timeout
参数含义:服务器关闭非交互式连接所等待的秒数
⑷ transaction-isolation和binlog-format
推荐配置
只读为主的业务应用场景
transaction-isolation=read-commited
binlog-format=mixed
非只读为主的业务应用场景
binlog-format=mixed
⑸ innodb_adaptive_hash_index
● 推荐理由
InnoDB引擎会根据数据的访问频繁度,把表的数据逐渐缓到内存,若是一张表的数据大量缓存在内存中
则使用 HASH Index 会更高效
InnoDB内有Hash Index机制,监控数据的访 问情况,可以自动创建和维护一个Hash Index
⑹ innodb_max_dirty_pages_pct
● 推荐理由
InnoDB较之MyISAM,一个重要特性是InnoDB会在内存中开辟一个Buffer Pool来存储最近访问的数据块/索引块
使得下次再次访问这个块时速度能够很快、当InnoDB对需要修改数据块的时候
会先记录修改日志,然后直接对Buffer_Pool中的数据块的操作
记录日志是顺序写,对数据块的操作是内存操作,这让InnoDB在很多场景下有这很好的速度优势
上面对内存块修改完成后,InnoDB就向客户端返回了
可这时实际磁盘上的数据块,还并没有被更新,我们把这样的page称为Dirty Page
在InnoDB的后台有一个专门的线程来做将内存数据块Flush到磁盘的工作
参数innodb_max_dirty_pages_pct可以直接控制了Dirty_Page在Buffer_Pool中所占的比率
一般范围建议设置为5%~90%
比例设置较小,有利于减少mysqld服务出现问题的时候恢复时间,缺点则是需要更多的物理I/O
● 参数介绍
innodb_max_dirty_pages_pct与检查点的关系
show innodb status\G;查看检查点位置
减小innodb_max_dirty_pages_pct、会增加检查点事件发生的频率、从而减少脏页数量
生产环境中、我们经常发现:
数据库运行一段时间后,经常导致服务器大量的swap
有可能是innodb中的脏数据太多了,因为没有free space了,
mysql通知OS,把一些脏页交换出去
那么我们可尝试减小innodb_max_dirty_pages_pct
⑺ innodb_commit_concurrency
● 推荐理由
参数含义:同一时刻,允许多少个线程同时提交InnoDB事务,默认值为0,范围0-1000
0:允许任意数量的事务在同一时间点提交
N>0:允许N个事务在同一时间点提交
不过、在mysqld提供服务时、不允许把非0改为0或者把0改为非0、但可以在两个非0值之间进行变更
⑻ innodb_fast_shutdown and innodb_force_recovery
● 推荐理由
innodb_fast_shutdown
参数含义:设置innodb引擎关闭的方式,默认值为:1,正常关闭的状态
0