タイトルのとおり、1 つのプライマリ、1 つのセカンダリ、1 つのアービターを含むレプリカセットがあり、プライマリに大きな DB を復元しました。これはセカンダリよりもはるかに高速なインスタンスです。現在、セカンダリは大幅に (時間) 遅れており、数時間前から回復状態にあります。何かできることはありますか?復旧の進捗状況を知ることはできますか?
1 に答える
最初に 2 番目の質問にお答えします。「復旧状況はわかりますか?」はい、レプリカ セット プライマリに接続し、コマンドを実行してrs.status()
、RS 内の各メンバーの状態を確認できます。stateStr
ステータス コードのフレンドリ名を示す出力のフィールドを参照してください。これは、回復の進行状況を示しています。
ただし、タイトルで、いつ終了するかを知ることができるかどうかを尋ねました。それはずっと難しいです。セカンダリが別のメンバーとの同期をいつ終了するかを「正確に」知る方法はありません。
「何かできることはありますか?」について; はい、しかし、レプリケーションがいつ終了するかを知りたいというあなたの欲求に対する正確な答えは何もありません。出力を参照し、rs.status()
具体的にoptime
フィールドを確認して、セカンダリ メンバーと同期しているメンバー (この場合はプライマリ) を比較します。これは、2 つのサーバーがどれだけ離れているかについての「ある程度の」洞察を提供するだけです。ただし、これだけではあまり正確ではなく、他の要因が追いつくまでの実際の時間に影響を与える可能性があります。特定の時間に行われるとは言いません。
また; ユースケースでサーバーの品質が同等でない場合は、Markus Mahlberg のアドバイスにも耳を傾けます。これと他の多くの要因が、ディスク io の問題、複数のデータ センターの要因を含むネットワーク レイテンシなどのレプリケーション ラグの原因となる可能性があります。ここには明確な答えはありません。