欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-01 20:23:27
...

一次误删数据的经历(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文件发给了运维大哥,运维直接在服务器上边进行了数据恢复,这才解决了自己闯下的祸。

反思

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