MongoDB チュートリアルlogin
MongoDB チュートリアル
著者:php.cn  更新時間:2022-04-21 17:49:03

MongoDB レプリケーション (レプリカ セット)


MongoDB レプリケーションは、複数のサーバー間でデータを同期するプロセスです。

レプリケーションはデータの冗長バックアップを提供し、データのコピーを複数のサーバーに保存することで、データの可用性を向上させます。 データのセキュリティを確保できます。

レプリケーションを使用すると、ハードウェア障害やサービス中断からデータを回復することもできます。


レプリケーションとは何ですか?

  • データセキュリティの保証

  • データの高可用性(24時間365日)

  • 災害復旧

  • ダウンタイムメンテナンスの必要はありません(バックアップ、インデックスの再構築、圧縮など) )

  • データの分散読み取り


MongoDBレプリケーションの原則

MongoDBレプリケーションには少なくとも2つのノードが必要です。そのうちの 1 つはクライアント要求の処理を担当するマスター ノードで、残りはマスター ノード上でデータを複製する担当のスレーブ ノードです。

mongodb の各ノードの一般的なマッチング方法は、1 つのマスターと 1 つのスレーブ、1 つのマスターと複数のスレーブです。

マスター ノードは、すべての操作 oplog を記録します。スレーブ ノードは定期的にマスター ノードをポーリングしてこれらの操作を取得し、独自のデータ コピーでこれらの操作を実行します。これにより、スレーブ ノードのデータがマスターと一貫していることが保証されます。ノード。

MongoDB のレプリケーション構造図は次のとおりです。

MongoDB复制结构图

上記の構造図では、クライアントは常にマスター ノードからデータを読み取り、クライアントはマスター ノードにデータを書き込みます。 マスター ノードとスレーブ ノード間のデータ対話により、データの一貫性が保証されます。

レプリカセットの機能:

  • Nノードのクラスター

  • どのノードもマスターノードとして機能可能

  • すべての書き込み操作はマスターノード上で行われます

  • 自動フェイルオーバー

  • 味方回復


MongoDB レプリカセット設定

このチュートリアルでは、同じ MongoDB を使用して MongoDB マスター/スレーブ実験を行います。 手順は次のとおりです。

1. 実行中の MongoDB サーバーを閉じます。

ここで、--replSet オプションを指定して mongoDB を起動します。 --replSet の基本的な構文形式は次のとおりです。

mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"

Instance

mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0

上記の例では、rs0 という名前の MongoDB インスタンスが起動され、そのポート番号は 27017 です。

起動後、コマンドプロンプトボックスを開き、mongoDBサービスに接続します。

Mongo クライアントでコマンド rs.initiate() を使用して、新しいレプリカ セットを開始します。

rs.conf() を使用してレプリカ セットの構成を表示できます

rs.status() コマンドを使用してレプリカ セットのステータスを表示します


レプリカ セットにメンバーを追加します

To add membersレプリカ セットでは、mongo サービスを開始するために複数のサーバーを使用する必要があります。 Mongo クライアントに入り、rs.add() メソッドを使用してレプリカ セットのメンバーを追加します。

構文

rs.add() コマンドの基本的な構文形式は次のとおりです:
>rs.add(HOST_NAME:PORT)

ポート番号 27017 で mongod1.net という名前の Mongo サービスを開始したとします。 クライアント コマンド ウィンドウで rs.add() コマンドを使用して、レプリカ セットに追加します。コマンドは次のとおりです。

>rs.add("mongod1.net:27017")
>

MongoDB では、マスター ノードを介してのみ Mongo サービスをレプリカ セットに追加できます。 現在実行中の Mongo サービスがマスター ノードであるかどうかを確認するには、コマンド db.isMaster() を使用できます。

MongoDB のレプリカ セットは、一般的なマスター/スレーブとは異なります。ホストがダウンすると、マスター/スレーブのすべてのサービスが停止します。ただし、ホストがダウンすると、レプリカ セットがマスター ノードを引き継いでマスターになります。ノードに接続され、マシンのダウンタイムは発生しません。

PHP中国語ウェブサイト