1. 概述
主從復(fù)制作用:數(shù)據(jù)備份瞻惋、讀寫分離
雙機(jī)熱備份:部署兩個節(jié)點(diǎn)的MongoDB服務(wù)小染,配置一主一從,主節(jié)點(diǎn)添加數(shù)據(jù)箱舞,將自動備份到從節(jié)點(diǎn)上面遍坟,保證主機(jī)宕機(jī)后數(shù)據(jù)不丟失,同時可以繼續(xù)提供數(shù)據(jù)讀取服務(wù)(主服務(wù)掛掉晴股,從服務(wù)將無法在進(jìn)行寫入數(shù)據(jù)愿伴,只能提供數(shù)據(jù)讀取服務(wù))
一主多從:部署多個節(jié)點(diǎn)的MongoDB服務(wù),配置一主多從电湘,數(shù)據(jù)也會自動備份到所有從節(jié)點(diǎn)上面隔节,保證主機(jī)宕機(jī)后數(shù)據(jù)不丟失,同時可以根據(jù)從節(jié)點(diǎn)的優(yōu)先級進(jìn)行選取新的主節(jié)點(diǎn)寂呛,繼續(xù)提供讀寫服務(wù)(主從關(guān)系跟服務(wù)設(shè)置的優(yōu)先級有直接關(guān)系 優(yōu)先級參數(shù):priority 數(shù)字越大優(yōu)先級越高)
2. 準(zhǔn)備服務(wù)-雙機(jī)熱備份(兩個節(jié)點(diǎn))
使用上面的方式怎诫,在不同服務(wù)器上安裝并啟動MongoDB服務(wù)
3. 修改配置
將啟動時使用的配置文件mongodb.conf中添加下面的副文本集名稱配置,將權(quán)限控制參數(shù)改為false(auth=false)贷痪,然后將服務(wù)進(jìn)行重新啟動即可(testrs是自定義的副本集名稱)
#使用此設(shè)置來配置復(fù)制副本集幻妓。指定一個副本集名稱作為參數(shù),所有主機(jī)都必須有相同的名稱作為同一個副本集
replSet=testrs
然后啟動每個服務(wù)的客戶端查看當(dāng)前節(jié)點(diǎn)為主節(jié)點(diǎn)還是從節(jié)點(diǎn)劫拢;
1). 如果服務(wù)部署在不同服務(wù)器上肉津,直接啟動/bin目錄下的mongo即可 命令:./ mongo
2). 如果服務(wù)部署在同一臺服務(wù)器上,使用不同端口及配置文件進(jìn)行啟動的舱沧,啟動客戶端使用該命令 命令:./mongo 127.0.0.1:27018/
4. 測試
經(jīng)過上面的一系列操作后妹沙,主從配置就完成了,接下來可以進(jìn)行數(shù)據(jù)同步測試
第一步:在主庫上面切換到admin狗唉,然后進(jìn)行添加數(shù)據(jù)(命令:db.testdb1.insert([{"name":"zs"}]))
在從庫上查詢該數(shù)據(jù)(命令:db.testdb1.find({name:"zs"})),會出現(xiàn)下面如圖的錯誤涡真,因?yàn)閺膸鞗]有查詢數(shù)據(jù)權(quán)限分俯,所以需要設(shè)置查詢權(quán)限
設(shè)置從庫查詢權(quán)限肾筐,使用命令:rs.secondaryOk()
然后在使用查詢命令進(jìn)行查詢(命令:db.testdb1.find({name:"zs"}))就會看到如下圖的查詢結(jié)果:
如上圖所示,數(shù)據(jù)已經(jīng)同步到從庫上面了缸剪,這樣雙機(jī)熱備份就已經(jīng)實(shí)現(xiàn)了吗铐,上面的情況不包含權(quán)限控制
5. 權(quán)限控制
上面的情況已經(jīng)完成了MongoDB的主從復(fù)制功能,但是我們把權(quán)限沒有開放杏节,啟動時使用的配置中auth配置的值為false唬渗,說明沒有添加權(quán)限,接下來就開放一下權(quán)限配置奋渔;
首先需要主從之間通信的一個keyFile文件镊逝,根據(jù)官網(wǎng)提供的說明,這個keyfile是可以任意內(nèi)容的嫉鲸,只要保證所有集群中的機(jī)器都擁有同樣的文件即可撑蒜。
我這里將keyFile文件放到了MongoDB的bin目錄下了,使用openssl rand -base64 1024 > /usr/local/mongodb-master/bin/mongodb.key 命令生成玄渗;
然后將mongodb.key文件復(fù)制到每臺從服務(wù)上面座菠,在每臺服務(wù)的啟動文件上添加 keyFile=/usr/local/mongodb-master/keyfile/mongodb.key 配置項(xiàng) ,然后將auth屬性值改為true藤树,這樣就完成了權(quán)限配置
重啟主從兩個節(jié)點(diǎn)浴滴,這樣主機(jī)添加的數(shù)據(jù),就會同步到從機(jī)上面了K甑觥I浴!
添加或刪除從節(jié)點(diǎn)參考文章:
https://blog.csdn.net/weixin_44839444/article/details/105666163