English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB コピーチェーン(複製セット)

MongoDB複製はデータを複数のサーバー間で同期するプロセスです。

複製はデータの冗余バックアップを提供し、複数のサーバー上にデータのコピーを保存することで、データの可用性を向上させます。 また、データの安全性も保証します。

また、ハードウェアの故障やサービス中断からデータを復旧することもできます。

複製とは何ですか?

  • データの安全性を保証します
  • データの高可用性 (24*7)
  • 災害復旧
  • 停止せずにメンテナンスが必要(バックアップ、インデックスの再構築、圧縮など)
  • 分散読み取りデータ

MongoDB複製の原理

mongodbの複製は少なくとも2ノードが必要です。そのうちの1つはマスターノードで、クライアントのリクエストを処理し、残りはサブノードで、マスターノード上のデータをコピーします。

mongodbの各ノードの一般的な組み合わせは、1マスター1サブ、1マスター複数サブです。

マスターノードはその上で実行されるすべての操作oplogを記録し、サブノードは定期的にマスターノードを巡回してこれらの操作を取得し、サブノードのデータコピーに対してこれらの操作を実行します。これにより、サブノードのデータがマスターノードと一致することを保証します。

MongoDBの複製構造図は以下の通りです:

以下の構造図では、クライアントがマスターノードからデータを読み取り、クライアントがマスターノードにデータを書き込む場合、 マスターノードとサブノードがデータの整合性を保証するためにデータの交換を行います。

リプリセットの特徴:

  • Nノードのクラスタ
  • どのノードもマスターノードとして使用できます
  • すべての書き込み操作はマスターノードで行われます
  • 自動故障遷移
  • 自動修復

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()コマンドの基本的な语法形式は以下の通りです:
>rs.add(HOST_NAME:PORT)

オンラインサンプル

例えば、mongodが起動している名前が1.net、ポート番号が27017のMongoサービス。 クライアントコマンドウィンドウでrs.add()コマンドを使用して複製セットに追加します。以下のように命令します:

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

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

MongoDBの複製セットは一般的なマスター/スレーブとは異なります。マスター/スレーブではホストがダウンするとすべてのサービスが停止しますが、複製セットではホストがダウンした場合、コピがマスターノードを引き継ぎ、マスターノードとして動作し、ダウンする状況は発生しません。