mongodb系列之--mongodb 主從配置與說明


一.為什么要配置mongodb的主從:

1.做主從,可以說是做數據的備份,有利於故障的恢復

2.做主從,可以做到讀寫分離,主節點負責寫操作,從節點負責讀操作,這樣就把讀寫壓力分開,保證系統的穩定性.

 

二.主從服務器的實現原理

首先,主節點會把本服務的與寫有關的操作記錄下來,讀操來不記錄,這些操作就記錄在local數據庫中的oplog.$admin這個集合中,這是一個固定集合,大小是可以配置的,主要是通過配置oplogSize這個參數來實現,單位是M,大小一般為磁盤剩余空間的5%左右.因為是固定集合所以當固定集合放滿日志的時候,新進來的日志就會把最舊的日志覆蓋掉,如果這個值設置的不合理,導致數據很快的被覆蓋,而從節點沒有來得及更新,這樣就會產生數據不同步的情況.設置為主節點的local數據庫有會有oplog.$admin與slave這兩個集合.slave記錄的是從節點的信息.

從節點與主節點的數據同步主要是從節點定時的會去連接主節點,請求主節點的操作日志,從而對自己的數據副表進行同樣的操作來達到數據的同步.從節點的local數據庫中會多了source與me這兩個集合,source是記錄主節點的信息,me是記錄從節點的標識

 

三.mongodb主從配置中的知識點

1.主節點的配置主要是通過在啟動mongodb時帶上--master這個參數

2.從節點主要是通過參數--slave和--source 這兩個參數 --source這個參數的值是 ip:端口

 

四.配置主從

首先要准備至少兩台服務器,我這里准備的兩台是192.168.1.1,192.168.1.2,並且這兩台服務器都要裝好了mongodb,怎么安裝這里就不說明了.通信接口是27017,接下來我們就來開始動手吧

1.配置主節點

創建數據的存放目錄與日志的存放目錄:

mkdir /mongodb/master

mkdir /mongodb/log

 

接着把主節點的配置寫在一個配置文件中,從而來啟動的時候能用--config這個參數來指定配置,配置文件內容如下.

dbpath=/mongodb/master

logpath=/mongodb/log/master.log

master=true

fork=true

port=27017

oplogSize=2048

 

寫好配置文件后,我們就可以啟動一個主節點了:

/mongodb/bin/mongod --config /mongodb/bin/mongodb.conf

 

2.配置從節點

創建數據的存放目錄與日志的存放目錄:

mkdir /mongodb/slave

mkdir /mongodb/log

 

接着寫從節點的配置文件.

dbpath=/mongodb/slave

logpath=/mongodb/log/slave.log

slave=true

source=192.168.1.2:27017

fork=true

port=27017

autoresync=true

 

寫好配置文件后,我們就可以啟動一個主節點了:

/mongodb/bin/mongod --config /mongodb/bin/mongodb.conf

到這里基本主從就配置完了,你可以查看主節點的local數據庫里有沒有slave,oplog.$admin,從節點中有沒有source,me這幾個集合

接下來你可以主節點創建數據庫插入數據看看從節點是否同步過去了.這些都可以通過查看日志來查看的

 

五.查看主從的狀態

db.printReplicationInfo():查看主節點的狀態

db.printSlaveReplicationInfo():查看從節點的狀態

 

六.改變oplogSize的大小

  變更oplog的大小,這是一個挺大的工程
  首先要停掉主節點,然后刪除local數據庫.
  rm /data/db/local.*
  接着再以--oplogSize來重新定義大小.
  mongod --master --oplogSize 多少MB
  再以--autoresync的選項重啟所有從節點.

 

注:如果是在linux中記得在防火牆中開放主從連接的端口

 

主從的架構所要面臨的問題:

1.如果讀寫都是對主節點的操作,那主節點無疑是壓力過大.

2.如果主節點掛掉了,那這個架構就失效了

3.如果多個從節點從主節點復制數據,主節點壓力會不會過大.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM