您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(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
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"} ] })
4.查看副本集配置
rs.conf()
5.查看副本集主副本信息
rs.status()
七、應(yīng)用MongoDB副本集
嘗試關(guān)閉主節(jié)點
db.shutdownServer();
或者使用kill 端口的方式
然后再查看剩下的兩個副節(jié)點是否有一個成為新的節(jié)點
stateStr : "PRIMARY" 就是主節(jié)點
關(guān)于mongodb副本集指的是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(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)容。