すべてのクライアントを一時的に切断するレプリカセットをステップダウンせずに、レプリカセットのセカンダリメンバーをパッシブにする方法はありますか?私が尋ねる理由は、セカンダリレプリカセットメンバーからバックアップを行うため、バックアップの実行中にこのメンバーがプライマリになることを望まないため、この優先度を変更するスクリプトがありますメンバーをゼロにし、rs.reconfig()を呼び出します。残念ながら、これにより、クライアントが再接続するまで一時的に中断が発生します。バックアップが完了したら、メンバーの優先度を変更して、rs.reconfig()を再度呼び出します。中断を引き起こさずにこれを行う別の方法はありますか?
ありがとう、リチャード。
レプリカセットを再構成する代わりにrs.freeze(...)
、バックアップを実行しているセカンダリで実行できます。冷凍セカンダリーは、指定された期間中にプライマリーになる資格がありません。
バックアップが完了したらrs.freeze(0)
、セカンダリで実行してフリーズを解除できます。
考慮すべき警告:
バックアップの実行中にフェイルオーバーが引き続き可能であることを保証するために、レプリカセットに十分なデータ保持ノードがあることを確認する必要があります。たとえば、3ノードのレプリカがプライマリ/セカンダリ/アービターで設定されている場合、フェイルオーバー(およびバックアップの中断)ではなく停止を本当に望んでいない限り、セカンダリをフリーズするのは危険です。
rs.freeze()
バックアッププロセスが適切に完了しなかったり、セカンダリのフリーズを解除したりしても、セカンダリが誤って長期間フリーズしてしまうことがないように、予想されるバックアップ期間よりもかなり長い秒数を指定する必要があります(ただし、過度に長くはなりません)。 。
現在のバックアップ戦略によっては、これは不要な場合があります。たとえば、ファイルシステムスナップショットを使用している場合、プロセスは非常に迅速に完了する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加