mysql5.7性能提升一百倍调优宝典(12)


65)relay_log_recovery
推荐设置:

1
作用:
  1. 主从复制用,推荐值为1,建议打开 。
  2. 当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性 。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启 。
如果不配的后果:
默认情况下是关闭的 。
配置实例:
relay_log_recovery = 1
66)slave_skip_errors
推荐设置:
ddl_exist_errors
作用:
主从复制用,推荐值:ddl_exist_errors 。理论上我们不应该设置这个值的 。即它在my.cnf文件中应该是消失的或者是这样的表示的:
#slave_skip_errors = ddl_exist_errors
但是有时我们的一些表(特别是不熟悉mysql的一些开发)真的是用的是mysql5.6旧版的建表语句,这个问题在平时单机模式下很难发现,一旦主从结构一上后,在5.7上真的是有一定机率(有10%-20%的机率)碰到ddl语句是旧版mysql而运行在mysql5.7上,这时在主从复制时会抛一个无法主从复制的错,那么这时我们需要抓数据,表已经建好了,这个影响不大、微乎其微,因此我们可以把它设成”忽略“ 。这个是本人的吐血经验,为什么要提这个梗 。。。你们懂的 。
如果不配的后果:
如果因为建表语句和mysql5.7有冲突时在单实例模式下mysql运行时不会发现,在主从复制时如果没有设跳过值,一旦发生,会影响主从复制,表现就是:主从复制失败 。
配置实例:
slave_skip_errors = ddl_exist_errors
67)innodb_buffer_pool_dump_pct
推荐设置:
25~40
作用:
  1. 锦上添花的值,非必要,这边给出一些best practice:
  2. 通常来说我们会设成25% 。对于大并发前提下我们会使用40这个值,这个值越大,mysql启动时间越长 。它是你的innodb_buffer_pool_size的百分比!
  3. MySQL默认在InnoDB缓冲池(而不是整个缓冲池)中仅保留最频繁访问页的25% 。请注意,这个变量是基于内存中的实际数据量,而不是缓冲池的大小 。例如,如果有100GB的缓冲池,但只有10GB的数据,默认只有10GB的25%(即2.5GB)数据保存在内存中 。
  4. 在多数使用场景下,合理的选择是:保留最有用的数据页,比加载所有的页(很多页可能在后续的工作中并没有访问到)在缓冲池中要更快 。你可以更改innodb_buffer_pool_dump_pct变量的值 。
如果不配的后果:
不配的话不生效 。
配置实例:
innodb_buffer_pool_dump_pct=25
68)innodb_page_cleaners=8
这值一般会在主从延迟的情况下会去设,它的值最好是=innodb_buffer_pool_instance的值,它就是cpu的核数 。
69)innodb_undo_log_truncate
推荐设置:
1
作用:
  1. 建议开启,设为1
  2. innodb_undo_log_truncate参数设置为1,即开启在线回收(收缩)undo log日志文件,支持动态设置 。
如果不配的后果:
不配的话是不生效的 。
配置实例:
innodb_undo_log_truncate=1
70)innodb_max_undo_log_size
推荐设置:
推荐在默认值的2倍(默认为1GB)
作用:
推荐在默认值的2倍(默认为1GB),一般我们不会轻易去设它 。
这个值和innodb_undo_tablespaces、innodb_undo_logs以及innodb_purge_rseg_truncate_frequency有关,这4个值是互相有牵连的 。
1)innodb_undo_tablespaces必须为>=3
2)innodb_undo_logs必须开启
3)innodb_purge_rseg_truncate_frequence必须开启
如果不配的后果:
系统按照1GB来计算 。
配置实例:
innodb_max_undo_log_size=2G
71)innodb_purge_rseg_truncate_frequency
推荐设置:
128
作用:
默认值在128,这个值不太会去碰 。控制回收undo log的频率 。指定purge操作被唤起多少次之后才释放rollback segments 。当undo表空间里面的rollback segments被释放时,undo表空间才会被truncate 。由此可见,该参数越小,undo表空间被尝试truncate的频率越高 。
如果不配的后果:
系统默认按照:128去设定 。


推荐阅读