美文网首页redis
执行flushall删库跑路,如何应对!

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

作者: 百里江山 | 来源:发表于2020-01-07 18:15 被阅读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

    相关文章

      网友评论

        本文标题:执行flushall删库跑路,如何应对!

        本文链接:https://www.haomeiwen.com/subject/dtoractx.html