配置参数优化

innodb_buffer_pool_size:如果是单实例且绝大多数是InnoDB引擎表,则可以设置为物理内存的50%~80%左右。

innodb_flush_log_at_trx_commit 和sync_binlog:分别是redo log刷新和binlog刷新的参数。如果要求数据不能丢失,建议把这两个参数都设置为1。这就是数据库汇总的双一概念,可以保证主从架构中数据的一致性。但想要保证其强一致性,主从故障切换过程中不丢失数据,可以考虑使用MYSQL5.7的增强半同步功能。

innodb_max_dirty_pages_pct:该参数是指脏页占innodb buffer pool的比例。当比列到达所设置的值时,触发刷脏页到磁盘。不要将该参数设置太大,脏页过多也会影响数据库的TPS。该值建议调整为25%~50%。

innodb_io_capacity:innodb后台进程最大的I/O性能指标,影响刷新脏页和插入缓冲的数量。默认值是200,在高转速磁盘下,可以适当提高该参数的值。SSD磁盘配置下可以调整该值为5000~20000,PCIE-SSD可以调整得更高(50000左右)。

innodb_data_file_path=ibdata1:1G:autoextend:该参数不要使用默认的10MB大小,一般设置为1GB.防止在高并发情况下,数据库受到影响。

long_query_time:该参数在5.5版本以上已经可以设置为小于1了,建议设置该参数值为0.1~0.5s.记录那么执行较慢的sql,便于后续的优化性能排查。

binlog_format:建议binlog的记录格式设置为row模式,让数据更加安全可靠,复制过程中不会出现丢失数据的情况。

interactive_timeout,wait_timeout:两个参数分别代表交互式等待时间和非交互式等待时间 ,两个参数设置的值要一致,且必须同时修改,建议调整为300~500s,不要取默认值8小时。

max_connections:数据库最大连接数,不要盲目去调大连接数的数量,应该注意优化业务中的SQL语句,让SQL快速执行完成,可以释放掉连接。一味的提高连接数的值,容易发生OOM现象,从而可能“kill”掉MYSQL服务,所以一定谨慎调高该值。在调高参数的同时,还应该调低interaction_timeout和wait_timeout的值。

innodb_log_file_size:redo log的值不要太大,如果值太大,当实例恢复时,会消耗大量时间;值太小也会造成日志切换过于频繁。

gerenal log:全量日志建议关闭,否则该日志文件会越来越大,造成磁盘空间的紧张,MYSQL的性能也会逐渐下降。

配置文件

[mysqld]

innodb_purge_threads=4  #启用purge线程,来回收已经使用并分配的undo页,分摊master线程的压力。数字4表示启用4个purge线程。

innodb_page_cleaner=1  #数据页清理线程,脏页的刷新操作,减轻master线程的压力。

innodb_log_buffer_size=16M    #重做日志缓冲池,一般8M够用,因为主线程一秒会刷新一次,事务提交的时候会刷新一个,且缓冲池剩余空间小于1/2时,也会把缓冲刷新到日志文件。

innodb_fast_shutdown=1  #数据库关闭时,将所有脏页都刷回磁盘。

innodb_max_dirty_pages_pct=50 #默认值为75。

log_queries_not_using_indexes=1   #记录没有用到索引的查询语句到慢查询日志。

log_throttle_queries_not_using_indexe默认为file,也可以将值设为table,然后就可以查询mysql架构下的slow_log表了。此参数为动态参数。

log-bin=name   #二进制文件名。

  

原文地址:https://www.cnblogs.com/wonchaofan/p/13513161.html