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

movePrimary

項目一覧

  • 互換性
  • Considerations
  • 詳細情報
movePrimary

シャーディングされたクラスターでは、 movePrimaryは、データベース内のシャーディングされていないすべてのコレクションを保持するプライマリシャードを再割り当てします。 movePrimaryはまず、クラスター メタデータ内のプライマリシャードを変更し、次にシャーディングされていないすべてのコレクションを指定されたシャードに移行します。 次の形式の コマンドを使用します。

db.adminCommand( { movePrimary: <databaseName>, to: <newPrimaryShard> } )

たとえば、次のコマンドは、プライマリシャードをtestからshard0001に移動します。

db.adminCommand( { movePrimary : "test", to : "shard0001" } )

コマンドが返すと、データベースのプライマリシャードの場所は指定されたシャードに切り替えられました。 シャードを完全に廃止するには、 removeShardコマンドを使用します。

movePrimaryは、 mongosインスタンスでのみ使用できる管理コマンドです。

警告

movePrimaryを起動してから、コマンドが完了するまで、そのデータベース内のシャーディングされていないコレクションに対して読み取りまたは書込み操作を実行しないでください。 移行中にこれらのコレクションに対して読み取りまたは書き込み操作を発行すると、移行操作が失敗したりデータが失われたりするなど、予期しない動作が発生する可能性があります。

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

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

重要

このコマンドはサーバーレスインスタンスではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

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

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

mongosmovePrimary に対して"majority"書込み保証(write concern)を使用し

movePrimary データベースのサイズやネットワークの健全性やマシン リソースなどの要因によっては、完了までにかなりの時間が必要になる場合があります。 移行中にデータベースに対して発行された読み取りまたは書き込み操作は、移行操作が失敗したり、データが失われたりするなど、予期しない動作を引き起こす可能性があります。

こうした場合、アプリケーションでクラスターへのすべての読み取りと書込みを停止するメンテナンスウィンドの予定を立てることを検討します。 計画的なダウンタイム中にmovePrimaryを発行すると、データベース内の非シャードコレクションへの読み取りまたは書込みがインターリーブされることによって、未定義の動作が発生するリスクを軽減します。

movePrimary 宛先シャードに競合するコレクション名前空間が含まれている場合、 は失敗します。 例:

  1. 管理者は、 hrデータベースのプライマリシャードを変更するためにmovePrimaryを発行します。

  2. movePrimaryがそのコレクションを移動している間に、ユーザーまたはアプリケーションがhrのシャーディングされていないコレクションに対して書込み操作を発行します。 書込み (write) 操作により、元のプライマリシャードに コレクションが作成されます。

  3. 管理者は後でmovePrimaryを発行して、 hrデータベースの元のプライマリ シャードを復元します。

  4. movePrimary インターリーブ書込み (write) 操作から残った名前空間と競合するため失敗します。

movePrimary操作の一部として、宛先シャードは、プライマリ シャードになった後、移行されたコレクションのインデックスを再構築する必要があります。 これには、コレクションあたりのインデックス数とインデックスを作成するデータ量によっては、かなりの時間が必要になる場合があります。

インデックス構築プロセスの詳細については、「入力済みコレクションでのインデックス構築 」を参照してください。

MongoDB8.0 以降、movePrimary 変更ストリーム を持つコレクションを 無効化 しません。コレクションが新しいシャードに移動された後も、変更ストリームはコレクションからイベントを引き続き読み取ります。

MongoDBの以前のバージョンでは、 movePrimaryはコレクション変更ストリームを無効にし、変更ストリームはコレクションからイベントを読み取れません。

すべてのMongoDBバージョンで、移動されたシャーディングされていないコレクションの UUIDmovePrimaryは更新します。

完全な手順については、「 シャーディングされたシャードクラスタからシャードを削除する」を参照してください。

戻る

コレクションの移動