redis

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

2020-01-07  本文已影响0人  百里江山
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
上一篇 下一篇

猜你喜欢

热点阅读