Redis持久化之AOF

本文详细介绍了Redis的AOF持久化过程,包括AOF的开启、重写策略、启动修复等。此外,还阐述了Redis的主从复制机制,包括配置从节点、哨兵系统的设置,以及在主节点故障时如何实现数据的连续性和一致性。
摘要由CSDN通过智能技术生成

AOF持久化流程

(1)客户端的请求写命令会被append追加到AOF缓冲区内;

(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的AOF文件中;

(3)AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;

(4)Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的;

开启AOF

699行,appendonly 默认为no 改为yes

策略:731行,根据电脑性能选择 (不能选no)

AOF和RDB同时开启,系统默认取AOF的数据(数据不会存在丢失)

AOF启动/修复

/usr/redis/bin/redis-check-aof --fix 文件的位置/appendonly.aof进行恢复

重写文件的大小

第一次:64m  rewrite ->50m   50+50*100%=100

第二次: 100m

第三次: 200m

重写流程

(1)bgrewriteaof触发重写,判断是否当前有bgsave或bgrewriteaof在运行,如果有,则等待该命令结束后再继续执行。

(2)主进程fork出子进程执行重写操作,保证主进程不会阻塞。

(3)子进程遍历redis内存中数据到临时文件,客户端的写请求同时写入aof_buf缓冲区和aof_rewrite_buf重写缓冲区保证原AOF文件完整以及新AOF文件生成期间的新的数据修改动作不会丢失。

(4)子进程写完新的AOF文件后,向主进程发信号,父进程更新统计信息。2).主进程把aof_rewrite_buf中的数据写入到新的AOF文件。

(5)使用新的AOF文件覆盖旧的AOF文件,完成AOF重写。

主从复制

一主二从

主:6380

从:6381,6382

主机配置文件

6381 和6382 只需要将上面文件中的6380 替换成对用的端口号即可

查看状态

配从

slaveof <ip><port>

在6381和6382上执行: slaveof 127.0.0.1 6380

就相当于认6380为主  6381,6382都为从

6382从机

6381从机

主机6380

2.在主机上写,在从机上可以读取数据

3.主机挂掉,重启就行,一切如初

4.从机重启需重设:slaveof 127.0.0.1 6380

薪火相传

当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。

用 slaveof no one 将从机变为主机。

配置哨兵

在/usr/redis/bin/sentinel.conf路径下

加入sentinel monitor mymaster 127.0.0.1 6380 1

启动文件 ./redis-sentinel sentinel.conf 

主是 6380

当主机挂掉,从机选举中产生新的主机

(大概10秒左右可以看到哨兵窗口日志,切换了新的主机 6382 )

哪个从机会被选举为主机呢?根据优先级别:replica-priority

原主机重启后会变为从机。

原主机再次启动后就变成了从机

优先级在redis.conf中默认:replica-priority 100,值越小优先级越高

偏移量是指获得原主机数据最全的

每个redis实例启动后都会随机生成一个40位的runid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值