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
秒を上書きします。
動作
同時操作
rs.stepDown()
メソッドは、インデックスの構築、書込み (write) 操作、map-reduce ジョブなど、プライマリの停止を妨げる実行中のユーザー操作を終了しようとします。
資格のあるセカンダリの可用性
次に、このメソッドはキャッチアップ期間を開始し、セカンダリがプライマリと最新の状態になるまで最大 secondaryCatchUpPeriodSeconds
(デフォルトでは 10 秒)待機します。ロールバックを防止するために、キャッチアップ期間中にセカンダリがプライマリと最新の状態である場合にのみ、プライマリはステップダウンします。
待機期間の終了までにこの基準を満たす選出可能なセカンダリー候補がいない場合は、プライマリー候補は退任せず、この方法はエラーとなります。
プライマリが正常にステップダウンすると、そのノードは、メソッドを受信した時点から始まる stepDownSecs
期間の残りの間、プライマリになることはできません。
クライアント接続
rs.stepDown()
メソッドにより、すべてのクライアント接続が閉じられるわけではありません。
ステップダウン中の書込み
注意
rs.stepDown()
メソッドが受信されてから、新しいプライマリが選出されるまで、または選択可能なセカンダリが存在しない場合は、元のプライマリが通常の操作を再開するまで、プライマリへのすべての書き込みは失敗します。
rs.stepDown()
の実行時に進行中であった書込みは強制終了されます。 進行中のトランザクションもTransientTransactionError
で失敗し、全体が再試行できます。
書込みが失敗する最大期間:
secondaryCatchUpPeriodSecs
(デフォルトでは 10 秒間) + electionTimeoutMillis
(デフォルトでは 10 秒間)。
選挙ハンドオフ
force
フィールドをtrue
に設定せずにrs.stepDown()
またはreplSetStepDown
を使用してプライマリを降格すると、降格したプライマリは、選挙を直ちに呼び出す資格のあるセカンダリを指名します。