mongo复制集主从切换

1。冻结其中的一个从节点,使其不参与到与primary 的内部选举工作
进入客户端,执行(单位:秒)
rs.freeze(30);

2.对原主节点进行降级
进入客户端,执行下面代码 (单位:秒)
rs.stepDown(15);
3.经过冻结和降级之后查看复制集状态
rs.status();
复制集顺利切换
目前使用到mongodb的项目

 

2.上述办法是临时,一旦原来的主起来,主节点会被拿回去,最主要还是修改权重,方法如下:

a.现在我们的mongo的仲裁基本都是主做在一起,所以切换主从时迁移仲裁节点,不然一旦仲裁节点所在的服务器有问题,这个复制集会出问题

比如:rs.remove(“192.168.178.18:27018”)

rs.addArb(“192.168.178.4:27018”)

b.登入mongo 设置个节点的权重

cfg = rs.conf()

cfg.members[0].priority = 50

cfg.members[2].priority = 10

cfg.members[3].priority = 10

cfg.members[4].priority = 100

cfg.members[5].priority = 100

rs.reconfig(cfg)

 

0 2 3 是按照rs.conf() 排下来的顺序

仲裁会直接选权重最高的节点作为主

可以用 rs.status(); 查看

 

 

今天遇到一个问题,仲裁节点起不来,先前是主节点挂了,仲裁也在此节点上。所以重启两个mongo的进程,但重启后发现仲裁一直处于启动中状态,这时发现集群成为无主集群了,无法执行写操作。看了仲裁的日志,发现是连不上从库。删除从库的  mongod.lock  后,启动从库,集群恢复。

所以以后关闭mongo ,尽量用 /usr/local/webserver/mongo/bin/mongod -f /etc/mongodb.cnf –shutdown

不要用kill

 

文章分类 centos, mongo

发表评论

邮箱地址不会被公开。 必填项已用*标注

*