AOF(Append Only File)

Redis持久化:AOF日志

用 AOF 方法进行故障恢复的时候,需要逐一把操作日志都执行一遍。如果操作日志非常多,Redis 就会恢复得很缓慢,影响到正常使用。

RDB(Redis DataBase)

内存数据的全量快照,即把内存数据都保存到磁盘。

save:主进程执行,会导致redis阻塞
bgsave:创建子进程进行RDB文件写入。

bgsave

同AOF的bgrewriteaof 一样: fork子进程需要拷贝进程必要的数据结构,其中有一项就是拷贝内存页表(虚拟内存和物理内存的映射索引表),这个拷贝过程会消耗大量CPU资源,拷贝完成之前整个进程是会阻塞的.

如果主进程仅做read操作,那么父子进程互不影响。若主进程做write操作,那么这块数据会复制一份生成数据副本,主进程修改此副本数据。bgsave子进程则继续将原有数据写入RDB文件

执行快照的频率

bgsave不会重复执行

当一个bgsave操作正在运行时,不会启动第二个bgsave子进程。这是因为Redis在执行bgsave操作时,会创建一个子进程来执行备份任务。如果一个bgsave操作已经开始,那么Redis不会再启动另一个bgsave操作,直到当前的bgsave操作完成或被取消。

频率不好控制

要想尽可能恢复数据,快照间隔就必须得短,但是频繁执行RDB备份,会有:

  1. 磁盘压力
  2. 进程拷贝频繁阻塞主进程

save选项可以设置多个保存条件,只要其中任意一个条件被满足,服务器就会执行bgsave命令。例如,可以设置服务器在900秒之内对数据库进行了至少1次修改,或者在300秒之内对数据库进行了至少30次修改,或者在60秒之内对数据库进行了至少10000次修改等。

混合持久化

Redis 6.0和5.0默认开启了aof-use-rdb-preamble。

当开启混合持久化时,Redis会先使用RDB方式将现有内存中的数据写入RDB文件,然后再将缓冲区中的增量命令以AOF方式写入AOF文件。在完成写入后,主进程会接收到通知,并将新的含有RDB和AOF两种格式的文件替换旧的AOF文件。

这样做的目的是同时利用RDB和AOF两种持久化方式的优点,即快速恢复数据和保证数据的完整性。

恢复时,Redis会优先使用AOF日志进行恢复。

Redis宕机恢复的更多相关文章

  1. [转帖]Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案

    Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案 https://www.cnblogs.com/xlecho/p/11834011.html echo编辑整理,欢迎转载,转 ...

  2. Vertica集群单节点宕机恢复方法

    Vertica集群单节点宕机恢复方法 第一种方法: 直接通过admintools -> 5 Restart Vertica on Host 第二种方法: 若第一种方法无法恢复,则清空宕机节点的c ...

  3. Redis宕机的问题

    在主从模式下宕机要分为区分来看: slave从redis宕机 ​ 在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据: ​ 如果从数据库实现了持久化,只要重新假如到主从架构中会实现增 ...

  4. mysql group replication 主节点宕机恢复

    一.mysql group replication 生来就要面对两个问题: 一.主节点宕机如何恢复. 二.多数节点离线的情况下.余下节点如何继续承载业务. 在这里我们只讨论第一个问题.也就是说当主结点 ...

  5. redis宕机如何解决?如果是项目上线的宕机呢?

    我们先来了解一下  bridge网络模式 他会创建一个docker0桥,看完这个我们就会知道redis哨兵机制的端口了. 之后继续研究redis宕机的解决办法! 宕机: 服务器停止服务 如果只有一台r ...

  6. go 语言的宕机恢复(recover)

    go 语言中的三种报错机制 第一种,也就是常说的 error 类型错误,不需要 recover 拯救,处理方式自己决定 第二种,panic 和 recover 是紧密集合的,有点类似 try catc ...

  7. 存在单点故障的namenode宕机恢复测试

    前提:如果namenode没有做HA,那么至少应该启用secondarynamenode,以便namenode宕机之后手动恢复数据 实验环境:3个节点(cenos 6.10) 测试前数据: 1.为了确 ...

  8. HBase–RegionServer宕机恢复原理

    Region Server宕机总述 HBase一个很大的特色是扩展性极其友好,可以通过简单地加机器实现集群规模的线性扩展,而且机器的配置并不需要太好,通过大量廉价机器代替价格昂贵的高性能机器.但也正因 ...

  9. drbd虚拟机宕机恢复方法

    问题现象 云南计算节点YN-ec-compute-19因系统盘损坏宕机且操作系统无法恢复,其上本地虚拟机无法疏散且无法迁移 拟采用drbd备份的数据对compute19上的虚拟机进行恢复 恢复方法 1 ...

  10. Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Red ...

随机推荐

  1. redis 使用 nologin 用户启动

    添加不可登录的redis用户 sudo useradd -M -s /sbin/nologin redis 为redis新建目录,并设置属性 mkdir -p /data/redis &&am ...

  2. redis 中的 set

    set是String中的无序集合  底层是 是 value为null 的hash表  时间复杂化是o(1): sadd  k1 v1 v2 v3  set中添加数据 smembers k1 取出set ...

  3. pthon之字典的遍历

    对字典的操作稍有些陌生,在此记录一下. 字典的使用已{key:value}的形式存在,多个值以逗号分开. 字典的遍历共有三种方法,他们将返回类似列表的值,分别对应字典的键.值.键-值对.即keys() ...

  4. openlayers动态添加自定义div图层 具有筛选功能 和浮窗

    https://blog.csdn.net/weixin_43863505/article/details/119493664

  5. Promise的理解与使用(一)

    一.Promise是什么?Promise是JS中进行异步操作的新的解决方案(旧的方案是回调函数的形式,回调函数里嵌套函数)从语法上来说,Promise是一个构造函数.从功能上来说,用Promise的实 ...

  6. Sourcetrail 代码分析工具的使用

    Sourcetrail 概述 Sourcetrail 是一个代码分析工具,它旨在帮助开发人员理解和导航复杂的代码库.它可以创建代码库的可视化图形,显示代码中的类.函数.变量.依赖关系等信息,从而帮助开 ...

  7. 在.NET Framework中使用RocketMQ(阿里云版)实战【第一章】

    章节 第一章:https://www.cnblogs.com/kimiliucn/p/17662052.html 第二章: 作者:西瓜程序猿 主页传送门:https://www.cnblogs.com ...

  8. WLAN-AC+AP,动态负载均衡用户量,避免某一个AP负载过重

    组网图形 动态负载均衡简介 负载均衡功能主要功能就是平衡WLAN网络中AP的负载,充分地保证每个STA的带宽.当有一个新的STA加入网络时,动态负载均衡动态将AC将所有上报该STA的AP动态组成一个组 ...

  9. 《Python魔法大冒险》008 石像怪的挑战:运算符之旅

    小鱼和魔法师继续深入魔法森林.不久,他们来到了一个巨大的魔法石圈旁边.石圈中心有一个闪闪发光的魔法水晶,周围则是一些神秘的符号.但令人意外的是,水晶的旁边还有一个巨大的石像怪,它的眼睛散发着红色的光芒 ...

  10. jenkin部署(docker+gitlab)

    第一部分 安装部署 1.1 gitlab安装部署 最小配置 内存至少4g,系统内核至少在3.10以上 uname -r 可查看系统内核版本 默认docker已经安装 1.安装gitlab 127机器 ...