互联网金融MySQL优化参数标准(2)
如果你想让数据库服务器充当主节点的备份节点,那么开启二进制日志是必须的.如果这么做了之后,还别忘了设置server_id为一个唯一的值.就算只有一个服务器,如果你想做基于时间点的数据恢复,这(开启二进制日志)也是很有用的:从你最近的备份中恢复(全量备份),并应用二进制日志中的修改(增量备份). 二进制日志一旦创建就将永久保存.所以如果你不想让磁盘空间耗尽,你可以用 PURGE BINARY LOGS 来清除旧文件,或者设置expire_logs_days 来指定过多少天日志将被自动清除.记录二进制日志不是没有开销的,所以如果你在一个非主节点的复制节点上不需要它的话,那么建议关闭这个选项. 12.skip_name_resolve 当客户端连接数据库服务器时,服务器会进行主机名解析,并且当DNS很慢时,建立连接也会很慢.因此建议在启动服务器时关闭skip_name_resolve选项而不进行DNS查找.唯一的局限是之后GRANT语句中只能使用IP地址了,因此在添加这项设置到一个已有系统中必须格外小心. 13.sync_binlog sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log. 当sync_binlog =N (N>0),MySQL 在每写N次二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去.当innodb_flush_log_at_trx_commit和sync_binlog ?都为 1 时是最安全的,在mysqld服务崩溃或者服务器主机crash的情况下,binary log只有可能丢失最多一个语句或者一个事务.但是鱼与熊掌不可兼得,双1会导致频繁的IO操作,因此该模式也是最慢的一种方式.出于我们的业务考虑在业务压力允许的情况下默认的都是双1配置. 14.log_slave_update 当业务中需要使用级联架构的时候log_slave_update = 1这个参数必须打开,否者第三级可能无法接收到第一级产生的binlog,从而无法进行数据同步. 15.tmpdir 如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下.因此尽可能将tmpdir配置到性能好速度快的存储设备上. 16.慢日志相关 slow_query_log = 1 ??#打开慢日志 slow_query_log_file = /mysql/log/mysql.slow long_query_time = 0.5 ?#设置超过多少秒的查询会入慢日志 其他问题1.SSD对参数的影响 随着科学技术的发展,越来越多的存储设备开始由传统的机械组件转向由电子元件组成的永久存储,且价钱越来越能让企业接受.存储组件速度提升后,再用传统机械组件的DB配置就显得浪费了,所以就需要针对不同的存储技术对MySQL配置作出调整,比如 innodb_io_capacity需要调大,日志文件和redo放到机械硬盘,undo放到SSD,atomic write不需要Double Write Buffer,InnoDB压缩,单机多实例+cgroup等等.分析 I/O 情况,动态调整 innodb_io_capacity 和 innodb_max_dirty_pages_pct;试图调整 innodb_adaptive_flushing,查看效果. 2.线程池设置 针对innodb_write_io_threads 和 innodb_read_io_threads 的调优我们目前没有做,但我相信调整为8或者16,系统 I/O 性能会更好.还有,需要注意以下几点:任何一个调整,都要建立在数据的支撑和严谨的分析基础上,否则都是空谈;?这类调优是非常有意义的,是真正能带来价值的,所以需要多下功夫,并且尽可能地搞明白为什么要这么调整. 3.CPU相关
4.IO相关的
文章来自微信公众号:DBAplus社群 (编辑:ASP站长网) |