【发布时间】:2017-05-22 01:23:14
【问题描述】:
我在三个 EC2 实例中有一个 MongoDB 客户端,并且我创建了一个副本集。上次我遇到问题,空间 constraint 停止了我的 mongod 进程,从而停止了应用程序,现在在几天前的一个实例中,我的一些表从数据库中消失了,所以我将日志记录和全部设置到我的数据库只是为了赶上类似的事情是否再次发生。在今天早上的一个新事件中,我无法登录到我的系统,那时我发现整个数据库都是空的。我检查了其他 SO 问题,如 this,它建议设置一个 TTL。我根本没有做过。
现在我该如何调试这种情况并进行适当的根本原因分析?我什至在调试日志中也找不到任何东西。桌子就这样消失了。如何设置正确的日志记录机制以及如何确保我的所有表永远不会再次被删除?
【问题讨论】:
-
这很奇怪 - 这里的问题几乎相同 - stackoverflow.com/questions/41519988/…
-
是的...我很快就要投入生产了。不能有这样的事情发生。我读了你的回答。会不会是mongo因为内存不足而删除了你的数据库?
-
不,它不会只是随机删除集合 - 这将是一件非常糟糕的事情(它不会) - 绝对是意外删除
-
如何设置日志以便捕获在副本集上执行的所有命令?因此,如果下次发生这种情况,我会知道是什么命令导致的
-
您运行的是哪个特定版本的 MongoDB?您的副本集是否受到适当保护(请参阅:MongoDB Security Checklist?如果您尚未启用身份验证并锁定对您的副本集的访问,一种可能性是有人正在远程删除数据。如果您确实配置并启用了身份验证,我会查看您的日志以确定数据库何时被删除。首先使用 grepping 查找
dropDatabase(日志行可能因您的版本和配置设置而异)。
标签: mongodb amazon-ec2