自動シャーディングされたmongodbにデータを継続的に挿入していました。(更新せず、挿入のみ)
実験的なセットアップ2つのシャード、各シャードには2つのノードがあります。
shard1-> node1(primary)、node2-shard2-> node3(primary)、node4
1つのシャードでセカンダリノード(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から新しいレコードが取得されましたが、上記のステップ2で取得したn1は完全に失われました:(。
これはmongoの予想される動作ですか?
誰かが私を助けてください、私は必要に応じてより多くの実験を実行することができます:)。
よろしくお願いします、Vivekananda Tadala