Docs Menu

シャード

シャードには、シャーディングされたクラスターのシャーディングされたデータのサブセットが含まれています。クラスターのシャードは、クラスターのデータセット全体を保持します。

冗長性と高可用性を実現するには、シャードをレプリカセットとして配置する必要があります。

重要

シャーディングされたクラスターは、多くの内部操作に書込み保証 "majority" を使用します。レプリカセットにはパフォーマンス上の問題があるため、シャーディングされたクラスターでアービタを使用することは推奨しません。

警告

データが破損したり、データが失われたりする可能性があるため通常は、シャードで操作を直接実行しないでください。ユーザー、クライアント、またはアプリケーションは、シャードに直接接続するだけで、ローカルの管理操作や保守操作を実行できます。

単一のシャードに対してクエリを実行すると、データのサブセットのみが返されます。mongos に接続して、読み取り (read) 操作や書込み (write) 操作などのクラスター レベルの操作を実行します。

重要

MongoDB では、連続する 2 つのチャンクが単一のシャード上に存在することは保証されません。

シャーディングされたクラスター内の各データベースにはプライマリシャードがあります。これは、データベース内のすべてのシャーディングされていないコレクションに対するデフォルトのシャードです。データベースにおけるすべてのシャーディングされていないコレクションは、デフォルトでデータベースのプライマリシャードに作成されます。MongoDB 8.0 以降では、moveCollection を使用して、シャーディングされていないコレクションを別のシャードに移動できます。プライマリシャードはレプリカセット内のプライマリとは関係ありません。

mongos は、新しいデータベースを作成するときに、クラスター内でデータ量が最も少ないシャードを選ぶことで、プライマリシャードを選択します。mongos は、選択基準の一部として、listDatabases コマンドによって返されたtotalSize フィールドを使用します。

Diagram of a primary shard. A primary shard contains non-sharded collections as well as chunks of documents from sharded collections. Shard A is the primary shard.

データベースのプライマリシャードを変更するには、movePrimary コマンドを使用します。プライマリシャードの移行プロセスが完了までにかなりの時間がかかる場合があるため、完了するまで、データベースに関連づけられたコレクションにはアクセスしてはなりません。移行されるデータ量によっては、移行がクラスター全体の運用に影響を与える可能性があります。プライマリシャードの変更を試みる前に、クラスター運用とネットワーク負荷への影響を考慮します。

以前はレプリカセットとして使用されていたシャードを含む新しいシャーディングされたクラスターを配置しても、既存のすべてのデータベースは元のレプリカセットに引き続き存在します。その後に作成されるデータベースは、クラスター内の任意のシャード上に存在できます。

クラスターの概要を表示するには、mongoshsh.status() メソッドを使用します。このレポートには、どのシャードがデータベースのプライマリであるか、およびシャード全体にわたるチャンクの分布が含まれます。詳細については、sh.status() メソッドを参照してください。

自己管理型内部認証とメンバーシップ認証を使用してクラスター内のセキュリティを強化し、不正なクラスター コンポーネントがクラスターにアクセスするのを防ぎます。 内部認証を強制するには、クラスター内の各mongodを適切なセキュリティ設定で起動する必要があります。

MongoDB 5.3 以降では、クラスター内認証に SCRAM-SHA-1 は使用できません。SCRAM-SHA-256 のみがサポートされます。

前の MongoDB バージョンでは、SCRAM が明示的に有効になっていなくても、SCRAM-SHA-1 と SCRAM-SHA-256 の両方をクラスター内認証に使用できます。

安全なシャーディングされたクラスターの配置に関するチュートリアルについては、 「 キーファイル認証による自己管理型シャーディングされたクラスターの配置 」を参照してください。

各シャードは、シャード データおよび操作への不正アクセスを制限するための 自己管理型配置でのロールベース アクセス制御(RBAC)をサポートしています。 RBAC を適用するには、レプリカセット内の各mongod--authオプションで開始します。 あるいは、クラスター内セキュリティのために自己管理型内部/メンバーシップ認証を強制すると、RBAC を介したユーザー アクセス制御も可能になります。

MongoDB 5.3 以降では、クラスター内認証に SCRAM-SHA-1 は使用できません。SCRAM-SHA-256 のみがサポートされます。

前の MongoDB バージョンでは、SCRAM が明示的に有効になっていなくても、SCRAM-SHA-1 と SCRAM-SHA-256 の両方をクラスター内認証に使用できます。

各シャードには独自のシャード ローカル ユーザーが存在します。これらのユーザーは他のシャードで使用することはできず、また、mongos 経由でクラスターに接続するために使用することもできません。

RBAC 対応の MongoDB 配置にユーザーを追加できるようにするチュートリアルについては、 「 自己管理型配置でアクセス制御を有効にする 」を参照してください。