一次误删数据的经历(Mongodb)

一次误删数据的经历(Mongodb)

操作背景

之前mongodb数据的id都是通过md5码生成,但有一次代码中漏了一点逻辑,导致按照默认方式生成了id,ObjectId("···")格式的,基于id统一原则,需要将这部分默认生成的id全部删除掉,然后我按照id逆序的方式进行查询

db.weilong.find({}).sort({"_id":-1})

然后这部分默认生成的id就会排到最前面,由于总数有点多,大概有两千多条,于是我采用了limit限制个数的方式,我先查询试了一下limit查出的内容,然后将find修改为remove,此时悲剧就发生了,数据表中全部数据都被删掉了。

处理方法

索性之前进行了数据备份

mongodump -h xx.xx.xx.xx:27017 -u weilong -p 123456 -d weilong -o ./mongodump

但无奈恢复需要root权限,任凭我在本地怎么mongorestore

mongorestore -h xx.xx.xx.xx:27017 -d weilong --dir .\mongodump\weilong

error reading database: not authorized on weilong to execute command { listCollections: 1, cursor: { batchSize: 0 } }

心态崩了,还好不是线上问题,测试服数据,最后将备份好的bson文件发给了运维大哥,运维直接在服务器上边进行了数据恢复,这才解决了自己闯下的祸。

反思

吃一堑、长一智,有些问题你不亲身感受过是不会有很深的感受,就像人生一样,从小到大听过的很多大道理都慢慢灵验了,但有多少人听过,只有亲自经历过才知道这个东西到底是什么样子的,所以成长的路还很长,要想茁壮,必先成长。

你可能感兴趣的:(mongodb,mongodb,误删数据库)