新聞中心

為什么使用復(fù)制
下面列舉了幾個(gè)使用復(fù)制的好處:
- 確保您數(shù)據(jù)的安全;
- 保障數(shù)據(jù)的高可用性;
- 數(shù)據(jù)恢復(fù);
- 維護(hù)過(guò)程無(wú)需停機(jī)(例如備份、索引重建、壓縮);
- 分布式讀取數(shù)據(jù);
- 副本集對(duì)應(yīng)用程序是透明的。
復(fù)制的工作方式
MongoDB 通過(guò)使用副本集來(lái)實(shí)現(xiàn)復(fù)制。副本集是一組托管相同數(shù)據(jù)集的 mongod 實(shí)例。在副本中,一個(gè)節(jié)點(diǎn)是接收所有寫(xiě)操作的主節(jié)點(diǎn),其余的所有實(shí)例,例如第二實(shí)例,都將應(yīng)用來(lái)自第一個(gè)實(shí)例的操作,以便它們具有相同的數(shù)據(jù)集。副本集只能有一個(gè)主節(jié)點(diǎn)。
- 副本集是一組兩個(gè)或更多節(jié)點(diǎn)(通常最少需要 3 個(gè)節(jié)點(diǎn));
- 在副本集中,一個(gè)節(jié)點(diǎn)是主要節(jié)點(diǎn),其余節(jié)點(diǎn)是從節(jié)點(diǎn);
- 所有數(shù)據(jù)從主節(jié)點(diǎn)復(fù)制到從節(jié)點(diǎn);
- 在自動(dòng)故障轉(zhuǎn)移或維護(hù)時(shí),將為主節(jié)點(diǎn)建立選舉,并選舉一個(gè)新的主節(jié)點(diǎn);
- 恢復(fù)失敗的節(jié)點(diǎn)后,它再次加入副本集并用作輔助節(jié)點(diǎn)。
下圖展示了 MongoDB 復(fù)制的示意圖,其中客戶端應(yīng)用程序始終與主節(jié)點(diǎn)交互,然后主節(jié)點(diǎn)將數(shù)據(jù)復(fù)制到輔助節(jié)點(diǎn)。
圖:MongoDB復(fù)制示意圖
副本集功能:
- N 個(gè)節(jié)點(diǎn)的集群
- 任何一個(gè)節(jié)點(diǎn)都可以是主節(jié)點(diǎn)
- 所有寫(xiě)操作都在主節(jié)點(diǎn)上
- 自動(dòng)故障轉(zhuǎn)移
- 自動(dòng)恢復(fù)
- 初選協(xié)商一致選舉
設(shè)置副本集
接下來(lái)我們來(lái)看一下如何將獨(dú)立的 MongoDB 實(shí)例轉(zhuǎn)換為副本集。要轉(zhuǎn)換為副本集,需要按照以下幾個(gè)步驟操作:
- 關(guān)閉正在運(yùn)行的 MongoDB 服務(wù)器;
- 通過(guò)指定 --replSet 選項(xiàng)啟動(dòng) MongoDB 服務(wù)器,--replSet 的基本語(yǔ)法如下所示:
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
【示例】在 27017 端口上啟動(dòng)名為 rs0 的 mongod 實(shí)例:
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
現(xiàn)在啟動(dòng)命令提示符并連接到此 mongod 實(shí)例,在Mongo客戶端中,請(qǐng)使用 rs.initiate() 命令來(lái)啟動(dòng)新的副本集。要檢查副本集配置,請(qǐng)使用 rs.conf() 命令。要檢查副本集的狀態(tài),請(qǐng)使用 rs.status() 命令。
將成員添加到副本集
要將成員添加到副本集,需要在多臺(tái)計(jì)算機(jī)上啟動(dòng) mongod 實(shí)例。現(xiàn)在使用 rs.add() 命令來(lái)啟動(dòng)一個(gè) mongo 客戶端,rs.add() 命令的基本語(yǔ)法如下:
>rs.add(HOST_NAME:PORT)
【示例】假設(shè)您的 mongod 實(shí)例名稱為 mongod1.net,并且它運(yùn)行在 27017 端口上。要將此實(shí)例添加到副本集,需要在 Mongo 客戶端中使用 rs.add() 命令。
>rs.add("mongod1.net:27017")
僅當(dāng)連接到主??節(jié)點(diǎn)時(shí),才能將 mongod 實(shí)例添加到副本集。要檢查您是否連接到主服務(wù)器,可以在 mongo 客戶端中使用 db.isMaster() 命令。
分享題目:MongoDB復(fù)制(副本集)
本文URL:http://fisionsoft.com.cn/article/djhiheh.html


咨詢
建站咨詢
