我不断地将数据插入到自动分片的 mongodb 中。(不更新,只插入)
实验设置 2 个分片,每个分片有 2 个节点。
在 shard1 -> node1 (primary), node2 in shard2 -> node3 (primary), node4
在一个分片中,我关闭了辅助节点(node2)-> 仍然正确插入了数据现在我也关闭了主节点(node1)-> 完整的分片现在关闭了
令人惊讶的是,整个 mongo 设置没有进行任何写入。
故事还有另一个转折点。现在我已经启动了 node2,因为这是唯一可用的节点,它成为主节点并开始接受数据。
大约 10 分钟后,我也启动了 node1。
但是当我检查插入到 node1 中的数据时(当 node2 关闭时)丢失了:(。
s1 s2
(n1,n2) (n3,n4)
--------- ---------
1. (up,up) (up, up) -> data was getting inserted
2. (up,down) (up, up) -> data was getting inserted properly (but got lost :( )
3. (down, down) (up, up) -> no data inserts were happening
4. (down, up) (up, up) -> started taking data again
5. (up, up) (up, up) -> n1 picked data from n2, but couldn't give the data to n2
在最后一步中,当我提出 n1 时,它从 n2 中获取了新记录,但 n1 在上面第 2 步中获得的记录完全丢失了:(。
这是 mongo 的预期行为吗?
有人请帮帮我,如果需要,我可以进行更多实验:)。
在此先感谢 Vivekananda Tadala