1. 程式人生 > >MongoDB複製集常用操作

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()

##檢視本節點是否為主節點,及所有可見節點,及本節點是哪個。

driver每次連線都會執行以選取相應的節點

db.isMaster()

從節點不建立索引:此選項為永久選項,配置後需要更改則必須先移除該節點、刪除所有資料、再重新加入才可以。並且不建立索引的節點不能成為主節點(所以priority必須為0)。適用範圍:效能較低伺服器或者只用於備份或離線任務處理的機器可以配置。

1rs.remove("10.1.8.69:27018")

2、登入被移除的節點上

3、關閉該節點

use admin

db.shutdownServer()

4、移除該節點資料目錄下的所有資料

rm  MONGODB_DATA_DIR/*

5、重新啟動

6rs.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) ##恢復其它節點的被選舉權利,或者讓退位的主節點恢復