1、起因,一個flushdb命令
因為誤操作,
輸入了一個flushdb命令,
導到redis里0號庫里的數據全部清空,OMG,這里有不少重要信息,如果被領導知道,必開除
2、appendonly留有生機
仔細想想,當時數據備份是有設置日志備份的,找到Redis的配置文件redis.conf
appendonly yes
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
于是將appendonly.aof文件導出,自己在線下又搭了個redis,開始嘗試將數據恢復出來
3、編輯日志文件
我最開始用的EditPlus,拉開文件,拉到最底下,看到了flushdb的操作記錄,呵呵,心情大好
但是無論你怎么改appendonly.aof,都無法通過redis-check-aof的檢驗,會一直報數據有錯,使用fix方法反而會將所有記錄清空,反正是不能用EditPlus這種普通的文本編輯器了,
要用個十六進制進制編輯器,于是download了一個Hex Editor。
多找幾個aof文件用來進行對比,分析它的數據格式(這個需要點耐心,反正我是用猜的),分析得出其flushdb在其中對應的字符是"*1..$7..flushdb..",刪除這一段后保存。
將保存好的appendonly.aof上傳到Redis的服務器,重啟Redis,順利啟動,
用redis-cli查看數據,輸入
keys *
有數據了,長吁一口氣
這事太丟人了,要引以為戒,想辦法抹掉能抹的痕跡。事了拂衣去,早早洗了睡,不想再摻和運維的事了,太嚇人了。