Redis主从复制高可用集群(二)

Redis的持久化机制

Redis的存储是放在内存当中,当遇到断电时会将数据写入到磁盘中。

Redis提供了不同范围的持久性选项:
RDB:RDB持久性按指定的时间间隔执行数据集的时间点快照
AOF:AOF持久性记录服务器接收到的每个写操作,这些操作将在服务器启动时重新播放,重建原始数据集。命令的日志格式与Redis协议本身相同,只有附加格式。变得太大时,Redis可以在后台重写它
都不用:如果您愿意,您可以完全扩展持久性,如果您希望您的数据在服务器运行期间一直存在
RDB + AOF:可以在同一实例中将AOF和RDB结合起来。请注意,在这种情况下,当Redis重新启动AOF文件时,将使用它重新构建原始数据集,因为它保证是最完整的
需要理解的最重要的事情是RDB和AOF持久性之间的不同权衡:
RDB的优势
RDB是Redis数据的非常精细的单文件时间点表示形式。RDB文件非常适合用于备份。例如,您可能希望在最近的24小时内每小时对RDB文件进行归档,并在30天内每天保存RDB快照。这使您可以在发生灾难时轻松地恢复不同版本的数据集
RDB对于灾难恢复非常有用,它是一个可以传输到远端数据中心或Amazon S3(可能是加密的)的复杂文件
RDB最大化了Redis的性能,因为Redis父进程为了持久化而需要做的唯一工作就是分派一个子进程来完成其余的所有工作。父实例永远不会执行磁盘i / o或类似的操作
启动。
RDB的缺点
如果您需要在Redis的停止工作(例如停电之后)的情况下最小化数据丢失的机会,那么RDB是不好的。你可以配置不同的节省分数其中生成了RDB(例如,对数据集进行至少5分钟和100次写操作之后,但是您可以有多个保存点)。但是,您通常每五分钟连续重复就会创建一个RDB快照,因此,如果Redis在没有正确关机的情况下下停止工作,您应该准备好丢失最新的数据分钟
RDB经常需要fork(),刹车使用子进程在磁盘上持久化。如果数据集很大,Fork()可能会很耗时,而且如果数据集很大而CPU性能不好,可能会导致Redis在几AOF还需要fork(),但是您可以调优重写日志的频率,而不必在持久性上进行任何权衡
AOF的优势
使用AOF Redis更加持久:您可以有不同的fsync策略:完全没有fsync,每秒fsync,每个查询fsync。使用fsync的默认策略,每秒的写入性能仍然很好(fsync是使用后台线程执行的,并且当没有fsync进行时,主线程将尽力执行写入操作。)但是您只能损失一秒钟的写入时间。
AOF日志是仅追加的日志,因此,如果断电,则不会出现寻道,也不会出现损坏问题。即使由于某种原因(磁盘已满或其他原因)以半写命令结束日志,redis-check-aof工具也可以轻松修复它。
Redis太大时,Redis可以在后台自动重写AOF。重写是完全安全的,因为Redis继续追加到旧文件时,会生成一个全新的文件,其中包含创建当前数据集所需的最少操作集,一旦准备好第二个文件,Redis会切换这两个文件并开始追加到新的那一个。
AOF以易于理解和解析的格式包含所有操作的日志。您甚至可以轻松导出AOF文件。例如,即使您不小心使用FLUSHALL命令刷新了所有内容,只要在此期间未执行日志重写,您仍然可以通过停止服务器,删除最新命令并重新启动Redis来保存数据集再次。
AOF的缺点
对于同一数据集,AOF文件通常大于等效的RDB文件。
根据确切的fsync策略,AOF可能比RDB慢。通常,在将fsync设置为每秒的情况下,性能仍然很高,并且在禁用fsync的情况下,即使在高负载下,它也应与RDB一样快。即使在巨大的写负载的情况下,RDB仍然能够提供有关最大延迟的更多保证。
过去,我们在特定命令中遇到过罕见的错误(例如,其中有一个涉及阻止命令,例如BRPOPLPUSH),导致产生的AOF在重载时无法重现完全相同的数据集。这些错误很少见,我们在测试套件中进行了测试,自动创建了随机的复杂数据集,然后重新加载它们以检查一切是否正常。但是,对于RDB持久性来说,这类错误几乎是不可能的。更明确地说:Redis AOF通过增量更新现有状态来工作,就像MySQL或MongoDB一样,而RDB快照一次又一次地创建所有内容,从概念上讲更健壮。但是-1)应当注意,每次Redis重写AOF时,都会从数据集中包含的实际数据开始从头开始重新创建AOF,与始终附加AOF文件(或重写为读取旧AOF而不是读取内存中的数据)相比,增强了对错误的抵抗力。2)我们从未收到过来自用户的关于真实环境中检测到的AOF损坏的单个报告。
----摘自redis 官网

综上所述:在持久化机制中分为四类RDB的方式,AOF的方式,无任何持久化,及RDB+AOF的方式,以上四种方式,根据不同情况分析,选择最优的使用方式。

RDB的全量备份模式

接下来我们查看之前redis.conf中,持久化的一些配置:

图片

在文件中搜索SNAPSHOTTING ,找到上图中标记的为磁盘持久化的位置及文件名。

图片

上图表示,备份策略

  • key至少发生一次变化,3600秒后进行变更
  • key发生至少100次的更改,五分钟之后更新
  • key发生1000次的更改,60秒后进行更新

图片

图片

AOF追加备份模式:

AOF的备份是依照日志的形式,是追加的形式进行备份,

图片

备份策略:默认按照每秒的方式进行备份

图片

  • 不进行备份
  • 按照每秒的方式进行备份
  • 按照请求方式进行备份

图片

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值