MongoDB レプリケーション: 作成方法 MongoDB レプリカセット

何ですか MongoDB 複製?

レプリケーションとは、同じデータが複数の Mongo DB サーバーで利用できるようにするプロセスを指します。 これは、データの可用性を高める目的で必要になる場合があります。

なぜなら、メインの場合は MongoDB 何らかの理由でサーバーがダウンすると、データにアクセスできなくなります。ただし、データを定期的に別のサーバーにレプリケートしておけば、プライマリ サーバーに障害が発生した場合でも、別のサーバーからデータにアクセスできます。

レプリケーションのもう XNUMX つの目的は、負荷分散の可能性です。 システムに接続するユーザーが多数いる場合、全員が XNUMX つのシステムに接続するのではなく、ユーザーを複数のサーバーに接続して、負荷を均等に分散することができます。

In MongoDB、複数 MongoDB サーバーは、レプリカ セットと呼ばれるセットにグループ化されます。レプリカ セットには、クライアントからのすべての書き込み操作を受け入れるプライマリ サーバーがあります。これ以降にセットに追加される他のすべてのインスタンスは、主にすべての読み取り操作に使用できるセカンダリ インスタンスと呼ばれます。

レプリカ セットを作成する方法 MongoDB rs.initiate() を使用して最初のメンバーを追加する

前のセクションで説明したように、レプリケーションを有効にするには、まずレプリカ セットを作成する必要があります。 MongoDB インスタンス。

この例では、ServerA、ServerB、および ServerC という 3 つのサーバーがあると仮定します。 この構成では、ServerA がプライマリ サーバーになり、ServerB と ServerC がセカンダリ サーバーになります。 以下のスクリーンショットは、それについてよりよく理解できるでしょう。

レプリカ セットの作成 MongoDB

を作成するために従う必要がある手順は次のとおりです。 MongoDB レプリカ セットと最初のメンバーのセットへの追加。

ステップ1) すべての mongod.exe インスタンスが追加されていることを確認します

レプリカ セットに追加されるすべての mongod.exe インスタンスが異なるサーバーにインストールされていることを確認してください。これは、1 つのサーバーがダウンした場合でも、他のサーバーが利用可能になり、他のインスタンスも確実に利用できるようにするためです。 MongoDB 使えるようになる。

ステップ2) すべての mongo.exe インスタンスは相互に接続します

すべての mongo.exe インスタンスが相互に接続できることを確認します。 ServerA から、以下の 2 つのコマンドを発行します。

mongo –host ServerB –port 27017
mongo –host ServerC –port 27017

同様に、残りのサーバーからも同じことを実行します。

ステップ3) 最初の mongod.exe インスタンスを開始します

replSet オプションを使用して最初の mongod.exe インスタンスを起動します。 このオプションは、このレプリカ セットの一部となるすべてのサーバーをグループ化します。

mongo –replSet "Replica1"

ここで、「Replica1」はレプリカ セットの名前です。 レプリカ セット名には、意味のある任意の名前を選択できます。

ステップ4) 最初のサーバーがレプリカ セットに追加されます

最初のサーバーがレプリカ セットに追加されたので、次のステップは、次のコマンドを発行してレプリカ セットを開始することです。wing コマンド rs.initiate()。

ステップ5) レプリカセットを確認する

コマンド rs.conf() を発行してレプリカ セットを検証し、レプリカが正しく設定されていることを確認します。

レプリカ セット: rs.add() を使用したセカンダリの追加

セカンダリ サーバーは、rs.add コマンドを使用するだけでレプリカ セットに追加できます。 このコマンドは、セカンダリ サーバーの名前を取得し、そのサーバーをレプリケーション セットに追加します。

ステップ1) ServerA、ServerB、および ServerC があり、これらはレプリカ セットの一部である必要があり、ServerA がレプリカ セット内のプライマリ サーバーとして定義されているとします。

ServerB と ServerC をレプリカ セットに追加するには、次のコマンドを実行します。

rs.add("ServerB")
rs.add("ServerC")

レプリカ セット: rs.remove() を使用した再構成または削除

構成セットからサーバーを削除するには、「rs.remove」コマンドを使用する必要があります。

ステップ1) まず、削除するインスタンスをシャットダウンします。 これを行うには、mongo シェルから db.shutdownserver コマンドを発行します。

ステップ2) プライマリサーバーに接続します

ステップ3) rs.remove コマンドを使用して、レプリカ セットから必要なサーバーを削除します。 したがって、ServerA、ServerB、および ServerC を含むレプリカ セットがあり、そのレプリカ セットから ServerC を削除したい場合は、次のコマンドを発行するとします。

rs.remove("ServerC")

レプリカ セットのトラブルシューティング

次のことwing この手順は、レプリカ セットの使用で問題が発生した場合にトラブルシューティングできる方法と同じです。

  1. すべての mongo.exe インスタンスが相互に接続できることを確認します。 ServerA、ServerB、ServerC という 3 つのサーバーがあるとします。 サーバー A から、以下の 2 つのコマンドを発行します。
mongo –host ServerB –port 27017
mongo –host ServerC –port 27017
  1. rs.status コマンドを実行します。 このコマンドは、レプリカ セットのステータスを示します。 デフォルトでは、各メンバーは「ハートビート」メッセージと呼ばれるメッセージを相互に送信します。これは、サーバーが生きていて動作していることを示すだけです。 「status」コマンドは、これらのメッセージのステータスを取得し、レプリカ セット内のメンバーに問題があるかどうかを表示します。
  2. Oplog のサイズを確認する – Oplog は次のコレクションです。 MongoDB に対して行われた書き込み履歴を保存します。 MongoDB データベース。 MongoDB 次に、この Oplog を使用して、レプリカ セット内の他のメンバーに書き込みを複製します。 Oplog を確認するには、必要なメンバー インスタンスに接続し、rs.printReplicationInfo コマンドを実行します。このコマンドは、ログのサイズと、ログ ファイルがいっぱいになるまでにトランザクションを保持できる期間を表示します。

まとめ

でのレプリケーション MongoDB 同じデータが複数の Mongo DB サーバーで利用可能であることを確認するプロセスを指します。メンバーが多い(MongoDB インスタンス) は、要件に応じてレプリカ セットに追加できます。