复述,因AOF追加磁盘阻塞发生故障转移

复述,因AOF追加磁盘阻塞发生故障转移

复述,错误日志截图


复述,因AOF追加磁盘阻塞发生故障转移

AOF工作流程图

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

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

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

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

原主数据库追加AOF阻塞

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

aof_delayed_fsync: 154


复述,因AOF追加磁盘阻塞发生故障转移

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


复述,因AOF追加磁盘阻塞发生故障转移

1。主线程负责AOF缓冲区

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

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

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

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

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

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

aof_delayed_fsync阻塞次数。

ip1

#持久性

aof_delayed_fsync: 1

ip2

#持久性

aof_delayed_fsync: 18

ip3

#持久性

aof_delayed_fsync: 0

ip4

#持久性

aof_delayed_fsync: 1

解决方案

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

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

3。提升磁盘写入速度。


重启加载流程图


复述,因AOF追加磁盘阻塞发生故障转移

RDB 物化到磁盘频率图


复述,因AOF追加磁盘阻塞发生故障转移

复述,因AOF追加磁盘阻塞发生故障转移