加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

互联网金融MySQL优化参数标准

发布时间:2021-01-16 06:02:15 所属栏目:电商 来源:网络整理
导读:《互联网金融MySQL优化参数标准》要点: 本文介绍了互联网金融MySQL优化参数标准,希望对您有用。如果有疑问,可以联系我们。 作者介绍 张小虎, 甜橙金融持久化组负责人,多年数据库优化、运维及开发经验.擅长不同业务场景下的数据库架构设计及持久化解决方案

如果你想让数据库服务器充当主节点的备份节点,那么开启二进制日志是必须的.如果这么做了之后,还别忘了设置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相关

  • Innodb_thread_concurrency=0
  • Innodb_sync_spin_loops=288
  • table_definition_cache=2000

4.IO相关的

  • Innodb_flush_method 建议用O_DIRECT
  • Innodb_io_capacity 设置成磁盘支持最大IOPS
  • Innodb_wirte_io_threads=8
  • Innodb_read_io_threads=8
  • Innodb_purge_threads=1
  • Innodb的预读方面,如果基于主建或是唯一索引的系统,建议禁用预读
  • Innodb_random_read_ahead = off

文章来自微信公众号:DBAplus社群

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读