美文网首页
redis因AOF追加磁盘阻塞发生故障转移

redis因AOF追加磁盘阻塞发生故障转移

作者: 卢会军_abc9 | 来源:发表于2018-06-08 14:11 被阅读0次

    追加AOF时磁盘繁忙

    redis 错误日志截图

    下图为AOF工作流程图

    AOF工作流程图

    1.所有的写入命令会追加aof_buf(缓冲区中)。

    2.AOF缓冲区根据对应的策略向硬盘做同步操作。

    3.随着AOF文件越来越大,需要定期对AOF文件进行重写,达成压缩的目的(对一个key跟新100次会有100条记录, 重写后只留最后一条).

    4.当redis服务器重启时,可以加载AOF文件进行数据恢复。

    原主数据库追加aof阻塞

    ip地址 原主库追加阻塞次数.

    aof_delayed_fsync:154

    使用everysec(每秒)刷盘策略的流程图

    1.主线程负责AOF缓冲区

    2.AOF线程负责每秒一次同步磁盘操作,并记录最近一次同步时间.

    3.主线程对比AOF同步时间:

    3.1如果距离上次同步时间在两秒内,主线程直接返回。

    3.2如果距离上次同步时间超过两秒(意识是现在还在同步),主线程将会被阻塞, 直到同步完成。

    整个集群的其他主库阻塞次数统计

    15台主库的AOF 在SYNC的时候因磁盘繁忙,

    追加AOF时阻塞次数,其中有11台主库被阻塞过,

    aof_delayed_fsync阻塞次数.

    ip1

    # Persistence

    aof_delayed_fsync:1

    ip2

    # Persistence

    aof_delayed_fsync:18

    ip3

    # Persistence

    aof_delayed_fsync:0

    ip4

    # Persistence

    aof_delayed_fsync:1

    解决方案

    1.打开no-appendfsync-on-rewrite参数, 默认关闭,表示AOF重写期间不做sync操作, 并不能根本解决问题, 因为故障转移前没有发生AOF重写。

    2.关闭AOF, 如果一组(主-从) 同时宕机, 会丢失5分钟数据,启动redis时如果没有发现AOF文件,redis 会选择RDB来恢复数据,rdb copy-on-write到磁盘的频率5分钟一次。

    3.提升磁盘写入速度。

    重启加载流程图

    RDB 物化到磁盘频率图

    相关文章

      网友评论

          本文标题:redis因AOF追加磁盘阻塞发生故障转移

          本文链接:https://www.haomeiwen.com/subject/etcasftx.html