mysql大量脏页未刷盘关闭实例非常缓慢

异常现象

由于业务需求,需要重启msyql从库,但是发现关闭非常慢,超过60秒,由于历史原因,启动脚本设置了如果60秒未关闭就会强制kill -9,数据库关闭后再进行重启时报启动失败,由于当时比较紧急,没有查看报错日志,没有留下失败的原因。不过从这次关闭时间太长发现这台机器的脏页非常大,大量的脏页再60秒内未完成刷盘,最终导致这次故障,以下信息是后期模拟故障原因。

  • 关闭超过60秒kill -9直接杀掉进程


    mysql大量脏页未刷盘关闭实例非常缓慢_第1张图片
    WeChat_1528710350.jpeg
  • 日志信息(日志停留在了purge阶段)


    mysql大量脏页未刷盘关闭实例非常缓慢_第2张图片
    WeChat_1528710379.jpeg
  • 启动(进行了recovery)


    WeChat_1528710738.jpeg

实例基础信息:

  • 数据库版本:MariaDB10.0.27
  • 硬件信息:青云主机,普通磁盘非raid
  • 数据库中数据量> innodb buffer pool配置
    innodb_fast_shutdown = 1
    innodb_io_capacity = 200
    innodb_io_capacity_max = 2000
    innodb_flush_log_at_trx_commit = 1
    innodb_max_dirty_pages_pct = 75

加快脏页刷盘策略

  • 加快脏页刷新策略(根据磁盘io瓶颈设置)
set global innodb_io_capacity = 1000;
set global innodb_max_dirty_pages_pct = 35;
  • 等待半小时作业看到脏页数量明显持续减少


    mysql大量脏页未刷盘关闭实例非常缓慢_第3张图片
    image.png

你可能感兴趣的:(mysql大量脏页未刷盘关闭实例非常缓慢)