AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

コレクションのシャーディング解除

unshardCollectionコマンドを使用してシャーディングされたシャーディングされたコレクションのシャーディングを解除できます。 コレクションは複数のシャードにまたがって分割できなくなり、シャードキーが削除されます。

デフォルトでは 、 コレクションのシャーディングを解除すると 、 MongoDBはコレクションのデータをデータ量が最も少ないシャードに移動します。 あるいは、データを配置するシャードを指定することもできます。

このタスクは、次の環境でホストされている配置で実行できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです

注意

このタスクは、MongoDB Atlas の無料階層または Flex 階層では使用できません。

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

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

  • unshardCollection は、シャーディングされたクラスターでのみ実行できます。

  • unshardCollection は、シャーディングされたコレクションでのみ動作できます。

  • unshardCollection は一度に 1 つのコレクションに対してのみ操作できます。

  • unshardCollection の最小期間は5分です。

  • Atlas Search インデックスは、 unshardCollectionの実行後に 再構築する必要があります 。

  • writeConcernMajorityJournalDefaulttrueである必要があります。

  • unshardCollectionが完了するまで、シャードの追加や削除、埋め込みコンフィギュレーションサーバーと専用コンフィギュレーションサーバーの間の移行などのトポロジー変更を行うことはできません。

  • unshardCollectionの進行中にシャーディングされていないコレクションに対して次の操作を実行することはできません。

  • unshardCollectionの進行中は、クラスターで次の操作を実行できません。

  • unshardCollectionの進行中に発生するインデックスビルドは、メッセージが表示されずに失敗する可能性があります。

    • unshardCollectionの進行中は、インデックスを作成しないでください。

    • インデックスビルドが進行中の場合は、 unshardCollectionを呼び出しないでください。

  • エラーを回避するため、unshardCollection を実行するとMongoDB はコレクション内のゾーンを自動的に削除します。

  • If the collection you're unsharding uses Atlas Search, the search index becomes unavailable when the unsharding operation completes. You need to manually rebuild the search index once the unsharding operation completes.

  • If the collection you're unsharding is archived in Atlas Online Archives, the online archive files are marked as Orphaned once the unsharding operation completes. You can create another online archive for the same database, collection, and fields as the orphaned archive as long as there is no other archive for that same combination in the Active state.

デプロイメントでアクセス制御が有効になっている場合、 enableShardingロールはunshardCollectionコマンドを実行するためのアクセスを許可します。

コレクションのシャーディングを解除する 前に、以下の要件を満たしていることを確認してください。

  • アプリケーションは、影響を受けるコレクションが書込みをブロックする期間を2 秒許容できます。 書込み (write) がブロックされている期間中、アプリケーションのレイテンシが増加します。

  • データベースが次のリソース要件を満たしている。

    • コレクションを移動するシャードに、コレクションとそのインデックス用の十分なストレージ領域があることを確認します。 宛先シャードでは少なくとも( Collection storage size + Index Size ) * 2バイトが使用可能である必要があります。

    • I/Oキャパシティーが50 % 未満であることを確認します。

    • CPU 負荷が80 % 未満であることを確認します。

1

シャーディングされたシャーディングされたコレクションのデータを特定のシャードに配置する場合は、対象シャードの名前が必要です。

クラスター内のシャード名のリストを表示するには、 listShardsコマンドを使用します。

db.adminCommand( { listShards: 1 } )

shards._idフィールドには、各シャードの名前が一覧表示されます。

2

コレクションのシャーディングを解除するには、 unshardCollectionコマンドを実行します。 次の例では、 salesデータベース内のus_accountsというコレクションのシャーディングを解除します。

db.adminCommand( {
unshardCollection: "sales.us_accounts",
toShard: "shard1"
} )

アン シャード操作が完了すると、 us_accountsコレクション内のデータはshard1に表示されます。 toShardフィールドを省略すると、データはデータ量が最も少ないシャードに配置されます。

3

コレクションがシャーディングされていないことを確認するには、 $shardedDataDistributionステージを使用してシャーディングされていない名前空間を照合してください。

db.aggregate( [
{ $shardedDataDistribution: { } },
{ $match: { "ns": "sales.us_accounts" } }
] )

集計でデータが返されない場合、コレクションはシャーディングされません。