1. 程式人生 > 實用技巧 >mongodb複製集

mongodb複製集

 
 
mkdir -p /data/{mongodb_27117,mongodb_27118,mongodb_27119}/{db,logs}
chown -R mongodb:mongodb /data/{mongodb_27117,mongodb_27118,mongodb_27119}

 
cat <<EOF >  /etc/mongodb_27117.conf
dbpath = /data/mongodb_27117/db                                        
logpath = /data/mongodb_27117/logs/mongodb.log        
port 
= 27117 fork = true EOF cp /etc/mongodb_27117.conf /etc/mongodb_27118.conf cp /etc/mongodb_27117.conf /etc/mongodb_27119.conf sed -i "s#27117#27118#g" /etc/mongodb_27118.conf sed -i "s#27117#27119#g" /etc/mongodb_27119.conf /usr/local/mongodb/bin/mongod -f /etc/mongodb_27117.conf
/usr/local/mongodb/bin/mongod -f /etc/mongodb_27118.conf /usr/local/mongodb/bin/mongod -f /etc/mongodb_27119.conf # 登入mongo mongo --host 127.0.0.1 --port 27117 admin # 初始化複製集 config = {"_id":"rs0", "members":[ {"_id":0,host:"127.0.0.1:27117"}, {"_id":1,host:"127.0.0.1:27118"}, {
"_id":2,host:"127.0.0.1:27119"} ] } rs.initiate(config) # 檢視複製集狀態 rs.status() # 檢視配置檔案 rs.conf() # 檢視複製集的主節點 db.isMaster() # 增加從節點 rs.add("ip:port") rs.add({"_id":4,"host":"ip:port","priority":1,"hidden":false}) # 增加投票節點 rs.addArb("ip;port") rs.addArb({"_id":5,"host":"ip:port"}) rs.add({"_id":5,"host":"new_node:port","arbiterOnly":true}) # 刪除節點 rs.remove("ip;port") # 修改節點引數 (1)config = rs.conf() (2)config.members[i].引數 = 值 (3)rs.reconfig(config, {"force":true})或rs.reconfig(config),前面是強制重新配置 複製集節點介紹 Primary節點:複製集通過replSetInitiate命令(或mongo shell的rs.initiate())進行初始化,初始化後各個成員間開始傳送心跳訊息,併發起Priamry選舉操作,獲得『大多數』成員投票支援的節點,會成為Primary,其餘節點成為Secondary。 Secondary節點:正常情況下,複製集的Seconary會參與Primary選舉(自身也可能會被選為Primary),並從Primary同步最新寫入的資料,以保證與Primary儲存相同的資料。Secondary可以提供讀服務,增加Secondary節點可以提供複製集的讀服務能力,同時提升複製集的可用性。另外,Mongodb支援對複製集的Secondary節點進行靈活的配置,以適應多種場景的需求。 Arbiter節點:Arbiter節點只參與投票,不能被選為Primary,並且不從Primary同步資料。比如你部署了一個2個節點的複製集,1個Primary,1個Secondary,任意節點宕機,複製集將不能提供服務了(無法選出Primary),這時可以給複製集新增一個Arbiter節點,即使有節點宕機,仍能選出Primary。Arbiter本身不儲存資料,是非常輕量級的服務,當複製整合員為偶數時,最好加入一個Arbiter節點,以提升複製集可用性。 Priority節點:預設為1,Priority引數設定範圍在0-1000的整數值。Priority0節點的選舉優先順序為0,永遠不會被選舉為Primary。 Vote節點:Vote預設為1,Vote引數的值在2.6版本後只能設定為0或1。Mongodb 3.0裡,複製整合員最多50個,參與Primary選舉投票的成員最多7個,其他成員的vote屬性必須設定為0,即不參與投票。Vote設定為0時永遠沒有投票權。 Hidden節點:Hidden節點不能被選為主(因為Priority為0),並且對Driver不可見。因Hidden節點不會接受Driver的請求,可使用Hidden節點做一些資料備份、離線計算的任務,不會影響複製集的服務。 Delayed節點:delayed的配置受到opolg的影響。Delayed節點必須是Hidden節點,並且其資料落後與Primary一段時間(可配置,比如1個小時)。因Delayed節點的資料比Primary落後一段時間,當錯誤或者無效的資料寫入Primary時,可通過Delayed節點的資料來恢復到之前的時間點。