gpt4 book ai didi

MongoDB - 防范 .remove() 整个数据库?

转载 作者:可可西里 更新时间:2023-11-01 10:01:12 30 4
gpt4 key购买 nike

我正在使用 MongoDB作为我的数据库,并且作为新手后端开发人员,删除整个数据库/集合的轻松程度确实困扰着我。

只需输入 db.collection.remove()从该集合中删除所有记录!

我知道一个有效的备份策略应该使这不是问题,但我偶尔确实运行.remove()在某些集合上,我不想不小心输入错误的集合名称并且 (a) 必须进行备份恢复,并且 (b) 丢失我在备份和恢复之间收集的任何数据,尤其是作为我的应用程序收集了大量用户数据。

是否有任何我可以设置我的数据库使用的“保护措施”,即使它只是一个警告/确认说

"Yo, are you sure you want to remove everything from <collectionname>?选择:Yes/No"

最佳答案

用户角色不会解决您的问题。如果您的帐户有权删除一个用户,您可能会不小心将他们全部删除。如果您的帐户有权为一个用户更新属性,您可能会不小心更新所有用户。

不过,有一个简单的修复方法。

第 0 步:备份您的数据库。并定期测试您的备份。并确保在备份未运行或出错时收到警报。副本集不是备份。我知道这很明显,但是 evidentally it's not obvious to everybody.

第 1 步:写一个 web admin数据库的 GUI 界面。这只需要一两天时间——而且它应该足够简单,秘书或实习生可以使用它而不必担心您的数据。 (如果您认为这需要很长时间,请找到一个具有更多功能的框架。您的管理控制台甚至不需要使用与您的应用程序相同的语言编写。)

第 2 步:数据迁移(数据库的维护转换)应始终从已 checkin 源代码控制的脚本运行,并事先在非生产环境中进行测试。该脚本可以像 mongo -e "foo.update(blah)" 一样简单,但您应该将其作为脚本运行以避免剪切粘贴错误。理想情况下,您甚至会有一个所有迁移的 list 。 (检查您是否有最近的备份。事先检查数据库日志和系统负载。写一个前后查询,告诉您迁移是否成功...)

第 3 步:您现在不再需要使用生产 Mongo 控制台。所以不要。它是一个有用的开发工具,但只有本地开发数据库才需要。

上述角色可能对只读查询有用。但是您已经可以针对非主副本集成员执行此操作。

tl;dr:您可以使用 cowboy admin techniques 走得很远,但最终您会发现将所有事情自动化会更好(而且不需要更多工作)。

关于MongoDB - 防范 .remove() 整个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893525/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com