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

sh.unshardCollection

項目一覧

  • 定義
  • 構文
  • 互換性
  • Considerations
  • 要件
  • 詳細
sh.unshardCollection( namespace, shardID )

既存のシャーディングされたコレクションされたコレクションのシャーディングを解除し、コレクションデータを単一のシャードに移動します。 コレクションのシャーディングを解除すると、コレクションは複数のシャードにまたがって分割できなくなり、シャードキーが削除されます。

バージョン8.0の新機能

重要

mongosh メソッド

このページでは、mongosh メソッドについて説明します。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、unshardCollection コマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

sh.unshardCollectionメソッドでは、コレクションデータを受信するためのシャードを指定する必要があります。 unshardCollectionコマンドでは、宛先シャードを指定しない場合、クラスターは自動的にデータが最も少ないシャードを選択します。

注意

コレクションのシャーディングを解除するには 書き込み集中型の操作であり、 oplogの増加率が増加する可能性があります。 これを軽減するには、次の構成変更を検討してください。

  • oplogの無制限の増加を防ぐには、固定のoplogサイズを設定します。

  • セカンダリが古くなる可能性を減らすには、 oplogサイズを増やします。

詳しくは、レプリカセットのoplogを参照してください。

sh.unshardCollection の構文は次のとおりです。

sh.unshardCollection( namespace, shardID )
Parameter
タイプ
説明

namespace

string

シャーディングを解除するデータベースとコレクションを指定します。

shardID

string

受信者シャードIDを指定します。 MongoDBがコレクションのシャーディングを解除すると 、コレクション データが現在のシャードからこの特定のシャードにコレクションデータが移動されます。

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

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

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

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

重要

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

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

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

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

  • sh.unshardCollection() の最小期間は5分です。

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

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

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

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

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

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

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

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

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

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

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

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

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

この例では、 appデータベース上のinventoryという名前のコレクションのシャーディングを解除し、 shard02シャードにします。

sh.unshardCollection( "app.inventory", "shard02" )

使用可能なシャード ID のリストを取得するには、 sh.status()を実行します。 詳細についてはsh.status() 出力 を参照してください。

戻る

sh.stopBalancer