Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1604261
  • 博文数量: 184
  • 博客积分: 3044
  • 博客等级: 中校
  • 技术积分: 2467
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-25 15:04
文章分类

全部博文(184)

文章存档

2022年(4)

2021年(3)

2020年(1)

2019年(5)

2018年(13)

2017年(6)

2016年(10)

2015年(11)

2014年(11)

2013年(13)

2012年(23)

2011年(25)

2010年(2)

2008年(1)

2007年(5)

2006年(51)

分类: NOSQL

2013-03-14 15:23:27

由于在我们的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)
阅读(5464) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~