私のテスト環境では: node1:shard1 primary,shard2 primary node2:shard1 secondary,shard2 secondary node3:shard1 arbiter,shard2 artbiter ) セカンダリ ステータスが :recovering であることがわかりました セカンダリ ログを確認しました、言った:プライマリ oplog からの古いデータだから、理由は私の書き込み要求が非常に頻繁だったのですか?次に、セカンダリをレンダリングして時間内に複製できませんか? または他の理由?困惑しています...よろしくお願いします
質問する
167 次
1 に答える
0
この状況は、OpLogのサイズがプライマリで発生したすべての操作の記録を保持するのに十分でない場合、またはセカンダリがプライマリに追いついていない場合に発生する可能性があります。その場合に発生するのは、セカンダリがプライマリからの新しい挿入によって上書きされるOpLog内の位置です。この時点で、セカンダリはステータスがであると報告し、ログにメッセージRecovering
がRS102
表示されます。これは、古すぎて追いつかないことを示します。
この問題を修正するには、ドキュメントに記載されている手順に従う必要があります。
今後問題が発生しないようにするには、OpLogのサイズを調整し、セカンダリが同等のハードウェア構成であることを確認する必要があります。
OpLogの調整を支援するために、出力を確認すると、db.printReplicationInfo()
OpLogにどれだけの時間がかかっているかがわかります。ドキュメントでは、OpLogが小さすぎる場合にサイズを変更する方法の概要を説明しています。
于 2012-09-07T02:40:55.670 に答える