首页 > 数据库 >Redis宕机恢复

Redis宕机恢复

时间:2023-11-03 16:35:00浏览次数:37  
标签:AOF 宕机 恢复 Redis bgsave 内存 RDB 进程

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日志进行恢复。

标签:AOF,宕机,恢复,Redis,bgsave,内存,RDB,进程
From: https://www.cnblogs.com/kiper/p/17807190.html

相关文章

  • 电脑数据恢复技巧之:如何恢复意外删除的文件?
    平时的工作和生活中,我们常常会将照片、视频、文档等数据保存在电脑硬盘上,并且在处理数据的时候,有时候会遇到误删除文件的情况。误删除重要文件会带来不必要的麻烦和损失,但是文件丢失不太容易避免,因此,懂得如何找回删除的文件这项电脑技巧还是非常有必要的。本文将和大家一起学习一下......
  • 电脑数据恢复技巧之:如何恢复意外删除的文件?
    平时的工作和生活中,我们常常会将照片、视频、文档等数据保存在电脑硬盘上,并且在处理数据的时候,有时候会遇到误删除文件的情况。误删除重要文件会带来不必要的麻烦和损失,但是文件丢失不太容易避免,因此,懂得如何找回删除的文件这项电脑技巧还是非常有必要的。本文将和大家一起学习一下......
  • Redis 哨兵模式(Sentinel)配置
    哨兵是Redis的一种运行模式,它专注于对Redis实例(主节点、从节点)运行状态的监控,并能够在主节点发生故障时通过一系列的机制实现选主及主从切换,实现故障转移,确保整个Redis系统的可用性。集群演示本次测试为“1主2从”的模式,即一个master两个从节点slave。如下图条件限制,......
  • 服务器数据恢复—Zfs文件系统下文件被误删除的服务器数据恢复案例
    服务器故障:一台zfs文件系统服务器,管理员误操作删除服务器上的数据。服务器数据恢复过程:1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做扇区级别的镜像备份,备份完成后按照编号将磁盘还原到原服务器中,后续的数据......
  • GO语言使用redis stream队列demo
    GO语言使用redisstream队列demopackagemainimport( "context" "fmt" "github.com/go-redis/redis/v8" "time")varclient*redis.Clientvarctxcontext.Contextvarkey="my_streamKey"//keyvarmyCons......
  • redis单线程
    一,redis单线程是什么意思 Redis的单线程指的是Redis的网络IO和键值对读写是由一个线程来完成的,这是Redis对外提供键值存储服务的主要流程。然而,请注意,Redis的其他功能,如持久化、异步删除、集群数据同步等,实际上是由额外的线程执行的。Redis的单线程模型主要是为了避免资源共享......
  • 分布式锁【Redission】
    一、简介    Redission,一个基于Redis实现的分布式工具,为Redis官网分布式解决方案。    Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(SeparationofConcern),从而让使用者能够将精力更集中地放在处理业务逻辑......
  • 记一次GFS集群节点系统重做数据恢复
    背景:比较倒霉,周日晚上服务器硬盘损坏更换后发现数据块损坏,系统无法正常使用只能重做系统,恢复了好多虚拟机,过程无比痛苦,目前只说一说恢复gfs。思路:登录gfs master节点查看peer状态,glusterpeerstatus  发现另一个节点处于State:PeerRejected(Disconnected)先把peer点......
  • 62.redis5安装
    1.依赖包安装yum-yinstallcppbinutilsglibcglibc-kernheadersglibc-commonglibc-develgccmakegcc-c++libstdc++-develtcl2.安装包准备官网https://redis.io下载最新版rediswgethttp://download.redis.io/releases/redis-4.0.14.tar.gztar-zxvfredis-5.0.14.......
  • mysql误删数据恢复
    1,是否有备份,可以从备份里边恢复,2、通过工具从数据库binlog日志恢复(前提开始binlog日志功能)。使用my2sql工具进行恢复官网地址:https://github.com/liuhr/my2sql按照官网操作编译,或者直接下载编译好的工具如图所示 将下载好的my2sql的工具 上传到/usr/local/bin目录下 赋......