Mongodb之replica set運維篇
2015/10/27 14:23
瀏覽168
迴響0
推薦0
引用0
由於在我們的Mongodb一項目中,訪問量會突然暴增兩倍,故需要進行一系列的擴容,並且由於我們使用的是1.8.3-pre版本,還需要把他升級為1.8.3,所以在這次調整中,涉及到Mongodb的擴容、升級、主庫切換等等一系列運維工作,也幸好有這樣的機會,才讓我更能掌握Mongodb,下面貼出操作的一些命令及一些步驟,以做後續查看!
1、利用另外一臺secondary機器傳送數據
2、在新機器上中配置文件中添加fastsync=true配置(當需要從有數據中啟動節點,那麽必須加上fastsync=true,否則啟動會報錯,如果是從主庫直接同步所有數據,那麽就不需要添加這個參數)
3、啟動後,在primary節點中添加節點
如:rs.add("10.73.24.171:9005") 當我們看到變為secondary後,就一切正常,可以正常提供線上服務了
4、通過rs.conf()命令查看現在的節點信息(需要admin庫密碼權限)
5、rs.remove()刪除節點
6、添加arbiter節點:rs.addArb("10.73.24.171:19003")
7、添加延時備份機器:rs.add({_id:4,host:"10.55.22.176:9004",priority:0,slaveDelay:3600});
8、當出現這個錯誤時:replSet error RS102 too stale to catch up,我們可以db.printReplicationInfo() 查看主庫、從庫的oplog信息;
以上為我切換過程中用到的大部分命令,主要還是replica set管理工具,如果能掌握,那麽升級、擴容、主庫切換都能快速進行!
這次在運維中,由於機器不夠,去掉了延時備份角色,只做了主-->備-->2arbiter的一個高可用集群,當主庫失效時候,基本能在10秒中切換到備上!
附:http://www.mongodb.org/display/DOCS/Replica+Set+Commands
rs.help() show help
rs.status() { replSetGetStatus : 1 }
rs.initiate() { replSetInitiate : null } initiate
with default settings
rs.initiate(cfg) { replSetInitiate : cfg }
rs.add(hostportstr) add a new member to the set
rs.add(membercfgobj) add a new member to the set
rs.addArb(hostportstr) add a new member which is arbiterOnly:true
rs.remove(hostportstr) remove a member from the set
rs.stepDown() { replSetStepDown : true }
rs.conf() return configuration from local.system.replset
db.isMaster() check who is primary
關於mongodb replica set 的安裝,請參考http://hi.baidu.com/ytjwt/blog/item/7ffbf79849782e106f068c17.html
修改優先級
shard0:PRIMARY> cfg = rs.conf()
{
"_id" : "shard0",
"version" : 2,
"members" : [
{
"_id" : 0,
"host" : "172.16.1.1:29017"
},
{
"_id" : 1,
"host" : "172.16.1.2:29017",
"priority" : 2
},
{
"_id" : 2,
"host" : "172.16.1.3:29017",
"priority" : 3
}
]
}
shard0:PRIMARY> cfg.members[0].priority = 10
10
shard0:PRIMARY> rs.reconfig(cfg)
增加一個只能備份的復制集!
newrs={_id: 5, host: "Weibo02:27017", priority: 0}
rs.add(newrs)
再增加一個只能備份且隱藏的復制集
rs.add({_id:5,host:"db2:27017",priority:0,hidden:true})
使用rs.conf()查看是發現多出一些屬性
{
"_id" : 5,
"host" : "db2:27017",
"priority" : 0,
"hidden" : true
}
增加一下延時備份的復制集
rs.add({_id:5,host:"db2:27017",priority:0,hidden:true,slaveDelay:3600})
你可能會有興趣的文章:
限會員,要發表迴響,請先登入


