一、企业级的持久化的配置策略


(1)每隔1分钟去检查如果超过10000个可以变更,则生成一个快照。RDB最多丢1分钟的数据。

save 60 10000

(2)AOF一定要打开,fsync,everysec

#就是当前AOF大小膨胀到超过上次100%,上次的两倍
auto-aof-rewrite-percentage 100
#最小触发size
auto-aof-rewrite-min-size 64mb



二、企业级的数据备份方案


RDB非常适合做冷备,每次生成之后,就不会再有修改了

数据备份方案

(1)写一个linux服务器的crontab命令定时调度脚本去做数据备份

(2)每小时都copy一份rdb的备份,到一个目录中去,仅仅保留最近48小时的备份

(3)每天都保留一份当日的rdb的备份,到一个目录中去,仅仅保留最近1个月的备份

(4)每次copy备份的时候,都把太旧的备份给删了

(5)每天晚上将当前服务器上所有的数据备份,发送一份到远程的云服务上去

  • 每小时copy一次备份,删除48小时前的数据
crontab -e

0 * * * * sh /usr/local/redis/copy/redis_rdb_copy_hourly.sh

redis_rdb_copy_hourly.sh

#!/bin/sh

cur_date=`date +%Y%m%d%k`
rm -rf /usr/local/redis/snapshotting/$cur_date
mkdir /usr/local/redis/snapshotting/$cur_date
cp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_date del_date=`date -d -48hour +%Y%m%d%k`
rm -rf /usr/local/redis/snapshotting/$del_date

  • 每天copy一次备份
crontab -e

0 0 * * * sh /usr/local/redis/copy/redis_rdb_copy_daily.sh

redis_rdb_copy_daily.sh

#!/bin/sh

cur_date=`date +%Y%m%d`
rm -rf /usr/local/redis/snapshotting/$cur_date
mkdir /usr/local/redis/snapshotting/$cur_date
cp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_date del_date=`date -d -1month +%Y%m%d`
rm -rf /usr/local/redis/snapshotting/$del_date

  • 每天一次将所有数据上传一次到远程的云服务器上去



三、数据恢复方案


(1)如果是redis进程挂掉,那么重启redis进程即可,直接基于AOF日志文件恢复数据

(2)如果是redis进程所在机器挂掉,那么重启机器后,尝试重启redis进程,尝试直接基于AOF日志文件进行数据恢复

AOF append-only,顺序写入,如果AOF文件破损,那么用redis-check-aof fix

(3)如果redis当前最新的AOF和RDB文件出现了丢失/损坏,那么可以尝试基于该机器上当前的某个最新的RDB数据副本进行数据恢复

(4)如果当前机器上的所有RDB文件全部损坏,那么从远程的云服务上拉取最新的RDB快照回来恢复数据

(5)如果是发现有重大的数据错误,比如某个小时上线的程序一下子将数据全部污染了,数据全错了,那么可以选择某个更早的时间点,对数据进行恢复

举个例子,12点上线了代码,发现代码有bug,导致代码生成的所有的缓存数据,写入redis,全部错了

找到一份11点的rdb的冷备,然后按照上面的步骤,去恢复到11点的数据,不就可以了吗



四、容灾演练


  • 场景

我们希望redis数据恢复到某一个时间点,所以选择那个时间点的RDB文件进行恢复,我们拷贝RDB到服务器中。把原来的aof文件删掉。

注意:我们此时使用的是混合持久化机制。会优先用AOF文件去恢复数据,但是我们发现redis自动生成的appendonly.aof是没有数据的,而我们拷贝的dump.rdb是有数据的。

  • 错误操作

edis启动,会自动生成一个空的AOF文件,并使用这个空的AOF恢复数据,又自动重新基于内存的数据生成了一份最新的空的rdb快照,覆盖掉了我们有数据的拷贝过去的那份dump.rdb

  • 原因分析

虽然你删除了appendonly.aof,但是因为打开了aof持久化,redis启动就一定会优先基于aof去恢复,即使文件不在,那就创建一个新的空的aof文件,导致redis恢复后又是空的,又生成了一个空的RDB文件,结果数据恢复失败了。

  • 调整操作

停止redis,应该先暂时在配置中关闭aof,然后拷贝一份rdb过来,再重启redis,数据就会使用RDB进行数据恢复,可以恢复过来,这一步是对的

如果此时脑子一热,再关掉redis,手动修改配置文件,打开aof,再重启redis,数据又没了,空的aof文件,所有数据又没了。

  • 最终正确操作

在数据安全丢失的情况下,基于rdb冷备如何完美的恢复数据,同时还保持aof和rdb的双开

(1)停止redis,配置关闭aof,拷贝rdb备份,重启redis,确认数据恢复,直接在命令行热修改redis配置,打开aof,这个redis就会将内存中的数据对应的日志,写入aof文件中。此时aof和rdb两份数据文件的数据就同步了

#使用命令打开AOF
redis-cli config set appendonly yes

(2)redis config set热修改配置参数,可是配置文件中的实际的参数没有被持久化的修改,再次停止redis,手动修改配置文件,打开aof的命令,再次重启redis,完美!




hi~我是Mirror,一个为了自由安逸的未来而不断前进的的程序员。

如果你觉得文章对你有一点点帮助,一个小小赞,便是对我的认可,如果有不足之处,也欢迎各位指正。

04.简单了解一下Redis企业级数据备份方案的更多相关文章

  1. 13.在项目中部署redis企业级数据备份方案以及各种踩坑的数据恢复容灾演练

    到这里为止,其实还是停留在简单学习知识的程度,学会了redis的持久化的原理和操作,但是在企业中,持久化到底是怎么去用得呢? 企业级的数据备份和各种灾难下的数据恢复,是怎么做得呢? 1.企业级的持久化 ...

  2. Redis企业级数据备份与恢复方案

    一.持久化配置 RBD和AOF建议同时打开(Redis4.0之后支持) RDB做冷备,AOF做数据恢复(数据更可靠) RDB采取默认配置即可,AOF推荐采取everysec每秒策略 AOF和RDB还不 ...

  3. redis入门(15)redis的数据备份和恢复

    redis入门(15)redis的数据备份和恢复

  4. (转)rsync数据备份方案

    rsync数据备份方案 原文:http://blog.51cto.com/irow10/1826458 最近整理了下公司的数据备份情况.以下是部分操作的过程 1.rsync数据备份,具体备份过程就不详 ...

  5. 混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案

    前言 阿里云对象存储(OSS)用户众多.很多用户因为业务或者合规性需求,需要对OSS内的数据做备份,无论是线上备份,还是线下备份.用户可以选择使用OSS的开放API,按照业务需求,做数据的备份,也可以 ...

  6. MySQL 大数据备份方案之Percona XtraBackup

    Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbacku ...

  7. Oracle DataGuard数据备份方案详解

    Oracle DataGuard是一种数据库级别的HA方案,最主要功能是冗灾.数据保护.故障恢复等. 在生产数据库的"事务一致性"时,使用生产库的物理全备份(或物理COPY)创建备 ...

  8. redis的数据持久化方案

    Redis的持久化方案有两种 1.Rdb方式:快照形式,定期将内存中的数据持久化到硬盘.是Redis默认的数据持久化的形式. Rdb:缺点是:数据还没有更新到磁盘上,突然断电,造成数据的不完整性. 在 ...

  9. Redis数据持久化、数据备份、数据的故障恢复

    1.redis持久化的意义----redis故障恢复 在实际的生产环境中,很可能会遇到redis突然挂掉的情况,比如redis的进程死掉了.电缆被施工队挖了(支付宝例子)等等,总之一定会遇到各种奇葩的 ...

随机推荐

  1. luogu P4590 [TJOI2018]游园会 dp套dp

    LINK:游园会 容易想到 设\(f[i][j][k][l]\)前i个字符 j表示状压的w个字符状态为j 长度<=k 匹配到了NOI的第l个位置的方案数. 不过只能得到30分. 考虑优化 其实优 ...

  2. idea修改module name后重启失效

    技术交流群 : 816227112 idea每次修改module name后重启,module还是会在后面加上原来的name. 这时修改: .idea下的modules.xml 内的module名即可 ...

  3. Elasticsearch入门指南

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 这篇文章主要是记录一下最近在学的 ...

  4. Python网络数据采集PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:jrno 内容提要 本书采用简洁强大的 Python 语言,介绍了网络数据采集,并为采集新式网络中的各种数据类 型提供了全面的指导.第一部分重点介绍网络数据采集的基本原理:如何用 Py ...

  5. WebMvcConfigurerAdapter在2.x向上过时问题

    在spring boot2.x向上,书写配置类时集成的WebMvcConfigurerAdapter会显示此类已经过时. 解决:不继承WebMvcConfigurerAdapter类,该实现WebMv ...

  6. 微信小程序通过二维码获取参数运行

    小程序开发过程中会遇到参数id会通过二维码获取,然后执行接口获取数据,但是难免会遇到带过来的参数出现乱码,这样就需要解码,多个参数时就需要进行处理取我们需要的字段值:小程序开发过程中会遇到参数id会通 ...

  7. wordpress-技术博客主题推荐

    推荐主题 1.WordStar 这个主题是干净的,以博客为中心,设计清晰,简单,直接的排版,可在各种各样的屏幕尺寸可读,适合多种语言. 效果图 还是非常简洁, 基本和CSDN差不多了 除了没有广告以外 ...

  8. 钉钉H5微应用

    公司新项目要用到Vue+钉钉H5,在此记录一下免密登录: 引入插件: import * as dd from 'dingtalk-jsapi' import { login as loginUrl } ...

  9. 神经网络实现fashion数据集

    import tensorflow as tf import numpy as np fashion=tf.keras.datasets.fashion_mnist (x_train,y_train) ...

  10. 浏览器自动化的一些体会9 访问angular页面的一个问题

    发现浏览器自动化有一个重要方面没有提及,即所谓的无页面浏览器,不过最近没有需求,不想尝试,先记上一笔,以后有需求时,可以有个思路. 大约一两个月前(现在比较懒散,时间不知不觉过去,连今天是几号有时候都 ...