Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 在这种紧急情况下我该怎么办?_Mongodb - Fatal编程技术网

Mongodb 在这种紧急情况下我该怎么办?

Mongodb 在这种紧急情况下我该怎么办?,mongodb,Mongodb,假设我有一个p-s-a部署。次要成员是延迟成员(延迟1小时)。现在我犯了一个巨大的错误,我删除了我所有的数据库,辅助数据库将在1小时后执行此删除。停止这场悲剧的正确程序是什么?请给出每一步的更多细节。非常感谢。在MongoDB复制中,主节点向oplog写入事件,这些事件描述写入发生时的情况。辅助节点复制应用这些事件并重播它们,以便辅助节点上的数据在逻辑上与主节点上的数据相同 延迟的次节点将在写入事件后立即从主节点复制事件,并在延迟期间本地缓冲这些事件 延迟的次节点没有资格成为主节点 正如您所描述

假设我有一个p-s-a部署。次要成员是延迟成员(延迟1小时)。现在我犯了一个巨大的错误,我删除了我所有的数据库,辅助数据库将在1小时后执行此删除。停止这场悲剧的正确程序是什么?请给出每一步的更多细节。非常感谢。

在MongoDB复制中,主节点向oplog写入事件,这些事件描述写入发生时的情况。辅助节点复制应用这些事件并重播它们,以便辅助节点上的数据在逻辑上与主节点上的数据相同

延迟的次节点将在写入事件后立即从主节点复制事件,并在延迟期间本地缓冲这些事件

延迟的次节点没有资格成为主节点

正如您所描述的,集群已经很脆弱,并且不是高度可用的。如果现有主节点存在任何问题,则没有其他节点可以接受写入,也没有其他节点有资格成为主节点

该集群还需要至少一个小时来复制任何写入操作,因此来自应用程序的许多写入操作似乎需要整整一个小时才能完成

在问题中的场景中,主节点已删除数据库并将事件写入oplog,而次节点可能已经复制了这些事件。这意味着,如果您只关闭主节点,那么当辅助节点在一小时内应用这些事件时,它仍然会愉快地删除数据库

还请注意,辅助节点未应用上一小时内发生的任何写入操作


如果在意识到删除发生后立即停止辅助节点,则可以阻止其应用这些操作。然后立即对次节点进行新备份以保护数据,将次节点重新配置为独立节点,启动它,提取数据并将其重新插入主节点。

如果我立即将次节点作为独立节点重新启动,是否会阻止执行删除操作?该操作是否在内存中缓冲?该操作在磁盘上的oplog中缓冲,但如果将节点作为独立节点启动(没有副本集配置选项),它将不会查询或应用oplog中的任何事件。我使用“db.oplog.rs.find().sort({ts:-1}).limit(3).pretty()”来显示最新的oplog,它也会有延迟。“缓冲在oplog中”不是指这个集合,对吗?