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

replSetstepDown

項目一覧

  • 説明
  • 互換性
  • 構文
  • コマンドフィールド
  • 動作
replSetStepDown

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

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

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

コマンドの実行の詳細については、 動作を参照してください。

注意

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

Tip

mongoshでは、このコマンドはrs.stepDown()ヘルパー メソッドを通じて実行することもできます。

ヘルパー メソッドはmongoshユーザーには便利ですが、データベースコマンドと同じレベルの情報は返されない可能性があります。 便宜上必要ない場合、または追加の戻りフィールドが必要な場合は、 データベースコマンドを使用します。

replSetStepDownadminデータベースでのみ実行できます。

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

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

重要

このコマンドは、M 0 、M 2 、M 5 、M 10 + クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

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

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

このコマンドの構文は、次のとおりです。

db.adminCommand( {
replSetStepDown: <seconds>,
secondaryCatchUpPeriodSecs: <seconds>,
force: <true|false>
} )

このコマンドは、次のフィールドを使用します。

フィールド
タイプ
説明
replSetStepDown
数値

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

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

secondaryCatchUpPeriodSecs
数値

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

指定すると、 secondaryCatchUpPeriodSecs10秒、またはforce: trueの場合は0秒のデフォルトの待機時間を上書きします。

force
ブール値

任意。 待機期間内に選択可能で最新のセカンダリが存在しない場合に、プライマリが降格するかどうかを決定するブール値。

trueの場合、適切なセカンダリ メンバーが存在しない場合でもプライマリは降格します。これにより、レプリケーションラグのあるセカンダリが新しいプライマリになると、ロールバックが発生する可能性があります。

falseの場合、適切な セカンダリ メンバーが存在しない場合にはプライマリは降格せず、 コマンドはエラーを返します。

デフォルトは false です。

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

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

待機期間の終了までにこの基準を満たす選出可能なセカンダリー候補がいない場合は、プライマリー候補は退任せず、コマンドはエラーとなります。 この動作をオーバーライドして、 force: trueオプションを指定したコマンドを実行すると、プライマリを直ちに降格できます。

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

replSetStepDown コマンドによって、すべてのクライアント接続が閉じられるわけではありません。

注意

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

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

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

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

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

次の例では、現在のプライマリで実行すると、メンバーを120秒降格しようとします。

この操作はセカンダリが追いつくまでデフォルトの10秒まで待機します。 適切なセカンダリが存在しない場合は、プライマリは降格せず、コマンドはエラーになります。

注意

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

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

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

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

db.adminCommand( { replSetStepDown: 120 } )

以下の例では、現在のプライマリで実行すると、メンバーを120秒間降格させ、選択可能なセカンダリが追いつくまで最大15秒待機します。 適切なセカンダリが存在しない場合は、プライマリは降格せず、コマンドはエラーになります。

注意

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

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

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

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

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15 } )

以下の例では、現在のプライマリで実行すると、メンバーを120秒間降格させ、選択可能なセカンダリが追いつくまで最大15秒待機します。 force: trueオプションのため、適切なセカンダリが存在しない場合でもプライマリは降格します。

注意

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

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

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

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

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15, force: true } )

Tip

以下も参照してください。

戻る

replSetResizeOplog