Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

シャードへのノードの追加

項目一覧

  • このタスクについて
  • 始める前に
  • 手順
  • 次のステップ

のシャーディングされたクラスター 内の既存のシャードにメンバーを追加できます。 シャードにノードを追加する理由は、レプリカセットにノードを追加するのと同じ理由です。 たとえば、ノードの数を増やすと、フェイルオーバーが発生した場合にプライマリを置き換える候補が増えます。 ノードを追加すると、データの冗長性とレプリカセットの可用性も向上します。

詳細については、「レプリカセットの配置アーキテクチャ 」を参照してください。

MongoDB 5.0 より前では、新しく追加されたセカンダリは、データの一貫性が確保されるまでは読み取りを処理できず、プライマリにもなれませんが、投票メンバーとしてカウントされます。 MongoDB バージョン 5.0 より前のバージョンを実行中で、 votespriorityの設定が0より大きいセカンダリを追加すると、投票ノードの過半数がオンラインであるにもかかわらずプライマリを使用できない状況が発生する可能性があります。選出される。 このような状況を回避するには、最初にpriority :0votes :0を使用して新しいセカンダリを追加することを検討してください。 次に、 rs.status()を実行して、ノードがSECONDARY状態に移行したことを確認します。 最後に、 rs.reconfig()を使用して優先順位と投票を更新します。

シャード レプリカセットにノードを追加するには、次の手順が必要です。

  1. アクティブなシャーディングされたクラスターのレプリカセット。

  2. 新しいノードの新しいホスト サーバー。 新しいホスト サーバーは、シャーディングされたデータセットをサポートし、アクティブなレプリカセットからネットワーク経由でアクセスできる必要があります。

MongoDB 8.0以降では、 directShardOperationsロールを使用して、シャードに対してコマンドを直接実行する必要があるメンテナンス操作を実行できます。

警告

directShardOperationsロールを使用して コマンドを実行すると、クラスターが正しく動作しなくなり、データが破損する可能性があります。 directShardOperationsロールは、メンテナンス目的で、または MongoDB サポートのガイダンスに必ず従う必要があります。 メンテナンス操作を実行したら、 directShardOperationsロールの使用を停止します。

1

次のいずれかの戦略を使用して、新しいノードのデータディレクトリを準備します。

レプリケーション配置パターンの背景については、「レプリカセット配置のアーキテクチャ」ドキュメントを参照してください。

2

データディレクトリとレプリカセット名を指定します。 次の例えでは、 /srv/mongodb/db0データディレクトリとrs0レプリカセットを指定します。

mongod --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<ip address of the mongod host>

警告

インスタンスをパブリックにアクセス可能な IP アドレスにバインドする前に、クラスターを不正アクセスから保護する必要があります。 セキュリティ推奨事項の完全なリストについては、「自己管理型配置のセキュリティ チェックリスト」を参照してください。 最低限、認証を有効化し、ネットワーク インフラストラクチャの強化 を検討してください。

設定オプションの詳細については、 mongodマニュアル ページを参照してください。

Tip

mongod.conf構成ファイルでデータディレクトリ、レプリカセット名、および IP バインディングを指定し、次のコマンドでmongodを起動できます。

mongod --config /etc/mongod.conf
3

ノードの追加は、プライマリーに接続している間のみ可能です。 プライマリに接続するには、 mongoshを使用します。 hostportの値を配置に関連する値に置き換えます。

mongosh --host mongodb0.example.com --port 28015

どのメンバーがプライマリであるかわからない場合は、レプリカセットの任意のメンバーに接続してdb.hello()コマンドを発行します。

4

member configuration documentを メソッドに渡します。 たとえば、ホストmongodb3.example.netにメンバーを追加するには、次のコマンドを発行します。

rs.add( { host: "mongodb3.example.net:27017", priority: 0, votes: 0 } )
5

レプリカセット メンバーの状態を確認するには、 rs.status()を実行します。

rs.status()

新しく追加されたメンバーがSECONDARY状態に移行したら、必要に応じてrs.reconfig()を使用して、新しく追加されたメンバーのpriorityvotesを更新します。

警告

  • rs.reconfig() shell メソッドを使用すると、現在のプライマリを強制的に降格させることができ、選挙が行われます。プライマリが降格すると、mongod はすべてのクライアント接続を閉じます。通常、この処理時間は 10 ~ 20 秒ですが、スケジュールされたメンテナンス期間中にこれらの変更を行ってください。

  • MongoDB のバージョンによって検証ルールが異なる可能性があるため、異なるバージョンの MongoDB のノードを含むレプリカセットの再設定は避けてください。

rs.conf()mongodb3.example.net:27017の構成ドキュメントをmembers配列の 5 番目の要素として返す場合、優先順位と投票を1に更新するには、次の一連の操作を使用します。

var cfg = rs.conf();
cfg.members[4].priority = 1
cfg.members[4].votes = 1
rs.reconfig(cfg)

戻る

シャードの追加