Redis持久化(RDB+AOF)与容灾备份

Redis持久化配置分为3种:

第一种:不做持久化,做为纯内存数据库来使用,Redis关闭重启后恢复白板一张,数据全部丢失。

第二种:RDB,将Reids在内存中数据快照定时dump到磁盘上,在 Redis 重启动时,RDB程序可以通过载入 RDB文件来还原数据库的状态。

配置如下:save 300 10 #300(5分钟)之后,如果至少有10key发生变化,则dump内存快照。

第三种:AOFappend only file),将Reids的写入命令以协议文本的方式追加到磁盘文件。

Redis目前支持三种 AOF保存模式,它们分别是:

1. AOF_FSYNC_NO:不保存。

2. AOF_FSYNC_EVERYSEC:每一秒钟保存一次。

3. AOF_FSYNC_ALWAYS:每执行一个命令保存一次

AOF对数据的恢复是需要执行协议里的命令的,并不像RDB那样直接可用。

AOF会通过rewrite来合并命令处理结果,压缩存储资源。

 

 

RDB的优缺点:

优点:1Redis备份只包括一个文件,一旦出现故障很容易恢复。

      2,备份操作是fork出来的子进程在处理的,不会影响到服务进程,性能最大化。

      3,相对于AOF相同数据集启动效率更高。

缺点:1,备份非及时性,出现灾难必定会引起较长时间段数据的丢失。

      2,备份文件是人工不可读的二进制格式。

 

AOF的优缺点:

优点:1,更高的数据安全,保证数据灾难时丢失的数据最少。

      2,备份文件是人工可读的。

缺点:1,相同数据的数据集,AOF的文件要大于RDB的文件,恢复速率也低于RDB

      2,备份时运行效率也低于RDB(没办法,可靠性与效率本来就是一个平衡)

 

RDBAOF的策略选择:

主要根据自己的应用场景来分析,在效率和可用性之间做选择,愿意牺牲一些性能换取数据的高可用,还是愿意丢失一些数据换取性能的提高。

 

Redis持久化的配置在./redis-server XXX.conf这个XXX文件中设置,Redis自带的redis.conf中里有配置的详细说明。

 

在架构良好的环境中,master通常使用AOF,slave使用snapshot,主要原因是master需要首先确保数据完整性,它作为数据备份的第一选择;slave提供只读服务(目前slave只能提供读取服务),它的主要目的就是快速响应客户端read请求;但是如果你的redis运行在网络稳定性差/物理环境糟糕情况下,建议你master和slave均采取AOF,这个在master和slave角色切换时,可以减少“人工数据备份”/“人工引导数据恢复”的时间成本;如果你的环境一切非常良好,且服务需要接收密集性的write操作,那么建议master采取snapshot,而slave采用AOF。

2018-10-08补充:

如果应用场景中redis只做纯缓存作用,换句话说可以接受灾难时redis丢弃所有数据变成一张白纸,那么可以选择不使用RDB也不使用AOF。

以ubuntu自带的redis-server为例,redis默认配置路径在/etc/redis/redis.conf中,默认启用RDB容灾,配置如下:

save 900 1

save 300 10

save 60 10000

关闭RDB流程如下:

1 $ redis-cli
127.0.0.1:6379> CONFIG SET save ""
OK
127.0.0.1:6379> exit

2 修改/etc/redis/redis.conf
save 900 1
save 300 10
save 60 10000
设置为
save “”
stop-writes-on-bgsave-error yes
设置为no
3 重启redis

AOF默认是关闭的,不需要关心,不放心可以检查下,关键字是appendonly

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值