12.MongoDBのレプリカセット(ReplSet)クラスタ


1、レプリカセットは自動故障回復機能を持つ主従クラスタである.レプリカセットのうち少なくとも2つのノードレプリカセットのうちバックアップノードがデータバックアップまたはフェイルオーバのみを行うことを保証する.
2、主従クラスタとレプリカセットの最大の違いはレプリカセットに固定されていない「主ノード」である.クラスタ全体からプライマリノードが選択され、マウントされた後、残りのセカンダリノードから別のノードがプライマリノードとして選択されます.レプリカセットには常にアクティブポイント(primary)と1つ以上のバックアップノード(secondary)があります.
3、三つのノードを例に
ノード1:HOST:localhost:10001 Log File:D:mongodblogsode 1logs.txt Data File:D:mongodbdbsode 1ノード2:HOST:localhost:10002 Log File:D:mongodblogsode 2logs.txt Data File:D:mongodbdbsode 2ノード3:HOST:localhost:10003 Log File:D:mongodblogsode 3logs.txt           Data File:D:\mongodb\dbsode3
4、起動ノード
起動ノード1:
mongod --dbpath D:\mongodb\dbs
ode1 --logpath D:\mongodb\logs
ode1\logs.txt --logappend --port 10001 --replSet itcast/localhost:10002 --master

起動ノード2:
mongod --dbpath D:\mongodb\dbs
ode2 --logpath D:\mongodb\logs
ode2\logs.txt --logappend --port 10002 --replSet itcast/localhost:10001
        
起動ノード3:
mongod --dbpath D:\mongodb\dbs
ode3 --logpath D:\mongodb\logs
ode3\logs.txt --logappend --port 10003 --replSet itcast/localhost:10001,localhost:10002

5、初期化ノード(一度しか初期化できない):1つのノードを勝手に登録し、10001を例にとる
mongo localhost:10001/admin
db.runCommand({"replSetInitiate":{"_id":"itcast","members":[{"_id":1,"host":"localhost:10001","priority":3},{"_id":2,"host":"localhost:10002","priority":2},{"_id":3,"host":"localhost:10003","priority":1}]}}); 

# 
db.runCommand({
       <span style="font-family: Arial, Helvetica, sans-serif;">"replSetInitiate":  { 
                      "_id":"itcast",
                      "members":   [    
                                       {     "_id":1,
                                              "host":"localhost:10001",
                                             "priority":3
                                       },
                                      {     "_id":2,
                                             "host":"localhost:10002",
                                             "priority":2
                                      },
                                      {     "_id":3,
                                            "host":"localhost:10003",
                                             "priority":1
                                       }
                                           ]
              }
});</span>

6、現在のメインライブラリを照会し、10002に登録する
 mongo localhost:10002
 db.$cmd.findOne ( {ismaster: 1 } );   # 

7、マスターノードにデータを追加して、ノードのデータから同期を実現するかどうかを確認する
7.1、メインノードにデータを追加する
 mongo localhost:10001
 > use itcast;
 > for ( var i=1;i<=10000;i++) {
       db.c1.insert( {  name:"123",age:i } );
   }
                  
7.2、ノードから情報の同期状況を見る
 mongo localhost:10002
 > use itcast;
 > show dbs;
   itcast;
  # , 

8、10001サービス、つまりメインライブラリを閉鎖し、10002にログインして現在のメインライブラリを検索する
                 
mongo localhost:10002
db.$cmd.findOne ( {ismaster: 1 } ); 
# ,