【发布时间】:2017-08-22 17:37:52
【问题描述】:
我们使用 mongoDB 作为生产数据库的 DBMS。我们为我们的数据库启用了 2 个副本集。
出乎意料的是,我们注意到我们生产中的两个数据库都已被删除。我们绝对确定没有人这样做。当我们查看日志时,我们注意到两个数据库上的 dropDatabase 确实被调用了。但是,我们找不到连接建立的任何日志语句。如果有人使用 mongo shell 或 bash 删除了数据库,那么也应该有新连接的日志。
Primary 的日志语句:
2017-08-17T14:38:47.019+0000 I - [conn527] AssertionException handling request, closing client connection: 17132 SSL handshake received but server is started without SSL support
2017-08-22T00:18:22.694+0000 I COMMAND [conn541] dropDatabase db1 starting
2017-08-22T00:18:22.708+0000 I COMMAND [conn541] dropDatabase db1 finished
2017-08-22T00:18:23.832+0000 I COMMAND [conn542] dropDatabase db2 starting
2017-08-22T00:18:23.843+0000 I COMMAND [conn542] dropDatabase db2 finished
从第一行的时间戳可以看出,最近5天没有与mongo服务器建立新的连接
有人可以帮助我们了解我们的 mongodb 服务器到底发生了什么。此外,任何指针将不胜感激。
【问题讨论】:
-
要找出“谁”是连接 541,通过 mongodb 日志进行搜索(如果您有足够的日志文件)
grep -R "\#541" *.log -
我们有过去 3 个月的日志,找不到任何连接 541 或 542。您能否给我们任何其他指针?
-
这很奇怪,因为所有“从 x.x.x.x 接受的连接”事件都会正常记录。并且您的旧文件不是 'zip'(只是检查)。然后“某人”删除了这些行。
-
确实很奇怪。我在运行 grep 之前解压缩了所有文件。让我感到困惑的是,两个 drop 查询的连接 ID 是不同的。如果有人未经授权访问了实例,他/她很可能删除了日志语句。但是,我不认为有人会为了稍后在数据库上运行 dropDatabase 而保持连接打开一周或更长时间。所以连接日志应该在同一个文件中。
标签: mongodb mongodb-replica-set drop-database