MongoDB レプリケーション: 作成方法 MongoDB レプリカセット
⚡ スマートサマリー
MongoDB レプリケーションは、複数のデバイスで同一のデータを保持します。 MongoDB サーバー、サーバー障害からの保護、および負荷分散の有効化。グループ化された MongoDB インスタンスはレプリカセットを形成し、プライマリインスタンスが書き込みを受け付け、セカンダリインスタンスが読み取り操作とフェイルオーバーを処理します。
何ですか MongoDB 複製?
レプリケーションとは、同じデータが複数の場所で利用可能であることを保証するプロセスを指します。 MongoDB サーバー。これは、データ可用性を向上させる目的で必要となる場合がある。
なぜなら、メインの場合は MongoDB 何らかの理由でサーバーがダウンすると、データにアクセスできなくなります。ただし、データを定期的に別のサーバーにレプリケートしておけば、プライマリ サーバーに障害が発生した場合でも、別のサーバーからデータにアクセスできます。
レプリケーションのもう XNUMX つの目的は、負荷分散の可能性です。 システムに接続するユーザーが多数いる場合、全員が XNUMX つのシステムに接続するのではなく、ユーザーを複数のサーバーに接続して、負荷を均等に分散することができます。
In MongoDB、複数 MongoDB サーバーはレプリカセットと呼ばれるグループにまとめられます。レプリカセットにはプライマリサーバーがあり、クライアントからのすべての書き込み操作を受け付けます。その後セットに追加される他のインスタンスはすべてセカンダリインスタンスと呼ばれ、主にすべての読み取り操作に使用されます。
レプリカ セットを作成する方法 MongoDB rs.initiate() を使用して最初のメンバーを追加する
前のセクションで説明したように、レプリケーションを有効にするには、まずレプリカ セットを作成する必要があります。 MongoDB インスタンス。
例として、ServerA、ServerB、ServerCという3台のサーバーがあると仮定しましょう。この構成では、ServerAがプライマリサーバー、ServerBとServerCがセカンダリサーバーとなります。以下のスクリーンショットをご覧いただくと、より分かりやすいでしょう。
を作成するために従う必要がある手順は次のとおりです。 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 インスタンスを起動します。このオプションはグループを提供します。ping このレプリカセットに含まれるすべてのサーバーに対して。
mongo --replSet "Replica1"
ここで、「Replica1」はレプリカ セットの名前です。 レプリカ セット名には、意味のある任意の名前を選択できます。
ステップ4)最初のサーバーがレプリカセットに追加されます
最初のサーバーがレプリカセットに追加されたので、次のステップは、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")
レプリカ セットのトラブルシューティング
レプリカセットの使用中に問題が発生した場合のトラブルシューティング方法は、以下のとおりです。
- すべてのmongo.exeインスタンスが相互に接続できることを確認してください。ServerA、ServerB、ServerCという3つのサーバーがあるとします。ServerAから、以下の2つのコマンドを実行してください。
mongo --host ServerB --port 27017 mongo --host ServerC --port 27017
- rs.status コマンドを実行してください。このコマンドはレプリカセットの状態を表示します。デフォルトでは、各メンバーは「ハートビート」メッセージと呼ばれるメッセージを相互に送信します。これは、サーバーが稼働していることを示すメッセージです。「status」コマンドはこれらのメッセージの状態を取得し、レプリカセット内のメンバーに問題がないかどうかを表示します。
- Oplog のサイズを確認してください。Oplog はコレクションです。 MongoDB に対して行われた書き込み履歴を保存します。 MongoDB データベース。 MongoDB 次に、この Oplog を使用して、レプリカ セット内の他のメンバーに書き込みを複製します。 Oplog を確認するには、必要なメンバー インスタンスに接続し、rs.printReplicationInfo コマンドを実行します。このコマンドは、ログのサイズと、ログ ファイルがいっぱいになるまでにトランザクションを保持できる期間を表示します。


