由于在我们的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秒中切换到备上!
附:
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})
2015年新增 指定同步机器:
cfg=rs.conf()
cfg.members=[{"_id" : 1,"host" : "kdweio3:27018","priority" : 30},{"_id" : 2,"host" : "kdwei6:29018","arbiterOnly" : true},{"_id" : 3,"host" : "192.168.1.1:27018"},{"_id" :4,"host" : "mohost2:27018","priority" : 0,"hidden" : true,initialSync :{state :2,_id:3}}]
rs.reconfig(cfg)
阅读(5516) | 评论(0) | 转发(0) |