MongoDB 副本集配置

一.什么是MongoDB副本集?

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

二.MongoDB副本集的原理?

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

主節(jié)點(diǎn)記錄在其上的所有操作oplog,從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲取這些操作,然后對(duì)自己的數(shù)據(jù)副本執(zhí)行這些操作,從而保證從節(jié)點(diǎn)的數(shù)據(jù)與主節(jié)點(diǎn)一致。
通過(guò)在不同數(shù)據(jù)庫(kù)服務(wù)器上提供多個(gè)數(shù)據(jù)副本,復(fù)制可提供一定級(jí)別的容錯(cuò)功能,以防止丟失單個(gè)數(shù)據(jù)庫(kù)服務(wù)器。

三.MongoDB副本集同步?

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

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

    初始同步完成后,成員從轉(zhuǎn)換 STARTUP2SECONDARY

四.部署MongoDB副本集的注意事項(xiàng)

  • 如果可能,請(qǐng)使用邏輯DNS主機(jī)名而不是IP地址,尤其是在配置副本集成員或分片集群成員時(shí)。邏輯DNS主機(jī)名的使用避免了由于IP地址更改而導(dǎo)致的配置更改。
  • 確保網(wǎng)絡(luò)流量可以在集合的所有成員和網(wǎng)絡(luò)中的所有客戶端之間安全地傳遞
    1.建立虛擬專用網(wǎng)絡(luò)。確保您的網(wǎng)絡(luò)拓?fù)渫ㄟ^(guò)局域網(wǎng)路由單個(gè)站點(diǎn)內(nèi)的成員之間的所有流量。
    2.配置訪問(wèn)控制以防止從未知客戶端到副本集的連接。
    3.配置網(wǎng)絡(luò)和防火墻規(guī)則,以便僅在默認(rèn)的MongoDB端口上允許傳入和傳出的數(shù)據(jù)包,并且僅在部署中允
  • 最好部署具有已啟用訪問(wèn)控制的副本集
  • 備份數(shù)據(jù)庫(kù)在備份時(shí)會(huì)出現(xiàn)一定的延遲
  • 啟動(dòng)MongoDB 需以副本集模式啟動(dòng)
  • 備份數(shù)據(jù)庫(kù)必須設(shè)置votes 值為1才擁有選舉成為Primary服務(wù)器的可能

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

一臺(tái)安裝好MongoDB 的服務(wù)器 192.168.1.1
或者
三臺(tái)安裝好MongoDB 的服務(wù)器 192.168.1.1 192.168.1.2 192.168.1.3
網(wǎng)絡(luò)處于可使用狀態(tài)

六.部署MongoDB副本集

1. 設(shè)置配置文件
通過(guò) --replSet --bind_ip 命令行選項(xiàng)指定副本集名稱和ip綁定
語(yǔ)法: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,在各個(gè)配置文件中,其值必須相同。
dbpath:MongoDB用于存儲(chǔ)數(shù)據(jù)的目錄,默認(rèn)值是C:\data\db
bind_ip 指定ip
path:用于記錄mongod的日志數(shù)據(jù)
port:指定MongoDB監(jiān)聽(tīng)的端口,默認(rèn)值是27017

然后要使用配置文件啟動(dòng)MongoDB實(shí)例 ,使用 --config 選項(xiàng)指定配置文件的路徑。

mongod --config <path-to-config>

三個(gè)實(shí)例啟動(dòng)完畢后,查看 ps -ef|grep mongo


我這里是一臺(tái)服務(wù)配置的三個(gè)實(shí)例

2.使用 mongoDB shell 連接到其中一個(gè) mongod 實(shí)例
mongo --host 192.168.1.1 --port 27017

3.啟動(dòng)副本集
使用 rs.initiate() 來(lái)指定副本集的所有成員

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"} 
   ] 
})
image.png

4.查看副本集配置

rs.conf()

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

rs.status()

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

嘗試關(guān)閉主節(jié)點(diǎn)
db.shutdownServer();
或者使用kill 端口的方式

image.png

然后再查看剩下的兩個(gè)副節(jié)點(diǎn)是否有一個(gè)成為新的節(jié)點(diǎn)
stateStr : "PRIMARY" 就是主節(jié)點(diǎn)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 副本集概述 某些情況下,副本可以提供更高的讀取容量,就像客戶端可以發(fā)送讀操作到不同的服務(wù)器。在不同數(shù)據(jù)中心維...
    LLLeon閱讀 10,642評(píng)論 2 7
  • MongoDB的集群模式有三種: 主從(Master-Slaver),MongoDB 3.6徹底廢棄 副本集(Re...
    AaronSimon閱讀 5,172評(píng)論 0 4
  • MongoDB之副本集 一、簡(jiǎn)介 MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫(xiě)。旨在為 ...
    牛初九閱讀 430評(píng)論 0 1
  • Replica Set功能 1, Replica Set是指一組服務(wù)器的集群,其中有一個(gè)主服務(wù)器,用于處理用戶的請(qǐng)...
    持續(xù)進(jìn)步者閱讀 4,009評(píng)論 2 10
  • 高可用性即HA(High Availability)指的是通過(guò)盡量縮短因日常維護(hù)操作(計(jì)劃)和突發(fā)的系統(tǒng)崩潰(非計(jì)...
    小波同學(xué)閱讀 21,814評(píng)論 6 54

友情鏈接更多精彩內(nèi)容