我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

追加AOF时磁盘繁忙

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

redis 错误日志截图

下图为AOF工作流程图


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

AOF工作流程图

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

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

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

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

原主数据库追加aof阻塞

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

aof_delayed_fsync:154


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

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


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

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.提升磁盘写入速度。


重启加载流程图


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

RDB 物化到磁盘频率图


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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

目录