当前位置:首页 > 生活百科

redis备份和恢复原理(redis数据恢复原理讲解)

栏目:生活百科日期:2025-05-08浏览:0

Redis所有数据都是保存在内存中,Redis数据备份可以定期的通过异步方式保存到磁盘上,该方式称为半持久化模式,如果每一次数据变化都写入aof文件里面,则称为全持久化模式。同时还可以基于Redis主从复制实现Redis备份与恢复。

1. 半持久化RDB模式

半持久化RDB模式也是Redis备份默认方式,是通过快照(snapshotting)完成的,当符合在Redis.conf配置文件中设置的条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上,完成数据备份。

Redis进行RDB快照的条件由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。在配置文件中已经预置了3个条件:

save       900    1       #900秒内有至少1个键被更改则进行快照;save       300    10      #300秒内有至少10个键被更改则进行快照;save       60     10000        #60秒内有至少10000个键被更改则进行快照。

默认可以存在多个条件,条件之间是“或”的关系,只要满足其中一个条件,就会进行快照。 如果想要禁用自动快照,只需要将所有的save参数删除即可。Redis默认会将快照文件存储在Redis数据目录,默认文件名为:dump.rdb文件,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。也可以在Redis命令行执行config get dir获取Redis数据保存路径,如图12-15(a)、12-15(b)所示:

图12-15(a) 获取Redis数据目录

图12-15(b) Redis数据目录及dump.rdb文件

Redis实现快照的过程,Redis使用fork函数复制一份当前进程(父进程)的副本(子进程),父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件,当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此一次快照操作完成。

执行fork的时操作系统会使用写时复制(copy-on-write)策略,即fork函数发生的一刻父子进程共享同一内存数据,当父进程要更改其中某片数据时,操作系统会将该片数据复制一份以保证子进程的数据不受影响,所以新的RDB文件存储的是执行fork一刻的内存数据。

Redis在进行快照的过程中不会修改RDB文件,只有快照结束后才会将旧的文件替换成新的,也就是说任何时候RDB文件都是完整的。这使得我们可以通过定时备份RDB文件来实 现Redis数据库备份。

RDB文件是经过压缩(可以配置rdbcompression参数以禁用压缩节省CPU占用)的二进制格式,所以占用的空间会小于内存中的数据大小,更加利于传输。除了自动快照,还可以手动发送SAVE和BGSAVE命令让Redis执行快照,两个命令的区别在于,前者是由主进程进行快照操作,会阻塞住其他请求,后者会通过fork子进程进行快照操作。

Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存,根据数据量大小与结构和服务器性能不同,通常将一个记录一千万个字符串类型键、大小为1GB的快照文件载入到内存中需花费20~30秒钟。

通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。此时需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。

2 .全持久化AOF模式

如果数据很重要无法承受任何损失,可以考虑使用AOF方式进行持久化,默认Redis没有开启AOF(append only file)方式的全持久化模式。

在启动时Redis会逐个执行AOF文件中的命令来将硬盘中的数据载入到内存中,载入的速度相较RDB会慢一些,开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof,可以通过appendfilename参数修改该名称。

Redis允许同时开启AOF和RDB,既保证了数据安全又使得进行备份等操作十分容易。此时重新启动Redis后Redis会使用AOF文件来恢复数据,因为AOF方式的持久化可能丢失的数据更少,可以在redis.conf中通过appendonly参数开启Redis AOF全持久化模式:

appendonly  yesappendfilename appendonly.aofauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbappendfsync always  #appendfsync everysec#appendfsync no

Redis AOF持久化参数配置详解:

appendonly  yes                    #开启AOF持久化功能;appendfilename appendonly.aof          #AOF持久化保存文件名;appendfsync always                     #每次执行写入都会执行同步,最安全也最慢;#appendfsync everysec                  #每秒执行一次同步操作;#appendfsync no                    #不主动进行同步操作,而是完全交由操作系统来做,每30秒一次,最快也最不安全;auto-aof-rewrite-percentage  100      #当AOF文件大小超过上一次重写时的AOF文件大小的百分之多少时会再次进行重写,如果之前没有重写过,则以启动时的AOF文件大小为依据;auto-aof-rewrite-min-size    64mb      #允许重写的最小AOF文件大小配置写入AOF文件后,要求系统刷新硬盘缓存的机制。

3 . Redis主从复制备份

通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,如果这台服务器的硬盘出现故障,也会导致数据丢失。

为了避免单点故障,我们希望将数据库复制多个副本以部署在不同的服务器上,即使只有一台服务器出现故障其他服务器依然可以继续提供服务,这就要求当一台服务器上的数据库更新后,可以自动将更新的数据同步到其他服务器上,Redis提供了复制(replication)功能可以自动实现同步的过程。通过配置文件在Redis从数据库中配置文件中加入slaveof master-ip master-port即可,主数据库无需配置。

Redis主从复制优点及应用场景, WEB应用程序可以基于主从同步实现读写分离以提高服务器的负载能力。在常见的场景中,读的频率一般比较大,当单机Redis无法应付大量的读请求时,可以通过复制功能建立多个从数据库,主数据库只进行写操作,而从数据库负责读操作,还可以基于LVS+keepalived+Redis对Redis实现均和高可用。

从数据库持久化持久化通常相对比较耗时,为了提高性能,可以通过复制功能建立一个(或若干个)从数据库,并在从数据库中启用持久化,同时在主数据库禁用持久化。

当从数据库崩溃时重启后主数据库会自动将数据同步过来,所以无需担心数据丢失。而当主数据库崩溃时,需要在从数据库中使用SLAVEOF NO ONE命令将从数据库提升成主数据库继续服务,并在原来的主数据库启动后使用SLAVE OF命令将其设置成新的主数据库的从数据库,即可将数据同步回来。

“redis备份和恢复原理(redis数据恢复原理讲解)” 的相关文章

动态无人值守称重系统价格(地磅无人值守系统流程)

今迈无人值守智能称重管理系统采用智能电子衡防盗报警仪可以记录遥控器告警信息。可以通过窗口与电脑连接,用软件对干扰信号进行过滤。配合防遥控器软件,断电时或非法关机...

产品推广策划案模板,产品市场推广方案范文

当我们在做竞品分析时,是以一个局外人的目光去看待竞品的打法策略,根据网上可以查询到的公开信息,揣摩竞品的玩法套路,然后借鉴(抄袭)到自己的产品中去,很多次看到别...

jquery案例权限选择(详解jquery实战小型项目)

随着前端新技术的不断更新。很多用户体验效果也要不断的增强,今天主要讲解的实例是jquery实现动画加载条跟滚动轮播图效果,这2种效果相信大家并不陌生。实现的做法...

国内最耐用的皮卡车越野车(最值推荐的3款越野皮卡车)

当一些合资品牌或者是进口品牌的全领域硬派越野车售价去到了令人“高山仰止”地步,成为了一种身份象征和高贵的社会象征,越野成为了一种攀比的存在(比谁的越野车更贵,功...

steam找回密码多久(steam修改密码时申请发生错误)

今日(1月11日),《绝地求生》官网正式公布了国服内测预约正式开启的消息。预约将会获得相应的国服绝版T恤的奖励,同时《绝地求生》国服也正式公开了与Steam账号...

2020笔记本一线品牌有哪些(2020笔记本一线品牌前十名)

随着上半年的结束,笔记本电脑市场的纷争也进入了新的阶段。而慢慢君也从近一个月的数据中,分析了解了目前笔记本电脑的几个最热门的品牌。也来给大家分析一下不同品牌目前...

pwm整流器及其控制(三相pwm整流电路工作原理)

北京交通大学电气工程学院、中车工业研究院有限公司技术研究部的研究人员刘建强、刘传铎、王轶欧、刘小虎、齐洪峰,在2019年《电工技术学报》增刊1上撰文指出,单相P...

h5表格模板代码(免费h5模板素材)

智能手机盛行,人手一部,不夸张,而且很多老人们也都在学着使用微信,不得不佩服微信覆盖的流量,于是微信H5页面(微场景、微传单)在这个年代流行起来,也是很自然的事...

ps文字怎么放大缩小(ps软件编辑文字的方法)

为了表达更加清晰直观,特意录制生成GIF图,以供直观了解。版本提示:我使用的Photoshop版本为2017CC(其他版本基本一样)适用对象:童叟无欺、老少皆宜...

启动盘怎么恢复成u盘(系统u盘恢复成普通u盘)

怎么把u盘做成启动盘?启动盘是在操作系统制作的,它只起到&”引导&”启动&”的作用。如进入BIOS、DOS界面和进入到操作系...