English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MongoDB複製はデータを複数のサーバー間で同期するプロセスです。
複製はデータの冗余バックアップを提供し、複数のサーバー上にデータのコピーを保存することで、データの可用性を向上させます。 また、データの安全性も保証します。
また、ハードウェアの故障やサービス中断からデータを復旧することもできます。
mongodbの複製は少なくとも2ノードが必要です。そのうちの1つはマスターノードで、クライアントのリクエストを処理し、残りはサブノードで、マスターノード上のデータをコピーします。
mongodbの各ノードの一般的な組み合わせは、1マスター1サブ、1マスター複数サブです。
マスターノードはその上で実行されるすべての操作oplogを記録し、サブノードは定期的にマスターノードを巡回してこれらの操作を取得し、サブノードのデータコピーに対してこれらの操作を実行します。これにより、サブノードのデータがマスターノードと一致することを保証します。
MongoDBの複製構造図は以下の通りです:
以下の構造図では、クライアントがマスターノードからデータを読み取り、クライアントがマスターノードにデータを書き込む場合、 マスターノードとサブノードがデータの整合性を保証するためにデータの交換を行います。
このチュートリアルでは、MongoDBのマスター/スレーブの実験に同じMongoDBを使用しています。 操作手順は以下の通りです:
1を終了します。
今、以下を指定して、 --replSetオプションを使用してmongoDBを起動します。--replSetの基本的な语法形式は以下の通りです:
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
以下の例では、rs0という名前のMongoDBのサンプルを起動し、ポート番号が以下の通りです:27017
起動後、コマンドプロンプトを開き mongoDB サービスに接続します。
Mongoクライアントでコマンド rs.initiate() を使用して新しいリプリセットを起動します。
rs.conf() を使用してリプリセットの設定を確認できます
リプリセットの状態を確認するには rs.status() コマンドを使用します
複製セットのメンバーを追加するには、複数のサーバーを使用してmongoサービスを起動する必要があります。Mongoクライアントに移動し、rs.add()メソッドを使用して複製セットのメンバーを追加します。
>rs.add(HOST_NAME:PORT)
例えば、mongodが起動している名前が1.net、ポート番号が27017のMongoサービス。 クライアントコマンドウィンドウでrs.add()コマンドを使用して複製セットに追加します。以下のように命令します:
>rs.add("mongod1.net:27017") >
MongoDBでは、マスターノードを通じてのみMongoサービスを複製セットに追加できます。 現在実行中のMongoサービスがマスターノードであるかどうかを確認するには、コマンドdb.isMaster()を使用できます。
MongoDBの複製セットは一般的なマスター/スレーブとは異なります。マスター/スレーブではホストがダウンするとすべてのサービスが停止しますが、複製セットではホストがダウンした場合、コピがマスターノードを引き継ぎ、マスターノードとして動作し、ダウンする状況は発生しません。