Docs Menu
Docs Home
/
MongoDB Ops Manager

シャーディングされたコレクションの管理

項目一覧

  • Overview
  • シャーディングされたコレクション管理の有効化
  • シャーディングされたクラスター バランサーの実行時に変更
  • 新しいシャーディングされたコレクションの作成
  • ゾーンシャーディングの構成
  • シャーディングされたコレクション管理の無効化

重要

シャーディングされたマネージド コレクション UI は非推奨です。 MongoDB Ops Manager 7.0.0 にはこの機能は含まれません。

シャーディングは複数のマシンにデータを分散します。 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でインポート プロセスを実行する必要があります。 これにより、コレクションの構成が誤って上書きされることがなくなります。

1
2

[ シャーディング ] タブが表示されます。

3
4

既存のシャーディングされたコレクションとゾーンをインポートします。

5
6

シャーディングされたコレクションのインポート中に発生する可能性のあるエラーがいくつかあります。

重複範囲

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を使用してデータベースで直接解決できます。

  1. シャード範囲のステータスを確認します。

  2. 重複する可能性については、範囲を確認してください。

  3. シャードキー範囲からタグを削除します。

  4. シャードキー範囲に新しいタグを追加する。

データ型の不一致

MongoDB Ops Manager では、各範囲ごとに、シャードキー内の各フィールドの最小値と最大値が同じ BSON データ型である必要があります。 範囲内の複合シャードキーでは、キー内の各フィールドに対して異なる BSON タイプを使用できます。 MongoDB Ops Managerは、シャーディングされたコレクションがインポートされるときと、範囲が作成されたときにこれを検証します。

注意

MinキーとMaxキーは異なるデータ型であり、範囲内に BSON データ型を混在させない唯一の例外です。

この問題は、 mongoshを使用してデータベースで直接解決できます。

  1. シャード範囲のステータスを確認します。

  2. 最小値と最大値のタイプ チェック

  3. シャードキー範囲からタグを削除します。

  4. シャードキー範囲に新しいタグを追加する。

Data type invalid

範囲の最小値と最大値では、次の 8 つの BSON データ型のみを使用できます。

  • 文字列

  • 整数

  • Double

  • Long

  • 日付

  • タイムスタンプ

  • ObjectId

  • MinKey / MaxKey

Tip

以下も参照してください。

この問題は、 mongoshを使用してデータベースで直接解決できます。

  1. シャード範囲のステータスを確認します。

  2. 最小値と最大値のタイプ チェック

  3. シャードキー範囲からタグを削除します。

  4. シャードキー範囲に新しいタグを追加する。

7
  • 変更が許容される場合は、 Confirm and Deployをクリックします。

  • 変更を修正する必要がある場合は、 Cancelをクリックしてステップ1に戻ります。

MongoDB Ops Managerを使用して、シャーディングされたクラスターがシャード間でデータをバランスするときに設定できます。

シャーディングされたクラスターにはそれぞれ、 バランサー と呼ばれるプロセスがあり、各 シャード にわたってチャンクを均等に分散するために機能します。 シャーディングされたクラスター全体でチャンクを移行すると、パフォーマンスに影響を与える可能性があります。 バランサーの効率は、シャードキーの選択によって異なります。 MongoDB Ops Managerバランサー マネージャーWindows インターフェースを使用して、オフピーク時間帯にバランシング ラウンドをスケジュールするなど、 バランサーが を実行できる 特定の を設定します。

シャーディングされたクラスターのバランシング ウィンドウを変更する場合は、以下の手順に従います。

1
2

Balancerタブが表示されます。

3

Manage BalancerYes に切り替えます。

注意

バランサー管理が有効になっており、無効にする場合は、 Manage BalancerNoに切り替えます。

4

バランサーの実行時間を変更するには:

  1. をクリックしますSchedule the Balancerの右側にある)。

  2. Startボックスに、ウィンドウが24 時間の使用を開始する時間を入力します。

  3. Stopボックスに、24 時間単位を使用してウィンドウが終了する時間を入力します。

  4. [Save] をクリックします。

注意

StartStopの値は00:00から23:59の間になりますが、 StopStartより前の値になる可能性があります。 StopStartより前の場合、 Stopは次の日に であるとして扱われます。

移行ウィンドウを11 : 00午後から2 : 00午前 までの間でしたい場合は、 Start23:00に、 Stop02:00に設定します。

5
  1. Enable BalancerYesに切り替える 。

  2. [Save] をクリックします。

6

MongoDB Ops Manager に提案された変更が表示されます。

  1. 問題がなければ、[ Confirm & Deploy ] をクリックします。

  2. さらに設定変更を行う場合は、[ Cancel ] をクリックします。 追加の変更を行うクラスターのModifyをクリックします。

MongoDB Ops Managerを使用して、新しいシャーディングされたコレクションを作成できます。

重要

1
2
3

シャードキーには、次の 2 つの相互に排他的なオプションがあります。

  • ハッシュされたシャードキーを使用する場合は、 hashedをオンにします。 Advanced Settingsを展開すると、コレクション内のドキュメントの分散が任意に最適化されます。 最適化するには、次の操作を実行します。

    • コレクションに定義されたゾーンとゾーン範囲に基づいて、空または存在しないコレクションの最初のチャンク作成と分散を実行するには、 presplitHashedZonesのチェックボックスを選択します。

    • 空の コレクションを ハッシュされたシャードキー でシャーディングするときに最初に作成するチャンクの最小数を指定します。 2チャンクを推奨していますが、シャードごとに最大8192を指定できます。 この設定は、シャーディングされたコレクションの MongoDB numInitialChunks設定に対応します。

    これらのオプションの詳細についてはsh.shardCollection() を参照してください。

  • 一意のキー名が必要な場合は、 Enforce Unique Keyをオンにします。

シャードキーを一意かつハッシュすることはできません。

4
  • 複合シャードキーでは最大 1 つのキーをハッシュできます。

  • 一意のキー名が必要な場合は、 Enforce Unique Keyをオンにします。

複合シャードキーには 3 つを超えるキーを含めることはできません。

重要

複合シャードキーのハッシュは、 MongoDB バージョン4.4以降でサポートされています。 複合シャードキーをハッシュしてFCV 4.2にダウングレードする場合は、まずハッシュされたキーを持つシャーディングされたコレクションを削除する必要があります。

5

このコレクションでゾーン シャーディングを使用する場合は、「範囲を使用してコレクションをシャーディングする方法を定義する 」の下の手順に従ってください。

6
7
  • 変更が許容される場合は、 Confirm and Deployをクリックします。

  • 変更を修正する必要がある場合は、 Cancelをクリックしてステップ1に戻ります。

注意

シャーディングされたコレクションに ゾーン シャーディング を使用する場合は、このセクションの次の 2 つの手順に従います。 そうでない場合、このセクションをスキップできます。

ゾーンは 、1 つ以上のシャードの名前付きプロジェクトです。 1 つ以上のゾーンを作成したら、シャードキー値の範囲とそれに対応するドキュメントをゾーンに割り当てることができます。 MongoDB は、指定された範囲内のドキュメントを最終的に関連付けられたゾーンにルーティングします。 各ゾーンには複数の範囲と複数のシャードを含めることができます。 各シャードは複数のゾーンに属することができます。 各シャードは、 Deploymentの下の名前の右側にそのゾーンを表示します。

1
2
3
4
5

タグ付けされた範囲が関連付けられているシャード ゾーンを削除しようとすると、失敗します。 範囲 がタグ付けされたゾーンから最後のシャードを削除しようとすると、これも失敗します。 そのゾーンから最後のシャードを削除する前に、すべてのタグ付けされた範囲を別のゾーンに移動する必要があります。

6
  • 変更が許容される場合は、 Confirm and Deployをクリックします。

  • 変更を修正する必要がある場合は、 Cancelをクリックしてステップ1に戻ります。

範囲は、シャードキー内の各フィールドの最小値と最大値を指定します。 定義された各範囲は、単一のゾーンに関連付けられます。 MongoDB は、指定された範囲内のドキュメントを最終的に関連付けられたゾーンにルーティングします。 最小値は、シャードキー値の包括的下限です。 最大値は、シャードキー値の排他的上限です。 範囲は 1 つのゾーンにのみ属することができますが、ゾーンには複数の範囲を持つことができます。

ドキュメントは、バランサーが範囲を目的のゾーンに移動すると、構成されたゾーンと範囲に基づいてルーティングされます。 サイズが超過すると、範囲内のドキュメントは関連付けられているゾーンにルーティングされ、範囲外のドキュメントはクラスター内の任意のシャードにルーティングされる可能性があります。

1

重要

シャーディングを自動化すると、オートメーションはMongoDB Ops Managerインターフェースを通じて行われていない構成変更を元に戻します。

オートメーションでは、 MongoDB Ops Managerを通じて管理されていないシャーディングされたコレクションは何も変更されません。

2

複合シャードキーは、コンポーネント シャードキーごとに 1 つの範囲を持っていますが、まとめて 1 つのゾーンのみに関連付けられます。

注意

シャードキーがハッシュされたフィールドを持つ複合シャードキーである場合、ハッシュされたフィールドの有効な範囲値の型は次のとおりです。

  • NumberLong

  • minKey

  • maxKey

範囲の最小値は包括的で、最大値は排他的です。

次の 2 つの範囲は重複しません。

min
最大
ゾーン

1

10

A

10

20

B

注意

MinMaxは絶対値です。特定の値を明示的に一覧表示しない範囲の絶対値と最小値です。

各範囲は、1 つのゾーンにのみ関連付けることができます。 同じ範囲を複数のゾーンに割り当てることはできません。

3

指定されたコレクションに追加のシャードキー範囲を追加できます。

この方法では、同じ範囲を別のゾーンに割り当てることはできません。

4
5
  • 変更が許容される場合は、 Confirm and Deployをクリックします。

  • 変更を修正する必要がある場合は、 Cancelをクリックしてステップ1に戻ります。

[Unmanage] をクリックします。

重要

シャーディングされたコレクションが管理されていない場合でも、シャーディングされたコレクションとゾーンは削除されません。 これらのコレクションとゾーンは、 MongoDB Ops Managerインターフェースからは管理できなくなりました。

次へ

MongoDB Ops Manager