私はmongoDBデータベースにシャーディングを実装しようとしています。シナリオは次のとおりです。
構成サーバーを実行しているサーバーが1つあります
node1とnode2というmongodインスタンスを実行している2台のサーバーがあります
1台のサーバーでmongosを実行しています
コマンドを使用して、サーバーnode1とnode2をmongosシェルのシャードサーバーとして追加しました
db.runCommand({addshard: "serverhostname [:port]"});
後でnode1にデータベースを作成し、Mongosからそのデータベースのシャーディングを有効にしました
これで2つのシャードサーバーができました。MongoDBのドキュメントに従って、mongosはノード1(データベースが実際に存在する場所)で作成されたコレクションとノード2にコレクションを配置する必要があります。
私はmongosから300のコレクションを作成しましたが、それでもすべてのコレクションは1つのサーバーにのみ送信されます。これは、上記のサポートの問題点です。
注:-コレクションレベルでシャーディングできないアプリケーション層をアップグレードする立場にないため、要件に応じていくつかのコレクションを動的に作成するスクリプトがあります。
コレクションがすべてのシャードサーバーに均等に分散されるように、データベースレベルでシャーディングする方法についての提案を提供してください。
私は次のような解決策を探しています
300のコレクションを自動的に作成する場合、mongosは2つのシャードサーバーのそれぞれに約150または100のコレクションを作成する必要があります。
ステップインしてこの問題の修正を手伝ってくれてありがとう。