执行flushall删库跑路,如何应对!

image.png

直接告诉你答案: 使用aof日志恢复, 如何恢复,听我慢慢道来.

一. 场景

某次你连接公司的redis服务器, 玩得太HI,一不小心尝试了一下flushall命令. 再使用keys *命令, 返回为空.此时你是不是背后发冷汗, 身体不听使唤的在抖动.跟网络抖动一样,哈哈

或者是这样的场景, 遇到了传说中的删库跑路者, 做为高级程序员, 你该如何应对?

image.png

莫慌, 你的救世主来了!!!

二.操作步骤

1. 开启aof日志功能

  1. 首先你的redis必须是开启aof日志的.
    大约在redis.conf 699行 将appendonly no 改为 appendonly yes
  2. 查看是否已经开启AOF日志功能


    image.png

2. 修改appendonly.aof文件

  1. 查看appendonly.aof文件在哪儿?


    image.png
  2. 查看我们有多少个KEY
    > dbsize O(1)操作, 查看有多少个key
    > keys * O(n)操作, 查看所有key
  3. 打开appendonly.aof文件,找到flushall或flushdb命令进行删除.(不仅仅只是删除flushall或flushdb字样,必须要删除上面二行的编码格式行.)
*3
$3
set
$5
fsadf
$4
1243
*1
$8
flushall
  1. 删除flushall字样和前面二行(*1 $8),如果只删除flushall,redis无法解析aof文件,导致无法启动redis服务.

3. 正常关闭redis.

127.0.0.1:6379>shutdown nosave

4. 重启redis

redis-server redis.conf

三. 验证以上步骤

光说不练假把式, 咱们真刀真枪干一下就知道这玩意好使不.

  1. 添加测试数据


    添加测试数据
  2. 查看appendonly.aof文件变化与大小变化


    查看appendonly.aof
  3. 使用flushall删除所有数据,查看dbsize为0, 再关闭shutdown nosave准备重启前需要编辑appendonly.aof
    flushall删除
  4. 注意shutdown 后有两个参数, save是表示进行RDB保存数据,nosave是不进行保护数据.在这里无论是使用哪种都不影响AOF方式恢复数据的.redis重启恢复步骤: 先全量加载rdb文件,然后再加载appendonly.aof文件
  5. 删除appendonly.aof里的flushall和flushdb关键字. 以便恢复数据.


    image.png
  6. 重启恢复数据(终于恢复啦, 可以松一口气啦, 出去吃一顿.补补身子)
    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 9,490评论 2 27
  • 转载 Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件. ...
    大先生居然都有人用了阅读 5,071评论 0 0
  • 企业级redis集群架构的特点 海量数据 高并发 高可用 要达到高可用,持久化是不可减少的,持久化主要是做灾难恢复...
    lucode阅读 6,551评论 0 7
  • 一、Redis持久化概述 持久化的功能:Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永...
    心似南风阅读 4,459评论 0 1
  • 我家这俩宝儿相差不到六岁,现在的弟弟比姐姐还要高半头。 老大是千金,在整个大家庭里是下辈人中第一个孩子,也是得到全...
    诺墨的妈咪阅读 3,704评论 9 2