MongoDB複製集常用操作
檢視複製情況:從庫都有哪些,以及每臺從庫與主庫的同步時間差
db.printSlaveReplicationInfo()
檢視副本集狀態:檢視複製集拓撲、及執行情況
rs.status()
檢視複製集配置:檢視各節點的詳細配置情況
rs.config()
rs.conf()
##檢視複製集各節點的啟動引數和配置情況
db.serverCmdLineOpts()
##mongo shell登陸從後需要進行操作需執行下面命令,程式driver無需
rs.slaveOk()
##刪除節點
rs.remove("10.1.8.69:27018")
##主節點退位
rs.stepDown()
##檢視本節點是否為主節點,及所有可見節點,及本節點是哪個。
db.isMaster()
從節點不建立索引:此選項為永久選項,配置後需要更改則必須先移除該節點、刪除所有資料、再重新加入才可以。並且不建立索引的節點不能成為主節點(所以priority必須為0)。適用範圍:效能較低伺服器或者只用於備份或離線任務處理的機器可以配置。
1、rs.remove("10.1.8.69:27018")
2、登入被移除的節點上
3、關閉該節點
use admin
db.shutdownServer()
4、移除該節點資料目錄下的所有資料
rm MONGODB_DATA_DIR/*
5、重新啟動
6、rs.add({"host":"10.1.8.69:27018","priority":0,"buildIndexes":false})
配置延遲節點:該節點必須被隱藏,並且不能成為主節點。適用範圍:處理一定時間段內的誤操作(個人感覺意義不大)
cfg=rs.conf()
cfg.members[1].slaveDelay=60 ##延遲60秒
cfg.members[1].priority=0
cfg.members[1].hidden=true
rs.reconfig(cfg)
rs.conf()
配置隱藏節點或者備份節點:對driver不可見,適用範圍:效能較低的機器或者僅用於備份及批量處理的機器。一般這樣的機器不適合做主節點(會配置其優先順序為0)
cfg=rs.conf()
cfg.members[1].hidden=true
cfg.members[1].priority=0
rs.reconfig(cfg)
rs.conf()
#也可以用新增的方式進行配置備份節點或者隱藏節點
rs.add({"_id":2,"host":"192.168.199.164:27019","priority":0,"hidden":true})
配置優先順序:一般在主節點進行配置(優先順序配置範圍0-100),優先順序較高並且資料是最新的節點會變成主節點。對於優先順序都為0的複製集不可以執行reconfig
cfg=rs.conf()
cfg.members[1].priority=3
rs.reconfig(cfg)
rs.conf() ##檢視配置是否生效
新增仲裁節點:在複製集數量為偶數時新增,複製集為奇數時完全不用加。一般仲裁節點機器效能要求不高,並且仲裁節點只能有一個
rs.addArb("192.68.199.163:27020")
##更改成員host,更換了IP的,或者用於替換某個成員。被新增的成員要啟動時指定replSet選項。
cfg=rs.conf()
cfg.members[2].host="10.1.8.69:27018"
rs.reconfig(cfg)
rs.conf() ##檢視配置是否生效
#等待寫入複製,保證複製集大部分節點間的資料一致性防止資料丟失,會犧牲寫入效能
每個連線獨享
db.products.insert( { item: "envelopes", qty : 100, type: "Clasp" }, { writeConcern: { w: "majority", wtimeout: 5000 } } )
#永久配置
cfg=rs.conf()
cfg.settings = {}
cfg.settings.getLastErrorDefaults = { w: "majority", wtimeout: 5000 }
rs.reconfig(cfg)
##將複製集中的某臺機器暫時退出維護(單機模式啟動)
登入主節點並移除要維護的節點
rs.remove("10.1.8.69:27019")
登入要維護的節點關閉節點
use admin
db.shutdownServer()
重指定其它埠 --port 並去掉replSet配置後啟動就可以對本節點進行單機模式的維護。維護完畢後,恢復之前的配置,重新啟動後自動加入複製集
##強制重新配置
當複製集不滿足大多數要求後,將不能選舉出主節點。可以用強制重新配置進行重配置(必須在從幾點進行)
rs.reconfig(cfg,{"force":true})
##阻止選舉,需要對主節點進行維護時,又不希望其它節點進行選舉,可以在所有其他節點
執行下方命令,將會阻止該節點選舉成為主節點。
rs.freeze(10000) ##禁止10000秒該節點進行主節點選舉
rs.freeze(0) ##恢復其它節點的被選舉權利,或者讓退位的主節點恢復