Redis RDB持久化异常

导致异常情况:

1、三个redis节点数据 无法rdb持久化

2、redis数据 只能读不能写入(有问题1导致),结果直接导致数据无法新增和更新

目前临时处理方式:

1、 config set stop-writes-on-bgsave-error no   先让数据可以写redis,不影响线上数据的读写操作

2、调整  vm.overcommit_memory = 2 ,这个配置目前没有效果,因为redis主进程内存使用量已经较高

0 直接和空闲物理内存对比,足够就放行

1 直接放行

2 物理内存的50%(可以调)加上swap,如果足够就放行,异常了也不会关掉进程

3、进入三个节点,分别删去部分访问量相对小、容量大的数据,控制redis主进程内存量

目前思路,还需要做的事儿,

1、继续研究下 redis持久化,思考有没有更好的替代方案

2、 vm.overcommit_memory 等内核参数的实际原理

时间: 2024-11-06 11:40:00

Redis RDB持久化异常的相关文章

redis配置文件基本解析以及RDB持久化与AOF持久化

redis.conf 我们安装成功之后就会有这个配置文件,但是我们一般都不推荐直接使用出厂的配置文件,而是单独拷贝一份使用,以避免我们因为配置错误而带来不必要的麻烦. 如图我单独拷贝了一份在根目录下面的文件夹: redis单元: Tcp-backlog: 设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列+已经完成三次握手队列. 在这里三次握手队列我参考另一篇博文:https://blog.csdn.net/ityouknow/article

Redis源码剖析和注释(十八)--- Redis AOF持久化机制

Redis AOF持久化机制 1. AOF持久化介绍 Redis中支持RDB和AOF这两种持久化机制,目的都是避免因进程退出,造成的数据丢失问题. RDB持久化:把当前进程数据生成时间点快照(point-in-time snapshot)保存到硬盘的过程,避免数据意外丢失. AOF持久化:以独立日志的方式记录每次写命令,重启时在重新执行AOF文件中的命令达到恢复数据的目的. Redis RDB持久化机制源码剖析和注释 AOF的使用:在redis.conf配置文件中,将appendonly设置为y

redis中的RDB持久化详解

1. 如何在redis中配置RDB持久化文件 在redis持久化中  默认是开启RDB模式的.这里我们只需要对RDB进行配置即可 在上面有三个配置选项 分别是 每隔900秒  有一条key进行变更 每个300秒 有10条key进行变更 没隔60秒  有10000条key进行变更. 以上任意条达成条件后,就会重新生成一个dump.rdb文件.就是当前redis内存中完整的快照,这个操作也被称之为snapshotting,快照也可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成

(05)redis的持久化RDB和AOF的配置及比较

redis操作的数据是在内存中的,它支持两种方案将内存中的数据持久化到硬盘中,下面分别介绍. 1.RDB方式(默认方式) RDB持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘.打开redis.conf,如图: save 900 1:表示15分钟(900秒钟)内至少1个键被更改则进行快照. save 300 10:表示5分钟(300秒)内至少10个键被更改则进行快照. save 60 10000:表示1分钟(60秒)内至少1

redis的持久化 rdb和aof

1.rdb 当满足条件时,redis单独会fork(创建)一个新的线程,会先将内存中的数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次已经持久化好了的文件,整个过程中,主进程是不进行任何IO操作的,确保了极高的性能,此时的主进程还可以进行读写操作.rdb数据持久化的缺点是最后一次持久化的数据可能丢失,当在最后一次持久化的时间截点内还没有持久化,此时机器宕机了或出故障了,那么最后一次的数据就没有持久化到. Fork:fork的作用是复制一个与当前进程一样的进程,新进程的所有

redis 源码学习(RDB 持久化)

redis是个内存数据库,所有的操作都是在内存中进行,但是内存有个特点是,程序出问题或者系统出问题.重启,关机都会造成内存数据丢失. 所以需要把内存中的数据dump到硬盘中备份起来. RDB持久化,是内存数据库dump到硬盘的过程,其中RDB是个文件格式,待会介绍. 本文从两个方向剖析, 1)加载dump.rdb文件到内存中. 2)内存数据库dump到硬盘中dump.rdb文件. 加载dump.rdb文件到内存 main函数入口: int main(int argc, char **argv)

Redis的持久化--RDB

Redis提供了RDB持久化机制,即在指定的时间间隔内将内存中的数据集快照写入到磁盘中. RDB的优点: 1.这种方式,备份Redis数据库只有一个文件,一旦系统出现灾难性故障,可以非常容易进行恢复. 2.可以轻松的将一个压缩的备份文件转移到其他安全的存储介质上. 3.性能最大化,开始持久化时,只需fork出一个子进程,之后由子进程完成这些持久化的工作,可以极大的避免服务进程执行IO操作. 4.数据集很大时,启动效率高. RDB的缺点: 1.可以造成数据的丢失,因为系统一旦在定时持久化之前出现宕

redis之RDB持久化

Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态. 因为Redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见.为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失.

[redis读书笔记] 第二部分 单机数据库 RDB持久化

内存中的rdb是会存为文件以做到RDB持久化的.RDB文件时一个二进制文件. 一 载入与存储 文件的载入是在server启动时进行的(rdbload()),因为AOF的更新频率比RDB高,所以如果AOF持久化功能开启,服务器会优先从AOF还原DB,只有AOF关闭,才从RDB还原数据库. 文件的存储由rdbSave()/rdb.c来实现,SAVE/BGSAVE 命令可以触发,前者直接由Redis server处理,此时不能处理其他命令,后者会启动子进程进行处理,此时server可以处理其他命令,但