溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mongodb副本集指的是什么

發(fā)布時間:2020-08-01 09:42:20 來源:億速云 閱讀:333 作者:清晨 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)mongodb副本集指的是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、什么是MongoDB副本集?

副本集是一組mongod維護相同數(shù)據(jù)集的實例,它提供了數(shù)據(jù)的冗余備份,并在多個服務(wù)器上存儲數(shù)據(jù)副本,提高了數(shù)據(jù)的可用性, 并可以保證數(shù)據(jù)的安全性;還允許您從硬件故障和服務(wù)中斷中恢復(fù)數(shù)據(jù);實現(xiàn)自動故障轉(zhuǎn)移,還可以采用分布式方式讀取數(shù)據(jù)。

二、MongoDB副本集的原理?

mongodb的復(fù)制至少需要兩個節(jié)點。其中一個是主節(jié)點,負(fù)責(zé)處理客戶端請求,其余的都是從節(jié)點,負(fù)責(zé)復(fù)制主節(jié)點上的數(shù)據(jù)。mongodb各個節(jié)點常見的搭配方式為:一主一從、一主多從。

主節(jié)點記錄在其上的所有操作oplog,從節(jié)點定期輪詢主節(jié)點獲取這些操作,然后對自己的數(shù)據(jù)副本執(zhí)行這些操作,從而保證從節(jié)點的數(shù)據(jù)與主節(jié)點一致。

通過在不同數(shù)據(jù)庫服務(wù)器上提供多個數(shù)據(jù)副本,復(fù)制可提供一定級別的容錯功能,以防止丟失單個數(shù)據(jù)庫服務(wù)器。

三、MongoDB副本集同步?

1.克隆除本地數(shù)據(jù)庫之外的所有數(shù)據(jù)庫。要克隆mongod掃描每個源數(shù)據(jù)庫中的每個集合,并將所有數(shù)據(jù)插入到這些集合的自己的副本中。版本3.4中已更改:初始同步會在為每個集合復(fù)制文檔時構(gòu)建所有集合索引。在早期版本的MongoDB中,僅_id在此階段構(gòu)建索引。初始同步在數(shù)據(jù)復(fù)制期間提取新添加的oplog記錄。確保目標(biāo)成員在local 數(shù)據(jù)庫中有足夠的磁盤空間,以便在此數(shù)據(jù)復(fù)制階段的持續(xù)時間內(nèi)臨時存儲這些oplog記錄。

2.將所有更改應(yīng)用于數(shù)據(jù)集。使用源中的oplog,mongod更新其數(shù)據(jù)集以反映副本集的當(dāng)前狀態(tài)。

初始同步完成后,成員從轉(zhuǎn)換 STARTUP2為SECONDARY。

四、部署MongoDB副本集的注意事項

·如果可能,請使用邏輯DNS主機名而不是IP地址,尤其是在配置副本集成員或分片集群成員時。邏輯DNS主機名的使用避免了由于IP地址更改而導(dǎo)致的配置更改。

·IP綁定 3.6版本之后才默認(rèn)綁定地址為localhost,所以最好還是配置--bind-ip參數(shù),如若綁定的非本地計算機,請確保已保護您的群集免受未經(jīng)授權(quán)的訪問,最好考慮啟用身份驗證和 強化網(wǎng)絡(luò)基礎(chǔ)架構(gòu)。

·確保網(wǎng)絡(luò)流量可以在集合的所有成員和網(wǎng)絡(luò)中的所有客戶端之間安全地傳遞。

1.建立虛擬專用網(wǎng)絡(luò)。確保您的網(wǎng)絡(luò)拓?fù)渫ㄟ^局域網(wǎng)路由單個站點內(nèi)的成員之間的所有流量。

2.配置訪問控制以防止從未知客戶端到副本集的連接。

3.配置網(wǎng)絡(luò)和防火墻規(guī)則,以便僅在默認(rèn)的MongoDB端口上允許傳入和傳出的數(shù)據(jù)包,并且僅在部署中允許。

·最好部署具有已啟用訪問控制的副本集。

·備份數(shù)據(jù)庫在備份時會出現(xiàn)一定的延遲。

·啟動MongoDB 需以副本集模式啟動。

·備份數(shù)據(jù)庫必須設(shè)置votes 值為1才擁有選舉成為Primary服務(wù)器的可能。

五、MongoDB副本集的需要哪些資源配置?

一臺安裝好MongoDB 的服務(wù)器 192.168.1.1

或者

三臺安裝好MongoDB 的服務(wù)器 192.168.1.1 192.168.1.2 192.168.1.3

網(wǎng)絡(luò)處于可使用狀態(tài)

六、部署MongoDB副本集

1. 設(shè)置配置文件

通過 --replSet 和 --bind_ip 命令行選項指定副本集名稱和ip綁定

語法:mongod --replSet "rs0" -- bind_ip localhost,<hostname ( s )| ip address ( es ) >

或者使用配置文件指定 replica set name 和 ip addresses

systemLog
    path: /var/log/mongodb/mongodb.log
storage
    dbPath: /var/lib/mongo-res1
    journal: 
        enabled: true
replication:
   replSetName : rs0
net :
   bindIp : localhost,<hostname(s)| ip address(es)>

配置參數(shù)含義:

replSet:設(shè)置Replica Set的name,在各個配置文件中,其值必須相同。

dbpath:MongoDB用于存儲數(shù)據(jù)的目錄,默認(rèn)值是C:\data\db

bind_ip:指定ip

path:用于記錄mongod的日志數(shù)據(jù)

port:指定MongoDB監(jiān)聽的端口,默認(rèn)值是27017

然后要使用配置文件啟動MongoDB實例 ,使用 --config 選項指定配置文件的路徑。

mongod --config <path-to-config>

三個實例啟動完畢后,查看 ps -ef|grep mongo

mongodb副本集指的是什么

2.使用 mongoDB shell 連接到其中一個 mongod 實例

mongo --host 192.168.1.1 --port 27017

3.啟動副本集

使用 rs.initiate() 來指定副本集的所有成員

rs.initiate({
   _id : "rs0",
   members :[
      {  _id : 0 , host: "192.168.1.1:27017"},
      {  _id : 1 , host: "192.168.1.1:27019"},
      {  _id : 2 , host: "192.168.1.1:27019"} 
   ] 
})

mongodb副本集指的是什么

4.查看副本集配置

rs.conf()

5.查看副本集主副本信息

rs.status()

七、應(yīng)用MongoDB副本集

嘗試關(guān)閉主節(jié)點

db.shutdownServer();

或者使用kill 端口的方式

mongodb副本集指的是什么

然后再查看剩下的兩個副節(jié)點是否有一個成為新的節(jié)點

stateStr : "PRIMARY" 就是主節(jié)點

關(guān)于mongodb副本集指的是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI