MongoDBのコピー(レプリカセット)
MongoDBのレプリケーションは、複数のサーバー間でデータの同期のプロセスです。
コピーは、データの可用性を向上させるために複数のサーバー上でデータの冗長バックアップデータとストアのコピーを提供し、データのセキュリティを保証することができます。
コピーはまた、ハードウェア障害やサービスの中断からデータを回復することができます。
コピーとは何ですか?
- データセキュリティセーフガード
- データの高可用性(24 * 7)
- 災害復旧
- ダウンタイムのメンテナンスません(バックアップなど、インデックスを再構築し、圧縮)
- 分散データが読み出されます
MongoDBのレプリケーションの動作
MongoDBのレプリケーションは、少なくとも2つのノードが必要です。 プライマリノードの一つは、クライアント要求を処理する責任があり、残りはプライマリノードでデータを複製する責任ノードからのものです。
道と共通のMongoDBの各ノード:マスタ・スレーブ、マスターマルチスレーブ。
マスターノードから取得したすべての操作はoplogれているマスタレコードは、定期的にマスターノードとの整合性を確保するために、データから独自のデータのコピーに対してこれらの操作を実行した後、これらの操作をポーリングします。
MongoDBは以下に示された構造をレプリケート:
合計の上記構成は、全クライアントのマスターノードがデータを読み出すが、クライアントデータは、プライマリ・ノードに書き込まれたノードからのデータの整合性を保証するために、マスターノードとのデータ交換です。
レプリカセットの特徴:
- N個のクラスタノード
- 任意のノードがマスタノードとして使用することができ
- プライマリノード上のすべての書き込み操作
- 自動フェイルオーバー
- 自動復旧
MongoDBのレプリカセットの設定
このチュートリアルでは、以下の手順を実行して実験を行うのと同じマスタースレーブのMongoDBはMongoDBを使用します。
1.閉じるのMongoDBサーバが実行されています。
今度は、MongoDBの--replSetオプションを指定することで起動してみましょう。 次のように--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)
例
あなたはmongod1.netと呼ばれるグループ、モンゴサービスのポート番号27017を開始したとします。 次のようにレプリカセットに追加しrs.add()コマンドを使用して、クライアント・コマンド・ウィンドウでは、コマンドは次のとおりです。
>rs.add("mongod1.net:27017") >
あなたが唯一のノードをマスターできるのMongoDBが、サービスが現在のコマンドdb.isMasterを使用することができますMongoのプライマリノードが実行されているか否かが判断され、レプリカセットにMongoのサービスを追加します()。
ホストがダウンしているすべてのサービスが停止され、上下セットのホストレプリカた後、コピーがプライマリノードを引き継ぐマスターノードになり、ダウンタイムが表示されません後、私たちの共通マスタとスレーブで設定MongoDBのレプリカは、マスターと異なっています状況。