校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > MongoDB的主從復制及副本集的replSet配置教程

MongoDB的主從復制及副本集的replSet配置教程

熱門標簽:福州電銷機器人源代碼 智能電銷機器人銷售話術 徐州ai電銷機器人原理 企業智能外呼系統價格多少 兗州電話外呼營銷系統 高德地圖標注商戶位置 南京400電話怎樣辦理 機器人外呼系統軟件存在問題 沈陽營銷電銷機器人招商

復制
MongoDB的復制功能很重要,尤其是現在的存儲引擎還不支持單擊持久性。不僅可以用復制來應對故障切換,數據集成,還可以做讀擴展,熱備份或作為離線批處理的數據源。

1.主從復制
主從復制是MongoDB最常用的復制方式。可用于備份,故障恢復和讀擴展等。
基本就是搭建一個主節點和一個或多個從節點,每個從節點需要知道主節點的地址。運行mongod --master啟動主服務器。運行mongod --slave --source master_address啟動從服務器。
[root@test02 ~]# mongod --fork --dbpath /data/node2 --logpath /data/mongodb.log --port 10001 --logappend --master
從節點選擇不同的目錄和端口,并且用--source為從節點指明主節點的地址。
[root@test02 ~]# mongod --fork --dbpath /data/node3 --logpath /data/mongodb2.log --port 10002 --logappend --slave --source localhost:10001
所有的從節點都是從主節點復制信息,目前還不能從節點到從節點復制機制,原因是從節點沒有自己的oplog。
一個集群中從節點沒有明確的限制,但是多個節點對單點主機發起的查詢也是吃不消的,不超過12個節點的集群可以良好運轉。

1.1 選項
(1)--only
在從節點上指定只復制特定某個數據庫(默認復制所有數據庫)。
(2)--slavedelay
用在從節點上,當應用主節點的操作時增加延遲。這樣可以輕松設置延時從節點了,這樣的節點對于用戶無意間刪除重要數據或插入垃圾數據起到防護作用。通過延緩操作,可以有個恢復時間差。
(3)--fastsync
以主節點的數據快照為基礎啟動從節點。如果數據目錄一開始時主節點的數據快照,從節點用這個選項啟動要比做完整同步塊很多。
(4)--autoresync
如果主節點和從節點不同步,可以自動同步了。
(5)--oplogsuze
主節點oplog的大小(單位是MB)。

1.2 添加以及刪除源

cat >> /etc/hosts EOF
192.168.27.212 test02
192.168.27.213 test03
192.168.27.214 test01
EOF

啟動從節點時可以用--source指定主節點,也可以在shell中配置這個源。
[root@test02 ~]# mongod --fork --dbpath /data/node3 --logpath /data/mongodb.log --port 10003 --logappend --slave
將192.168.27.212:10001作為源插入到從節點上。

> db.sources.insert({ "host" : "192.168.27.212:10001"});

立即查詢會得到插入的文檔:

> use local
switched to db local
> db.sources.find();
{ "_id" : ObjectId("530be5049ab1ad709cfe66b7"), "host" : "test02:10001" 

當同步完成后,文檔更新:

> db.sources.find();
{ "_id" : ObjectId("530bf0ab058022d91574c79c"), "host" : "test02:10001", "source" : "main", "syncedTo" : Timestamp(1393291443, 1), "dbsNextPass" : { "foo" : true, "test" : true } }

2.副本集
副本集就是有自動故障恢復功能的主從集群。主從集群和副本集最為明顯的區別就是副本集沒有固定的主節點:整個集群會選舉出一個主節點,當其不能工作時,則變更到其它節點。副本集總會有一個活躍節點和一個或多個備份節點。
副本集最好的優點就是全自動化的。

mongod --fork --dbpath /data/node2 --logpath /data/mongodb.log --port 10001 --logappend --replSet myrepl/test03:10002
mongod --fork --dbpath /data/node3 --logpath /data/mongodb.log --port 10002 --logappend --replSet myrepl/test02:10001

副本集的亮點是自檢測功能:在其中指定單臺服務器后,MongoDB會自動搜索并連接其余的節點。
啟動幾臺服務器后,日志會告訴你副本集沒有初始化。需要在shell中初始化副本集。
連接任意一個服務器。初始化命令只執行一次:

> db.runCommand({"replSetInitiate" : {
... "_id" : "myrepl",
... "members" : [
... {
...  "_id" : 1,
...  "host" : "test02:10001"
... },
... {
...  "_id" : 2,
...  "host" : "test03:10002"
... }
... ]}})
{
  "startupStatus" : 4,
  "info" : "myrepl/test03:10002",
  "ok" : 0,
  "errmsg" : "all members and seeds must be reachable to initiate set"
}

(1)"_id" : "myrepl"     副本集的名稱
(2)"members" : [...]    副本集中的服務器列表,每個服務器至少兩個鍵。
(3)"_id" : N            每個服務器唯一的ID
(4)"host" : hostname    這個鍵指定服務器主機
或者:

config = {"_id" : "myrepl", 
   "members" : [
   {"_id" : 0, "host" : "test02:10001"},
   {"_id" : 1, "host" : "test03:10002"}
  ]}
rs.initiate(config);
rs.status();
myrepl:SECONDARY> rs.status();
{
  "set" : "myrepl",
  "date" : ISODate("2014-02-25T02:17:39Z"),
  "myState" : 2,
  "syncingTo" : "test03:10002",
  "members" : [
    {
     "_id" : 0,
     "name" : "test02:10001",
     "health" : 1,
     "state" : 2,
     "stateStr" : "SECONDARY",
     "uptime" : 968,
     "optime" : Timestamp(1393294457, 1),
     "optimeDate" : ISODate("2014-02-25T02:14:17Z"),
     "errmsg" : "syncing to: test03:10002",
     "self" : true
    },
    {
     "_id" : 1,
     "name" : "test03:10002",
     "health" : 1,
     "state" : 1,
     "stateStr" : "PRIMARY",
     "uptime" : 48,
     "optime" : Timestamp(1393294457, 1),
     "optimeDate" : ISODate("2014-02-25T02:14:17Z"),
     "lastHeartbeat" : ISODate("2014-02-25T02:17:38Z"),
     "lastHeartbeatRecv" : ISODate("2014-02-25T02:17:39Z"),
     "pingMs" : 1,
     "syncingTo" : "test02:10001"
    }
  ],
  "ok" : 1
}

如果這時候把primary節點停掉,在secondary節點執行寫操作,就會發生如下錯誤提示:

myrepl:SECONDARY> db.test.insert({name : "baobao"});
not master

如果只有2臺Mongodb,配置復制集群還不夠安全,需要1個外在角色調整各個節點的角色。
(1)standard:常規節點,存儲一份完整的數據副本,參與選舉投票,可能稱為活躍節點。
(2)passive:存儲完整的數據副本,參與投票,不能成為活躍節點。
(3)arbiter:仲裁者只負責投票,不接受復制數據,也不能成為活躍節點。
當Primary宕掉后,可以通過Arbiter在Secodarys中選舉一個Primary節點,避免單點故障。
可以增加一個仲裁節點,只負責仲裁,不做數據存儲。

mongod --fork --dbpath /data/node1 --logpath /data/mongodb.log --port 10003 --logappend --replSet myrepl/test02:10001,test03:10002
myrepl:PRIMARY> rs.addArb("test01:10003");
{ "ok" : 1 }

查看各節點的狀態:

myrepl:PRIMARY> rs.status();
{
  "set" : "myrepl",
  "date" : ISODate("2014-02-25T02:30:26Z"),
  "myState" : 1,
  "members" : [
    {
     "_id" : 0,
     "name" : "test02:10001",
     "health" : 1,
     "state" : 1,
     "stateStr" : "PRIMARY",
     "uptime" : 1735,
     "optime" : Timestamp(1393295409, 1),
     "optimeDate" : ISODate("2014-02-25T02:30:09Z"),
     "self" : true
    },
    {
     "_id" : 1,
     "name" : "test03:10002",
     "health" : 1,
     "state" : 2,
     "stateStr" : "SECONDARY",
     "uptime" : 204,
     "optime" : Timestamp(1393295409, 1),
     "optimeDate" : ISODate("2014-02-25T02:30:09Z"),
     "lastHeartbeat" : ISODate("2014-02-25T02:30:26Z"),
     "lastHeartbeatRecv" : ISODate("2014-02-25T02:30:24Z"),
     "pingMs" : 1,
     "syncingTo" : "test02:10001"
    },
    {
     "_id" : 2,
     "name" : "test01:10003",
     "health" : 1,
     "state" : 6,
     "stateStr" : "UNKNOWN",
     "uptime" : 17,
     "lastHeartbeat" : ISODate("2014-02-25T02:30:25Z"),
     "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
     "pingMs" : 1,
     "lastHeartbeatMessage" : "still initializing"
    }
  ],
  "ok" : 1
}

對比三個節點對自身節點性質的判斷:

myrepl:PRIMARY> db.isMaster();
{
  "setName" : "myrepl",
  "ismaster" : true,
  "secondary" : false,
  "hosts" : [
    "test03:10002",
    "test02:10001"
  ],
  "arbiters" : [
    "test01:10003"
  ],
  "primary" : "test03:10002",
  "me" : "test03:10002",
  "maxBsonObjectSize" : 16777216,
  "maxMessageSizeBytes" : 48000000,
  "localTime" : ISODate("2014-02-25T02:32:29.760Z"),
  "ok" : 1
}

myrepl:SECONDARY> db.isMaster();
{
  "setName" : "myrepl",
  "ismaster" : false,
  "secondary" : true,
  "hosts" : [
    "test02:10001",
    "test03:10002"
  ],
  "arbiters" : [
    "test01:10003"
  ],
  "primary" : "test03:10002",
  "me" : "test02:10001",
  "maxBsonObjectSize" : 16777216,
  "maxMessageSizeBytes" : 48000000,
  "localTime" : ISODate("2014-02-25T02:33:50.144Z"),
  "ok" : 1
}

myrepl:SECONDARY> db.isMaster();
{
  "setName" : "myrepl",
  "ismaster" : false,
  "secondary" : true,
  "hosts" : [
    "test02:10001",
    "test03:10002"
  ],
  "arbiters" : [
    "test01:10003"
  ],
  "primary" : "test03:10002",
  "me" : "test02:10001",
  "maxBsonObjectSize" : 16777216,
  "maxMessageSizeBytes" : 48000000,
  "localTime" : ISODate("2014-02-25T02:33:50.144Z"),
  "ok" : 1
}

在節點配置中修改priority鍵,來配置成標準節點或者被動節點。
默認優先級為1,可以是0~1000.
"arbiterOnly"鍵可以指定仲裁節點。
備份節點會從活躍節點抽取oplog,并執行操作,就像活躍備份系統中的備份服務器一樣。活躍節點也會寫操作到自己的本地oplog,這樣就能成為活躍節點了。oplog中的操作也包括嚴格遞增的序號。通過序號判斷數據的時效性。
2.1 故障切換和活躍節點的選舉
如果活躍節點壞了,其他節點會選一個新的活躍節點。新的活躍節點由副本集中的大多數選舉出來。仲裁節點只負責投票,避免出現僵局。新的節點是優先級最高的節點。
活躍節點使用心跳來跟蹤集群中多少節點對其可見,如果不超過半數,則活躍節點自動降為備份節點。可以防止活躍節點一直不放權。
無論活躍節點何時變化,新活躍節點的數據被假定為系統的最新數據。其他節點的操作都會回滾,所有節點連接新的活躍節點后要重新同步。這些節點會查看自己的oplog,找出其中活躍節點沒有執行過的操作,然后向活躍節點請求這些操作影響的文檔的最新副本。
正在執行重新同步的節點被視為恢復中,在完成這個過程前,不能成為活躍節點候選者。
2.2 關于副本集replSet的配置我們文后會附帶詳細地講。

3.在從服務器上執行操作
從節點的主要作用是作為故障恢復機制,以防止主節點數據丟失或者停止服務。
可以在從節點做備份的數據源。也可以用來擴展讀取性能,或者進行數據處理。
3.1 讀擴展
用MongoDB擴展讀取的一種方式就是將查詢放在從節點上,減輕主節點的負載。當負載是讀密集型時這樣非常不錯。當是寫密集型時,需要用自動分片來擴展。
使用從節點來擴展MongoDB的讀取有個要點,就是數據復制并不同步,就是在主節點插入或更新數據口,有片刻從節點的數據不是最新的。
擴展讀取需要打開一個特殊選項slaveOkey,告訴從服務器是否可以處理請求。
如果直接在secondary上操作,會發生如下錯誤:

myrepl:SECONDARY> db.test.find();
error: { "$err" : "not master and slaveOk=false", "code" : 13435 }

需要告知Mongodb集群,從哪臺機器上進行讀操作:

myrepl:SECONDARY> rs.slaveOk();
myrepl:SECONDARY> db.test.find();
{ "_id" : ObjectId("530bfc79eee2c2ce39f9cd95"), "name" : "caoqing" }
{ "_id" : ObjectId("530bfd8f3627cb16c15dcb32"), "name" : "xiaobao" }

3.2 用從節點做數據處理
從節點的另外一個服務就是作為一種機制來減輕密集型處理的負載,或作為聚合,避免影響主節點的性能。用--master啟動一個普通的從節點,同時使用--master和--slave矛盾。這意味著如果能對從節點進行寫入,像平常一樣查詢,就把它作為一個主節點。從節點還是會不斷的從主節點復制數據。這樣就可以對從節點執行阻塞操作而不影響主節點的性能。
從節點第一次啟動時不能有正在復制的數據庫,如果有,數據庫就不能完成同步,只能更新。
用這種技術要保證不能對正在復制主節點數據的從節點上的數據庫執行寫入。從節點不能恢復這些操作,就不能正確的映射主節點。

4.工作原理
MongoDB的復制至少需要兩臺服務器或者節點,其中一個主節點,負責處理客戶端請求,其他的都是從節點,負責映射主節點的數據。主節點記錄在其上的所有操作。
從節點定期輪詢主節點獲取這些操作,然后對數據副本執行這些操作。由于和主節點執行了相同的操作,從節點就能保持和主節點的數據同步。
4.1 oplog
主節點的操作記錄成為polog(operation log)。oplog存儲在一個特殊的數據庫里,成為local。oplog就在其中的oplog.$main集合里面。oplog的每個文檔都代表主節點執行的一個操作。

myrepl:PRIMARY> db.oplog.$main.help();

查看oplog的內容:

myrepl:PRIMARY> use local;
switched to db local
myrepl:PRIMARY> show collections;
me
oplog.rs
replset.minvalid
slaves
startup_log
system.indexes
system.replset
myrepl:PRIMARY> db.oplog.rs.find();
{ "ts" : Timestamp(1393294283, 1), "h" : NumberLong(0), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "initiating set" } }
{ "ts" : Timestamp(1393294457, 1), "h" : NumberLong("-8949844291534979055"), "v" : 2, "op" : "i", "ns" : "test.test", "o" : { "_id" : ObjectId("530bfc79eee2c2ce39f9cd95"), "name" : "caoqing" } }
{ "ts" : Timestamp(1393294735, 1), "h" : NumberLong("677282438107403253"), "v" : 2, "op" : "i", "ns" : "test.test", "o" : { "_id" : ObjectId("530bfd8f3627cb16c15dcb32"), "name" : "xiaobao" } }
{ "ts" : Timestamp(1393295409, 1), "h" : NumberLong("5171944912929102944"), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "Reconfig set", "version" : 2 } }
myrepl:PRIMARY> 

文檔包含的鍵如下:
(1)ts 操作的時間戳。時間戳是一種內部類型,用于跟蹤操作執行的時間。有4字節的時間戳和4字節的遞增計數器構成。
(2)op 操作類型,只有1字節代碼。
(3)ns 執行操作的命名空間。
(4)o  進一步指定要執行操作的文檔。
oplog只記錄改變數據庫狀態的操作。oplog只是作為從節點和主節點保持數據同步的機制。
存儲在oplog里的操作不是完全和主節點的操作一模一樣的。這些操作在存儲之前先做等冪變換,這些操作可以在從服務器端多次執行,只要順序是對的,就不會有問題。
oplog在固定集合中,不能保證oplog不超過預先設定的大小。需要在創建mongodb服務時指定--oplogSize,參數指定oplog的大小。
一般64bit-linux,分配5%的剩余空間,單位為MB。
4.2 同步
從節點第一次啟動時,會對主節點數據進行完整的同步。從節點復制主節點上的每一個數據,耗費資源大。同步完成后,從節點查詢主節點的oplog,并執行這些操作,保證數據是最新的。
如果從節點的操作被主節點落下太遠了,從節點就跟不上同步了,從節點發生宕機或者疲于應付讀取時,就會出現這種情況,也會在執行完完整同步后出現這種情況,因為oplog可能已經回滾一圈了。
從節點跟不上同步后,復制就會停下,從節點需要重新做完整的同步。可以用{"resync" : 1}命令手動執行同步,也可以在啟動從節點是使用--autoresync選項讓其自動同步。重新同步代價高昂,盡量避免,方法就是配置足夠大的oplog。
4.3 復制狀態和本地數據庫
本地數據庫用來存放所有內部復制狀態,主節點和從節點都有。本地數據就是local,其內容不會被復制。可以確保一盒MongoDB數據庫只有一個本地數據庫。
本地數據庫不限于存放MongoDB的內部狀態。如果有不想復制的文檔,也可以放在本地數據庫的集合里。
主節點上的復制狀態還包括從節點上的列表。這個列表存放在slaves集合中:

myrepl:PRIMARY> db.slaves.find();
{ "_id" : ObjectId("530bfbdc911eb0ac3bf2aa8b"), "config" : { "_id" : 1, "host" : "test03:10002" }, "ns" : "local.oplog.rs", "syncedTo" : Timestamp(1393295409, 1) }

從節點也在本地數據庫中存放狀態。在me集合中存放從節點的唯一標識符,在sources集合中存放源或節點的列表。

myrepl:SECONDARY> db.me.find();
{ "_id" : ObjectId("530bfbdc911eb0ac3bf2aa8b"), "host" : "test03" }

主節點和從節點都跟蹤從節點的更新狀況,這個是通過存放在"syncedTO"中的時間戳來完成的。
4.4 阻塞復制
開發者可以使用getLastrror的'w'參數來確保數據的同步性。運行getLastError會進入阻塞狀態,直到N個服務器復制了最新的寫入操作為止。
檢查本連接的上一次數據庫操作的錯誤。

myrepl:PRIMARY> db.runCommand("getlasterror")
{
  "n" : 0,
  "lastOp" : Timestamp(0, 0),
  "connectionId" : 3525,
  "err" : null,
  "ok" : 1
}

指定"w"選項后,可以使用"wtimeout"選項,表示以毫秒為單位的超時。
阻塞復制會導致寫操作明顯變慢,尤其是"w"的值比較大時。

5.管理
5.1 管理
MongoDB包含很多有用的管理工具,用以查看復制的狀態。
通過

db.printReplicationInfo()

命令查看oplog狀態。

myrepl:PRIMARY> db.printReplicationInfo();
configured oplog size: 997.7892578125001MB
log length start to end: 1126secs (0.31hrs)
oplog first event time: Tue Feb 25 2014 10:11:23 GMT+0800 (CST)
oplog last event time: Tue Feb 25 2014 10:30:09 GMT+0800 (CST)
now:      Wed Feb 26 2014 02:07:23 GMT+0800 (CST)

輸出信息包括oplog日志的大小,操作日志記錄的起始時間。
查看從庫同步狀態。

myrepl:PRIMARY> db.printSlaveReplicationInfo();
source: test03:10002
   syncedTo: Tue Feb 25 2014 10:30:09 GMT+0800 (CST)
     = 56533 secs ago (15.7hrs)
source: test01:10003
   no replication info, yet. State: ARBITER

輸出信息包括從庫的主機名,port信息等。
5.2 變更oplog的大小
如果發現oplog大小不合適,最簡單的方法就是停掉主節點,刪除local數據庫的文件,用心的設置重新啟動。

# rm -rf /data/node2/local*

為大型的oplog預分配空間非常耗費時間,且可能導致主節點停機時間增加,盡可能的手動預分配數據文件。
5.3 復制的認證問題
如果在復制中使用了認證,還需要做些配置,使得從節點可以訪問俄主節點的數據。在主節點和從節點都需要在本地數據庫增加用戶,每個節點的用戶名和口令相同。
從節點連接到主節點是,會用存儲在local.system.users中的用戶認證。最先嘗試"repl"用戶,如果沒有,則用local.system.users中的第一個可用用戶。

PS:副本集replSet具體配置
1.MongoDB:創建Replica Set
1.1 分別啟動兩臺mongodb數據庫

mongod --fork --dbpath /data/node2 --logpath /data/mongodb.log --port 10001 --logappend --replSet myrepl/test03:10002
mongod --fork --dbpath /data/node3 --logpath /data/mongodb.log --port 10002 --logappend --replSet myrepl/test02:10001

1.2 初始化副本集

config = {"_id" : "myrepl", 
   "members" : [
   {"_id" : 0, "host" : "test02:10001"},
   {"_id" : 1, "host" : "test03:10002"}
  ]}
rs.initiate(config);
rs.status();
myrepl:SECONDARY> rs.status();
{
  "set" : "myrepl",
  "date" : ISODate("2014-02-25T02:17:39Z"),
  "myState" : 2,
  "syncingTo" : "test03:10002",
  "members" : [
    {
     "_id" : 0,
     "name" : "test02:10001",
     "health" : 1,
     "state" : 2,
     "stateStr" : "SECONDARY",
     "uptime" : 968,
     "optime" : Timestamp(1393294457, 1),
     "optimeDate" : ISODate("2014-02-25T02:14:17Z"),
     "errmsg" : "syncing to: test03:10002",
     "self" : true
    },
    {
     "_id" : 1,
     "name" : "test03:10002",
     "health" : 1,
     "state" : 1,
     "stateStr" : "PRIMARY",
     "uptime" : 48,
     "optime" : Timestamp(1393294457, 1),
     "optimeDate" : ISODate("2014-02-25T02:14:17Z"),
     "lastHeartbeat" : ISODate("2014-02-25T02:17:38Z"),
     "lastHeartbeatRecv" : ISODate("2014-02-25T02:17:39Z"),
     "pingMs" : 1,
     "syncingTo" : "test02:10001"
    }
  ],
  "ok" : 1
}

1.3 增加一個仲裁節點,只負責仲裁,不做數據存儲。

mongod --fork --dbpath /data/node1 --logpath /data/mongodb.log --port 10003 --logappend --replSet myrepl/test02:10001,test03:10002
myrepl:PRIMARY> rs.addArb("test01:10003");
{ "ok" : 1 }

2 MongoDB:Replica Set 增加節點
2.1 現有環境:

myrepl:PRIMARY> rs.conf();
{
  "_id" : "myrepl",
  "version" : 2,
  "members" : [
    {
      "_id" : 0,
      "host" : "test02:10001"
    },
    {
      "_id" : 1,
      "host" : "test03:10002"
    },
    {
      "_id" : 2,
      "host" : "test01:10003",
      "arbiterOnly" : true
    }
  ]
}

現有三個節點,兩臺standard節點,一臺arbiter節點。
2.2 增加節點
2.2.1 創建數據目錄和日志文件:

mkdir -p /data/node/
touch /data/mongodb.log

2.2.2 安裝mongodb:

tar zxf mongodb-linux-x86_64-2.4.9.tgz 
mv mongodb-linux-x86_64-2.4.9 /opt/mongodb
echo "export PATH=$PATH:/opt/mongodb/bin" >>/etc/profile
source /etc/profile
mongod --config ~/.mongodb.conf

2.2.3 創建新從節點配置文件:

cat >> ~/.mongodb.conf EOF
fork = ture
port = 10005
dbpath = /data/node
logpath = /data/mongodb.log
logappend = true
replSet = myrepl
EOF

2.2.4 更改節點信息
cat /etc/sysconfig/network
cat >> /etc/hosts  EOF 
192.168.27.214 test01 
192.168.27.212 test02 
192.168.27.213 test03
192.168.27.215 test04
192.168.27.216 test05
EOF

2.2.5 判斷節點是否是主節點
myrepl:PRIMARY> rs.isMaster();
{
  "setName" : "myrepl",
  "ismaster" : true,
  "secondary" : false,
  "hosts" : [
    "test02:10001",
    "test03:10002"
  ],
  "arbiters" : [
    "test01:10003"
  ],
  "primary" : "test02:10001",
  "me" : "test02:10001",
  "maxBsonObjectSize" : 16777216,
  "maxMessageSizeBytes" : 48000000,
  "localTime" : ISODate("2014-02-25T19:23:22.286Z"),
  "ok" : 1
}

2.2.6 增加新從節點到replSet

myrepl:PRIMARY> rs.add("192.168.27.215:10004");
# 增加arbiter節點的方法:myrepl:PRIMARY> rs.addArb("test01:10003");

2.2.7 再次查看Replica Set狀態信息

myrepl:PRIMARY> rs.conf();
{
  "_id" : "myrepl",
  "version" : 3,
  "members" : [
    {
      "_id" : 0,
      "host" : "test02:10001"
    },
    {
      "_id" : 1,
      "host" : "test03:10002"
    },
    {
      "_id" : 2,
      "host" : "test01:10003",
      "arbiterOnly" : true
    },
    {
      "_id" : 3,
      "host" : "192.168.27.215:10004"
    }
  ]
}

3. 測試
3.1 主節點插入數據
myrepl:PRIMARY> db.test.insert({"name" : "xiaohuan", "age" : 30});
3.2 從節點查詢數據
myrepl:SECONDARY> rs.slaveOk();
myrepl:SECONDARY> db.test.find();
{ "_id" : ObjectId("530bfc79eee2c2ce39f9cd95"), "name" : "caoqing" }
{ "_id" : ObjectId("530bfd8f3627cb16c15dcb32"), "name" : "xiaobao" }
{ "_id" : ObjectId("530ceed64770e9f00a279900"), "name" : "xiaohuan", "age" : 30 }

4. 把standard節點變為passive節點

myrepl:PRIMARY> cfg = rs.conf()
{
  "_id" : "myrepl",
  "version" : 3,
  "members" : [
    {
      "_id" : 0,
      "host" : "test02:10001"
    },
    {
      "_id" : 1,
      "host" : "test03:10002"
    },
    {
      "_id" : 2,
      "host" : "test01:10003",
      "arbiterOnly" : true
    },
    {
      "_id" : 3,
      "host" : "192.168.27.215:10004"
    }
  ]
}
myrepl:PRIMARY> cfg.members[3].priority = 0;

myrepl:PRIMARY> rs.reconfig(cfg);
myrepl:PRIMARY> rs.conf();
{
  "_id" : "myrepl",
  "version" : 4,
  "members" : [
    {
      "_id" : 0,
      "host" : "test02:10001"
    },
    {
      "_id" : 1,
      "host" : "test03:10002"
    },
    {
      "_id" : 2,
      "host" : "test01:10003",
      "arbiterOnly" : true
    },
    {
      "_id" : 3,
      "host" : "192.168.27.215:10004",
      "priority" : 0
    }
  ]
}

您可能感興趣的文章:
  • Mongodb 副本集搭建問題總結及解決辦法
  • Mongodb3.0.5 副本集搭建及spring和java連接副本集配置詳細介紹
  • mongodb3.4集群搭建實戰之高可用的分片+副本集
  • 詳解MongoDB中用sharding將副本集分配至服務器集群的方法
  • Mongodb副本集和分片示例詳解
  • CentOS 6.4創建Mongodb副本集
  • MongoDB副本集丟失數據的測試實例教程
  • MongoDB 復制(副本集)學習筆記
  • mongodb 4.0副本集搭建的全過程

標簽:本溪 鶴崗 邯鄲 昭通 丹東 景德鎮 大理 吉安

巨人網絡通訊聲明:本文標題《MongoDB的主從復制及副本集的replSet配置教程》,本文關鍵詞  MongoDB,的,主從,復制,及,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MongoDB的主從復制及副本集的replSet配置教程》相關的同類信息!
  • 本頁收集關于MongoDB的主從復制及副本集的replSet配置教程的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美一区二区视频在线观看2020| youjizz国产精品| 免费在线看成人av| 另类中文字幕网| 国产精品影视网| 国产乱码一区二区三区| 波多野结衣中文字幕一区二区三区| 成人午夜碰碰视频| 色噜噜狠狠一区二区三区果冻| 欧美系列一区二区| 久久久久久亚洲综合影院红桃| 国产精品嫩草影院com| 亚洲成人自拍一区| 国产精品中文有码| 欧美精品乱人伦久久久久久| 精品国一区二区三区| 久久蜜桃一区二区| 国产精品麻豆99久久久久久| 亚洲.国产.中文慕字在线| 国产一区二区久久| 在线不卡一区二区| 最近日韩中文字幕| 国产九色精品成人porny| 3atv在线一区二区三区| 中文字幕一区二区三区乱码在线| 免费高清不卡av| 日本精品一级二级| 综合av第一页| 成人18精品视频| 精品国产不卡一区二区三区| 亚洲成av人片在www色猫咪| 99国产精品久久久久久久久久久| 欧美一级电影网站| 天堂一区二区在线| 欧美日韩中字一区| 亚洲自拍偷拍av| 欧美三级韩国三级日本一级| 亚洲欧美区自拍先锋| 在线亚洲高清视频| 午夜久久电影网| 欧美一区二区久久| 久久99精品国产.久久久久| 日韩久久久久久| 国产精品资源在线观看| 亚洲国产精品精华液ab| 91年精品国产| 午夜欧美在线一二页| 欧美精品在线观看一区二区| 亚洲国产精品一区二区久久 | 国产河南妇女毛片精品久久久| 欧美哺乳videos| 北条麻妃一区二区三区| 亚洲国产一区二区视频| 欧美欧美欧美欧美| 免播放器亚洲一区| 7878成人国产在线观看| 性久久久久久久久久久久| 亚洲精品在线观| 在线免费视频一区二区| 国产福利一区二区三区| 亚洲最新视频在线观看| 国产亚洲成av人在线观看导航 | 久久精品欧美日韩| 欧美私人免费视频| 国产乱人伦偷精品视频不卡| 日韩理论电影院| 国产精品美女久久久久久2018| 欧美日韩高清一区二区三区| 国产suv精品一区二区6| 日韩国产精品久久| 亚洲男人天堂av| 国产精品成人网| 中文字幕不卡三区| 中文字幕精品—区二区四季| 日韩一区二区视频在线观看| 精品视频在线视频| 91蜜桃传媒精品久久久一区二区| 国产美女在线观看一区| 精品一区二区在线播放| 麻豆专区一区二区三区四区五区| 亚洲精品国产精品乱码不99| 亚洲日本在线看| 亚洲六月丁香色婷婷综合久久 | 91丝袜呻吟高潮美腿白嫩在线观看| 韩国精品主播一区二区在线观看| 爽好多水快深点欧美视频| 亚洲精品成人a在线观看| 亚洲精品精品亚洲| 亚洲v中文字幕| 久久精品国产99| 狠狠色狠狠色综合系列| 高清不卡在线观看| 91农村精品一区二区在线| 欧美性受xxxx黑人xyx性爽| 欧美日韩三级一区二区| 精品电影一区二区三区| 91麻豆精品国产自产在线| 国产成人av电影在线播放| 国产精品一区二区三区网站| 欧美性猛交xxxx乱大交退制版| 色综合 综合色| 3d成人h动漫网站入口| 久久品道一品道久久精品| 亚洲欧美在线视频| 日韩电影免费一区| 国产美女一区二区| 色激情天天射综合网| 欧美一级高清大全免费观看| 精品国产三级电影在线观看| 亚洲天堂免费看| 国内外成人在线视频| 一本色道久久综合亚洲91| 久久精品亚洲精品国产欧美| 亚洲亚洲精品在线观看| 狠狠久久亚洲欧美| 色悠悠久久综合| 久久久久国产免费免费| 奇米色777欧美一区二区| 在线观看视频一区二区| 中文字幕一区免费在线观看| 奇米888四色在线精品| 91国产免费看| 亚洲欧洲另类国产综合| 播五月开心婷婷综合| 久久久久久久一区| 日本欧美韩国一区三区| 欧美夫妻性生活| 成人免费小视频| 91精品福利在线| 亚洲美女少妇撒尿| 国产xxx精品视频大全| 日韩精品一区二区三区中文精品| 亚洲综合激情小说| 91麻豆产精品久久久久久| 成人欧美一区二区三区小说| 欧美三级在线看| 久久国产日韩欧美精品| 欧美精品一区二区三区在线| 国产福利不卡视频| 日韩毛片视频在线看| 欧美午夜理伦三级在线观看| 美女网站视频久久| 国产亚洲精品超碰| 在线免费观看日韩欧美| 精品综合久久久久久8888| 久久综合色播五月| 91在线观看地址| 婷婷中文字幕综合| 久久久亚洲综合| 色综合色狠狠综合色| 视频精品一区二区| 中文字幕亚洲欧美在线不卡| 91精品在线免费观看| 丰满亚洲少妇av| 久久se精品一区精品二区| 亚洲欧美一区二区久久| 精品日韩欧美一区二区| 91网站黄www| 国产精品一区久久久久| 亚洲成人在线免费| 国产精品女人毛片| 精品国产91亚洲一区二区三区婷婷 | 日韩欧美国产精品| 91色视频在线| 成人一区二区在线观看| 日韩av电影免费观看高清完整版| 国产情人综合久久777777| 日韩视频免费观看高清完整版| 91在线观看一区二区| 国产精品一二三四| 青草国产精品久久久久久| 亚洲老司机在线| 国产精品日产欧美久久久久| 久久网站热最新地址| 日韩美女主播在线视频一区二区三区 | 美女国产一区二区三区| 另类人妖一区二区av| 国产成人在线免费| 在线精品亚洲一区二区不卡| 欧美日韩国产综合一区二区| 欧美高清视频www夜色资源网| 久久久久久一二三区| 国产精品久久久久久久久免费丝袜| 久久色中文字幕| 亚洲婷婷综合久久一本伊一区| 日韩一区精品视频| 国产福利不卡视频| 欧美一区二区在线播放| 亚洲一线二线三线视频| 国产乱子伦一区二区三区国色天香| av不卡一区二区三区| 欧美成人精品高清在线播放| 国产精品欧美精品| 亚洲欧美韩国综合色| 国产黄色成人av| 5月丁香婷婷综合| 亚洲高清三级视频| 91性感美女视频| 国产欧美一区二区三区沐欲| 夜夜嗨av一区二区三区中文字幕 |