[MongoDB]Replica(副本集)

  • 1746
  • 0
  • 2014-07-09

[MongoDB]Replica(副本集)

Replica

  • 將Database的資料複製於多個 Database。
  • 當其中使用的Database故障時,則自動切換到其中正常的Database,不用特別設定故障要切到哪個Database。
  • 跟主從複製的差別在於,主從需要對每個Database設定Master跟Slave的關係。

2014-04-23_1

 

情境

  • 定義1個Database組合成3個Replica

 

實作操作如下

 

1.建立3個Mongod

  • 語法解析 mongod.exe --dbpath C:\replicaDataA1 --Port 新建的DBPort   --replSet 自定義副本集名稱(同一個的副本集都要一樣名稱)/localhost:複製至目標的Port
  • 命令語法如下
       1: $mongod.exe --dbpath C:\replicaDataA1 --port 10000 --replSet 
       2: blort/localhost:10001
     
       1: $mongod.exe --dbpath C:\replicaDataA2 --port 10001 --replSet 
       2: blort/localhost:10000
     
       1: $mongod.exe --dbpath C:\replicaDataA3 --port 10002 --replSet 
       2: blort/localhost:10001
  • 有發現 第三個 語法有異樣嗎,明明 要複製到port 10000、10001,但這邊卻只設定10001。因為10001已經有設定置10000,所以只須Replica到其中一個就可以了。
  • 以上三個語法跑完再去檢查錯誤即可。因為是相互連線的,所以當連線尚未建立完成會出現 無法連線至XXX的問題。

 

2.啟動Replica

  • 語法解析
       1: >db.runCommand( 
       2:     { 
       3:         "replSetInitiate": 
       4:          {
       5:              "_id":"副本集名稱","members":
       6:                                     [
       7:                                          {
       8:                                               "_id":1,
       9:                                              "host":"服務器的地址:Port"
      10:                                           }
      11:                                      ]
      12:                             } 
      13:             }
      14: )
  • 命令語法如下
       1: >db.runCommand( 
       2:     { 
       3:     "replSetInitiate": 
       4:          {
       5:          "_id":"blort","members":
       6:              [
       7:                 {
       8:                 "_id":1,
       9:                 "host":"localhost:10000"
      10:                  },
      11:                 {
      12:                 "_id":2,
      13:                 "host":"localhost:10001"
      14:                 },
      15:                 {
      16:                 "_id":3,
      17:                 "host":"localhost:10002"
      18:                 }
      19:              ]
      20:          }
      21:       }
      22: )
  • 若是成功將顯示以下訊息
       1: {
       2: "info":"Config now saved locally.Should come online in about a minute.",
       3: "ok":true
       4: }

 

 

By-藍小伙