• 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

     

发表评论

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