MySQL错误日志分析

最近这段时间,线上的一个生产库,经常看到内存用的很满,而且磁盘IO出现告警,于是打开错误日志,分析了一下,其中一条note引起了注意,如下,

2019-05-04T00:58:57.708768+08:00 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 4111ms. The settings might not

be optimal. (flushed=1164 and evicted=0, during the time.)

2019-05-04T00:59:43.866249+08:00 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 4335ms. The settings might not

be optimal. (flushed=1041 and evicted=0, during the time.)

2019-05-04T01:05:19.581244+08:00 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 5172ms. The settings might not

be optimal. (flushed=731 and evicted=0, during the time.)

2019-05-04T02:29:15.037309+08:00 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 4073ms. The settings might not

be optimal. (flushed=148 and evicted=0, during the time.)

我们从这个日志中可以了解到,我们刷脏页的page_cleaner一直在输出日志,想到翻看源码,从源码包storage的innobase目录下的buf中找到buf0flu.cc这个代码文件,经过网上查询以及分析,定位到了上面输出的源代码位置,如下:

通过这段源码,我们可以知道,触发它输出日志的条件主要是,curr_time > next_loop_time + 3000即当前实际刷脏页的时间比原定的时间超出很多,而next_loop_time的标准时间是1000毫秒,即1秒钟做一次刷新页的操作,这里就牵出了我们master thread主线程中loop主循环的每1秒的操作和每10秒的操作,如下

日志后面输出的(flushed=148 and evicted=0, during the time.),对应n_flushed_last与n_evicted 变量,而这两个变量又由n_flushed_list与n_flushed_lru赋值。

而这两个变量的赋值函数为pc_wait_finished,我们再来看下对于这个函数的注释,

这里我只拉了一部分代码注释,其中主要是一些条件判断刷新页的操作。

n_flushed_lru 这个值表示从lru 列表尾部刷新的页数,也就是日志中如evicted=0 指标的所表示的值。

最后与开发人员沟通了一下,得知这套库平常以写入居多,刷新页的操作很频繁,导致IO吃紧,又

找了一些网上大神的博客总结,根据官方文档中针对page_cleaner线程的描述我们将innodb_lru_scan_depth参数做了调整,默认是1024,调整成了 innodb_io_capacity / innodb_buffer_pool_instances=300,后续需要继续跟踪观察错误日志。

https://blog.csdn.net/isoleo/article/details/54342180

https://yq.aliyun.com/articles/41005

mysql脏页处理方法_mysql刷脏页的一次总结相关推荐

  1. apmserv mysql_APMServ MySQL 1577错误解决方法_MySQL

    bitsCN.com APMServ MySQL 1577错误解决方法 Navicat导出任何一个数据库,都会提示:1577 – Cannot proceed because system table ...

  2. mysql新建data的方法_mysql建立数据库的方法

    mysql建立数据库的方法 方法一:使用create mysql> create database roudy; Query OK, 1 row affected (0.00 sec) mysq ...

  3. mysql还原数据的方法_MySQL 数据还原

    1.1还原使用mysqldump命令备份的数据库的语法如下: mysql -u root -p [dbname] < backup.sq 示例: mysql -u root -p < C: ...

  4. mysql统计数量函数方法_mySql关于统计数量的SQL查询操作

    mySql关于统计数量的SQL查询操作,状态,订单,语句,函数,数量 mySql关于统计数量的SQL查询操作 易采站长站,站长之家为您整理了mySql关于统计数量的SQL查询操作的相关内容. 我就废话 ...

  5. mysql死锁的排查方法_MySQL死锁系列-线上死锁问题排查思路

    前言 MySQL 死锁异常是我们经常会遇到的线上异常类别,一旦线上业务日间复杂,各种业务操作之间往往会产生锁冲突,有些会导致死锁异常.这种死锁异常一般要在特定时间特定数据和特定业务操作才会复现,并且分 ...

  6. mysql几种安装方法_mysql的三种安装方式(详细)

    安装MySQL的方式常见的有三种: rpm包形式 通用二进制形式 源码编译 1,rpm包形式 (1) 操作系统发行商提供的 (2) MySQL官方提供的(版本更新,修复了更多常见BUG)www.mys ...

  7. mysql的安全加固方法_MySQL数据库安全加固方法

    MySQL数据库安全加固方法 基本安全原则 选择稳定.无漏洞版本并及时升级更新.打补丁 配置防火墙策略,更改默认端口 避免使用弱口令,定期更新口令 严格的权限分配和访问控制 具体安全配置 系统层面配置 ...

  8. mysql英文版数据库备份方法_mysql数据库太大了如何备份与还原

    命令:mysqlhotcopy 这个命令会在拷贝文件之前会把表锁住,并把数据同步到数据文件中,以避免拷贝到不完整的数据文件,是最安全快捷的备份方法. 命令的使用方法是: mysqlhotcopy -u ...

  9. mysql 批量插入数据方法_mysql大批量插入数据的4种方法示例

    前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用, ...

  10. mysql所有的审计方法_mysql的审计功能

    mysql的审计功能 mysql服务器自身没有提供审计功能,但是我们可以使用init-connect + binlog的方法进行mysql的操作审计.由于mysql binlog记录了所有对数据库长生 ...

最新文章

  1. you should specify the `steps` argument
  2. MySQL学习(四)
  3. java 循环结构和常用的类 总结笔记
  4. Chrome现在也能编辑pdf文件了!64位安卓版上线
  5. 【uoj#207】共价大爷游长沙 随机化+LCT维护子树信息
  6. day18-基于DjangoORM的外键实现增加用户(含select标签)
  7. python+webdriver(三)
  8. JAVA中两个char类型相加_1、JAVA中的几种基本类型,各占用多少字节?
  9. 用gambit学博弈论--完全信息动态博弈(一)
  10. IDEA 开启远程调试
  11. VAX插件、vs2012
  12. openpyxl,重写Worksheet
  13. sinc插值原理及其实现
  14. 基于奇异值分解的图像压缩和信息隐藏
  15. ASP.NET profile之 找不到存储过程dbo.aspnet_CheckSchemaVersion
  16. 抖音小店无货源:为什么现在95后都不想上班,想着去创业?
  17. 教程 | 扁平物体的摄影测量重建方案
  18. OSPF高级特性 —— LSA-3过滤 + Distribute-list过滤
  19. ibm tivoli_使用适用于操作系统的Tivoli Access Manager保护DB2资源
  20. notion详细使用(二)——块状的动态编辑器

热门文章

  1. 2022年终Java编程技术总结
  2. 安装CentOS找不到硬盘,无法分区,No disks selected
  3. windows查看系统运行时间和cmd命令大全
  4. 集装箱装柜计算机器在线,集装箱装柜数智能计算表
  5. VeryCD新建2组中国eMule服务器
  6. 全新的服务器debian/ubuntu---校准时间、更新apt,设置ssh远程访问
  7. MySQL性能调优-使用ROLLUP代替UNION ALL
  8. 获取微信公众号文章内容
  9. 【立创EDA开源推荐】10期基于PCB彩印教程(水转印)
  10. 三个生活中最常见的产品的嵌入式分析:台灯、智能手环、电视盒