シャーディングされたコレクションの管理
項目一覧
重要
シャーディングされたマネージド コレクション UI は非推奨です。 MongoDB Ops Manager 7.0.0 にはこの機能は含まれません。
Overview
シャーディングは複数のマシンにデータを分散します。 MongoDB は シャーディング を使用して、非常に大規模なデータセットと高スループット操作を伴う配置をサポートします。 MongoDB Ops Managerは、シャーディングされたクラスターと、それらのクラスター上にシャーディングされたコレクションを作成できます。
このページでは、 MongoDB Ops Managerが、シャーディングされたコレクション内でドキュメントを分散する方法の決定を含む、シャーディングされたコレクションの管理方法について説明します。
シャーディングでは、まず、コレクション内のドキュメントを 分割 するために使用される シャードキー の定義が含まれます。シャーディングの詳細については、 MongoDB マニュアルを参照してください。
シャードキーは、コレクション内のすべてのドキュメントに存在する 1 つ以上のインデックス付きフィールドで構成されます。 複合インデックス上のシャードキーは、複合シャードキーと呼ばれます。 各コレクションには、1 つのシャードキーのみを含めることができます。 コレクションをシャーディングすると、シャードキーを変更することはできません。 シャーディングされたクラスターは、シャーディングされたコレクションとシャーディングされていないコレクションの両方をサポートできます。 シャードキーの選択に関するベストプラクティスについては、 MongoDB マニュアルを参照してください。
シャーディングされたクラスターは、シャーディングされたコレクション内のドキュメントをクラスター内のシャード間で均等に分散しようとします。 シャーディング ゾーン を使用して、コレクション内のドキュメントの分散を管理できます。
ゾーン シャーディングでは、コレクションのシャードキー値の範囲を、ゾーンと呼ばれるクラスター内の 1 つ以上のシャードに関連付けます。 MongoDB は、指定された範囲内のドキュメントを最終的に関連付けられたゾーンにルーティングします。 これにより、 ターゲットを絞った データ分散が可能になります。 MongoDB Ops Managerは、ゾーン シャーディングとデフォルト シャーディングの両方をサポートしています。 ゾーンシャーディング の詳細については、 MongoDB マニュアルを参照してください。
注意
タグ認識シャーディングとゾーンシャーディングは互換性があります。 タグ認識シャーディングは、 MongoDB 3.4のリリースにより、 ゾーンシャーディング に移行します。
次の手順は、 MongoDB Ops Managerの操作方法を説明します。
シャーディングされたコレクションの管理
シャーディングされたクラスター バランサーの実行時に変更
新しいシャーディングされたコレクションの作成
シャーディングされたコレクションのMongoDB Ops Managerへのインポート
シャーディングされたクラスターのゾーンを定義する
シャーディングされたコレクションの範囲の定義
各手順では、最初にDeploymentページを表示するために Deploymentボタンをクリックしていることを前提としています。
シャーディングされたコレクション管理の有効化
MongoDB Ops Managerを使用してシャーディングされたコレクションを管理できます。 MongoDB Ops Managerでシャーディングされたコレクションを管理する場合は、まずMongoDB Ops Managerでインポート プロセスを実行する必要があります。 これにより、コレクションの構成が誤って上書きされることがなくなります。
失敗したインポートのトラブルシューティング。 (任意)
シャーディングされたコレクションのインポート中に発生する可能性のあるエラーがいくつかあります。
- 重複範囲
MongoDB Ops Manager は、重複が定義された範囲をサポートしていません。
例
複合シャードキーには、重複していない範囲が含まれているように表示されることがあります。 この例では、その違いを説明しています。
単純な 複合 シャードキーは、 1から10までの値を持つ 2 つの整数で構成されます。 各チャンクが約64 MB であるコレクションのチャンク範囲は次のとおりです。
min最大[$min, $min]
[1, 8]
[1,8]
[3,1]
[3,1]
[5,2]
[5,2]
[5,10]
[5,10]
[7,3]
[7,3]
[$max,$max]
範囲は、それぞれの値ではなく、2 つの値の合計(または複合)に基づいています。 2 番目の値はチャンクごとに増減しますが、 の組み合わせは常に最小値から最大値まで増加します。
この問題は、
mongosh
を使用してデータベースで直接解決できます。重複する可能性については、範囲を確認してください。
- データ型の不一致
MongoDB Ops Manager では、各範囲ごとに、シャードキー内の各フィールドの最小値と最大値が同じ BSON データ型である必要があります。 範囲内の複合シャードキーでは、キー内の各フィールドに対して異なる BSON タイプを使用できます。 MongoDB Ops Managerは、シャーディングされたコレクションがインポートされるときと、範囲が作成されたときにこれを検証します。
注意
MinキーとMaxキーは異なるデータ型であり、範囲内に BSON データ型を混在させない唯一の例外です。
この問題は、
mongosh
を使用してデータベースで直接解決できます。- Data type invalid
範囲の最小値と最大値では、次の 8 つの BSON データ型のみを使用できます。
文字列
整数
Double
Long
日付
タイムスタンプ
ObjectId
MinKey / MaxKey
この問題は、
mongosh
を使用してデータベースで直接解決できます。
シャーディングされたクラスター バランサーの実行時に変更
MongoDB Ops Managerを使用して、シャーディングされたクラスターがシャード間でデータをバランスするときに設定できます。
シャーディングされたクラスターにはそれぞれ、 バランサー と呼ばれるプロセスがあり、各 シャード にわたってチャンクを均等に分散するために機能します。 シャーディングされたクラスター全体でチャンクを移行すると、パフォーマンスに影響を与える可能性があります。 バランサーの効率は、シャードキーの選択によって異なります。 MongoDB Ops Managerバランサー マネージャーWindows インターフェースを使用して、オフピーク時間帯にバランシング ラウンドをスケジュールするなど、 バランサーが を実行できる 特定の を設定します。
シャーディングされたクラスターのバランシング ウィンドウを変更する場合は、以下の手順に従います。
バランサー が実行する時間のウィンドウを設定します。
バランサーの実行時間を変更するには:
をクリックします( Schedule the Balancerの右側にある)。
Startボックスに、ウィンドウが24 時間の使用を開始する時間を入力します。
Stopボックスに、24 時間単位を使用してウィンドウが終了する時間を入力します。
[Save] をクリックします。
注意
StartとStopの値は00:00
から23:59
の間になりますが、 StopはStartより前の値になる可能性があります。 StopがStartより前の場合、 Stopは次の日に であるとして扱われます。
例
移行ウィンドウを11 : 00午後から2 : 00午前 までの間でしたい場合は、 Startを23:00
に、 Stopを02:00
に設定します。
新しいシャーディングされたコレクションの作成
MongoDB Ops Managerを使用して、新しいシャーディングされたコレクションを作成できます。
重要
シャードキーとして選択されたフィールドがインデックス化されていない場合、オートメーションはフォアグラウンドでシャードキー インデックスを作成します。 この操作は、本番環境のワークロードに影響を与える可能性があります。 フォアグラウンド インデックスビルドの詳細については、「 格納済みコレクションでのインデックスビルド操作 」を参照してください。
MongoDB Ops Manager は、 シャードキー をカバーする 複合インデックス をサポートしていません。シャードキーの複合インデックスの詳細については、「シャードキー インデックス 」を参照してください。
Shard Key 1フィールドにシャードキーの名前を入力します。
シャードキーには、次の 2 つの相互に排他的なオプションがあります。
ハッシュされたシャードキーを使用する場合は、 hashedをオンにします。 Advanced Settingsを展開すると、コレクション内のドキュメントの分散が任意に最適化されます。 最適化するには、次の操作を実行します。
コレクションに定義されたゾーンとゾーン範囲に基づいて、空または存在しないコレクションの最初のチャンク作成と分散を実行するには、
presplitHashedZones
のチェックボックスを選択します。空の コレクションを ハッシュされたシャードキー でシャーディングするときに最初に作成するチャンクの最小数を指定します。
2
チャンクを推奨していますが、シャードごとに最大8192
を指定できます。 この設定は、シャーディングされたコレクションの MongoDBnumInitialChunks
設定に対応します。
これらのオプションの詳細についてはsh.shardCollection() を参照してください。
一意のキー名が必要な場合は、 Enforce Unique Keyをオンにします。
シャードキーを一意かつハッシュすることはできません。
複合シャードキーを作成する場合は、+ add another field をクリックします。
複合シャードキーでは最大 1 つのキーをハッシュできます。
一意のキー名が必要な場合は、 Enforce Unique Keyをオンにします。
複合シャードキーには 3 つを超えるキーを含めることはできません。
重要
複合シャードキーのハッシュは、 MongoDB バージョン4.4以降でサポートされています。 複合シャードキーをハッシュしてFCV 4.2にダウングレードする場合は、まずハッシュされたキーを持つシャーディングされたコレクションを削除する必要があります。
シャードをゾーンするには Set Up Ranges をクリックします。(任意)
このコレクションでゾーン シャーディングを使用する場合は、「範囲を使用してコレクションをシャーディングする方法を定義する 」の下の手順に従ってください。
ゾーンシャーディングの構成
注意
シャーディングされたコレクションに ゾーン シャーディング を使用する場合は、このセクションの次の 2 つの手順に従います。 そうでない場合、このセクションをスキップできます。
シャードをゾーンにグループ化
ゾーンは 、1 つ以上のシャードの名前付きプロジェクトです。 1 つ以上のゾーンを作成したら、シャードキー値の範囲とそれに対応するドキュメントをゾーンに割り当てることができます。 MongoDB は、指定された範囲内のドキュメントを最終的に関連付けられたゾーンにルーティングします。 各ゾーンには複数の範囲と複数のシャードを含めることができます。 各シャードは複数のゾーンに属することができます。 各シャードは、 Deploymentの下の名前の右側にそのゾーンを表示します。
範囲を使用してコレクションをシャーディングする方法を定義する
範囲は、シャードキー内の各フィールドの最小値と最大値を指定します。 定義された各範囲は、単一のゾーンに関連付けられます。 MongoDB は、指定された範囲内のドキュメントを最終的に関連付けられたゾーンにルーティングします。 最小値は、シャードキー値の包括的下限です。 最大値は、シャードキー値の排他的上限です。 範囲は 1 つのゾーンにのみ属することができますが、ゾーンには複数の範囲を持つことができます。
ドキュメントは、バランサーが範囲を目的のゾーンに移動すると、構成されたゾーンと範囲に基づいてルーティングされます。 サイズが超過すると、範囲内のドキュメントは関連付けられているゾーンにルーティングされ、範囲外のドキュメントはクラスター内の任意のシャードにルーティングされる可能性があります。
各シャードキーについて、最小値と最大値を入力し、関連付けられているゾーンを選択します。
複合シャードキーは、コンポーネント シャードキーごとに 1 つの範囲を持っていますが、まとめて 1 つのゾーンのみに関連付けられます。
注意
シャードキーがハッシュされたフィールドを持つ複合シャードキーである場合、ハッシュされたフィールドの有効な範囲値の型は次のとおりです。
NumberLong
minKey
maxKey
範囲の最小値は包括的で、最大値は排他的です。
例
次の 2 つの範囲は重複しません。
min | 最大 | ゾーン |
---|---|---|
1 | 10 | A |
10 | 20 | B |
注意
Min とMaxは絶対値です。特定の値を明示的に一覧表示しない範囲の絶対値と最小値です。
各範囲は、1 つのゾーンにのみ関連付けることができます。 同じ範囲を複数のゾーンに割り当てることはできません。
シャーディングされたコレクション管理の無効化
[Unmanage] をクリックします。
重要
シャーディングされたコレクションが管理されていない場合でも、シャーディングされたコレクションとゾーンは削除されません。 これらのコレクションとゾーンは、 MongoDB Ops Managerインターフェースからは管理できなくなりました。