Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

rs.stepDown()

項目一覧

  • 説明
  • 互換性
  • 動作
rs.stepDown(stepDownSecs, secondaryCatchUpPeriodSecs)

レプリカセットのプライマリセカンダリになるように指示します。 プライマリがステップダウンすると、資格のあるセカンダリで プライマリ選挙 が行われます。

この方法では、プライマリをすぐにステップダウンするわけではありません。 プライマリと最新の electable セカンダリがない場合、プライマリはセカンダリが追いつくまで最大 secondaryCatchUpPeriodSecs(デフォルトでは 10 秒)待機します。選択可能なセカンダリが利用可能になると、このメソッドはプライマリを降格します。

ステップダウン後は、元のプライマリがセカンダリになり、stepDownSecs で指定された残りの期間が再びプライマリになることはできません。

メソッドの実行の詳細については、 動作を参照してください。

注意

このメソッドはプライマリに対してのみ有効であり、プライマリ以外のノードで実行するとエラーがスローされます。

重要

mongosh メソッド

このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、replSetStepDown コマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

rs.stepDown()メソッドには次のパラメータがあります。

Parameter
タイプ
説明

stepDownSecs

数値

プライマリをステップダウンするまでの秒数。この時間中、ステップダウンするノードはプライマリになる資格がありません。数値以外を指定した場合、コマンドは 60 秒を使用します。

ステップダウン期間は、mongod がコマンドを受信した時点から開始されます。ステップダウン期間は secondaryCatchUpPeriodSecs より大きくなければなりません。

secondaryCatchUpPeriodSecs

数値

任意: 選択可能なセカンダリがプライマリに追いつくまで mongod が待機する秒数。

指定すると、secondaryCatchUpPeriodSecs はデフォルトの待機時間である 10 秒を上書きします。

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

rs.stepDown() メソッドは、インデックスの構築、書込み (write) 操作、map-reduce ジョブなど、プライマリの停止を妨げる実行中のユーザー操作を終了しようとします。

次に、このメソッドはキャッチアップ期間を開始し、セカンダリがプライマリと最新の状態になるまで最大 secondaryCatchUpPeriodSeconds(デフォルトでは 10 秒)待機します。ロールバックを防止するために、キャッチアップ期間中にセカンダリがプライマリと最新の状態である場合にのみ、プライマリはステップダウンします。

待機期間の終了までにこの基準を満たす選出可能なセカンダリー候補がいない場合は、プライマリー候補は退任せず、この方法はエラーとなります。

プライマリが正常にステップダウンすると、そのノードは、メソッドを受信した時点から始まる stepDownSecs 期間の残りの間、プライマリになることはできません。

rs.stepDown() メソッドにより、すべてのクライアント接続が閉じられるわけではありません。

注意

rs.stepDown()メソッドが受信されてから、新しいプライマリが選出されるまで、または選択可能なセカンダリが存在しない場合は、元のプライマリが通常の操作を再開するまで、プライマリへのすべての書き込みは失敗します。

rs.stepDown()の実行時に進行中であった書込みは強制終了されます。 進行中のトランザクションTransientTransactionErrorで失敗し、全体が再試行できます。

書込みが失敗する最大期間:

secondaryCatchUpPeriodSecs (デフォルトでは 10 秒間) + electionTimeoutMillis(デフォルトでは 10 秒間)。

forceフィールドをtrueに設定せずにrs.stepDown()またはreplSetStepDownを使用してプライマリを降格すると、降格したプライマリは、選挙を直ちに呼び出す資格のあるセカンダリを指名します。

戻る

rs.status