定義
バージョン8.0の新機能。
MongoDB 8.0以降では、次のことが可能です。
通常のシャーディングされたクラスターのメタデータに加えてアプリケーションデータを保存するようにコンフィギュレーションサーバーを設定する。アプリケーションデータを保存するコンフィギュレーションサーバーをコンフィギュレーションシャードと呼ぶ。
コンフィギュレーションシャードと専用のコンフィギュレーションサーバーの間を移行します。
すべてのシャーディングされたクラスターにはコンフィギュレーションサーバーが必要です。コンフィギュレーションシャードはコンフィギュレーションサーバーとして修飾されます。必要なノードの数を減らし、配置を簡素化するには、専用のコンフィギュレーションサーバーではなくコンフィギュレーションシャードを使用します。
専用のコンフィギュレーションサーバーには独自のレプリカセットが必要です。コンフィギュレーションシャードは、 コンフィギュレーションサーバー のロールと既存の シャードレプリカセットを組み合わせるため、クラスターに必要なレプリカセットが少なくなり、コストが少なくなります。コンフィギュレーションシャードを使用しても、シャード数が少ない場合ではパフォーマンスへの影響は測定できません。
専用のコンフィギュレーションサーバーは、クラスターメタデータをアプリケーションデータから分離します。特定の機能にはこの分離が必要です。クラスターに適した配置については、「 コンフィギュレーションシャードのユースケース 」を参照してください。
transitionFromDedicatedConfigServerコマンドは、専用のコンフィギュレーションコンフィギュレーションサーバーをコンフィギュレーションシャードとして実行するように構成します。
transitionFromDedicatedConfigServerを実行する前に、 mongosに接続し、管理データベースを使用します。
シャーディングされたシャーディングされたクラスターでは、 featureCompatibilityVersionを少なくとも8.0に設定する必要があります。
構文
コマンド構文:
db.adminCommand( { transitionFromDedicatedConfigServer: 1 } )
動作
transitionFromDedicatedConfigServer コマンドは、コンフィギュレーションサーバーをクラスターにシャードとして追加します。 内部的には、transitionFromDedicatedConfigServer は addShard コマンドを実行します。
シャーディングされたクラスターがコンフィギュレーションシャードを使用していることを確認するには、次のいずれかの方法を使用します。
mongoshでsh.isConfigShardEnabled()メソッドを実行します。sh.isConfigShardEnabled()の出力にenabled: trueが含まれている場合、クラスターはコンフィギュレーションシャードを使用します。出力にenabled: falseが含まれている場合、クラスターはコンフィギュレーションシャードを使用しません。listShardsadminに接続している間に データベースに対して コマンドを実行し、mongosが_id"config"に設定されているドキュメントの出力を調べます。listShardsの出力に、_idが"config"に設定されているドキュメントが含まれていない場合、クラスターはコンフィギュレーションシャードを使用しません。
詳細については、「 コンフィギュレーションシャードの使用を確認する 」を参照してください。
機能の互換性バージョンを8.0より下にダウングレードする必要がある場合は、まずtransitionToDedicatedConfigServerコマンドを実行します。 ダウングレードの詳細については、「ダウングレード機能の互換性バージョン 」を参照してください。
アクセス制御
アクセス制御が有効になっている場合、transitionFromDedicatedConfigServer コマンドには クラスターtransitionFromDedicatedConfigServer の 認可アクションが必要です。
{ resource: { cluster : true }, actions: [ "transitionFromDedicatedConfigServer" ] }
clusterManagerロールにはtransitionFromDedicatedConfigServer認可アクションがあり、ユーザーに割り当てることができます。
次の例ではtestUserという名前のユーザーにclusterManagerロールを割り当てます。
db.grantRolesToUser( "testUser", [ "clusterManager" ] )
例
次の例では、専用のコンフィギュレーションコンフィギュレーションサーバーをコンフィギュレーションシャードとして実行するように構成します。
db.adminCommand( { transitionFromDedicatedConfigServer: 1 } )