mongodb复制集主辅节点升降级的一次实践和注意事项

栏目: 数据库 · 发布时间: 8年前

内容简介:mongodb复制集主辅节点升降级的一次实践和注意事项

目的

  • 本文是接上篇 mongodb3.0.7扩容存储记录 ,作为补充说明完整的升级过程;
  • 解决上文遗留的问题

    上次降级回3.0的原因是部分应用的 mongodb 驱动过低,不支持mongodb3.4造成,本次升级前检查了所有应用的驱动并做了升级并通过了兼容性测试。

示例如下

假设有一个复制集有一个primary和三个sencondary组成

primary:10.0.1.32
secondary:10.0.1.31 、10.0.1.33、192.168.1.230

rs.status()显示

rs.status()
{
    ......
        "members" : [
        {
            "_id" : 0,
            "name" : "10.0.1.31:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "SECONDARY",
            ......
        },
        {
            "_id" : 1,
            "name" : "10.0.1.32:27017",
            "health" : 1,
            "state" : 5,
            "stateStr" : "PRIMARY",
            ......
        },
        {
            "_id" : 2,
            "name" : "192.168.1.230:27017",
            "health" : 1,
            "state" : 5,
            "stateStr" : "SECONDARY",
            ......
        },
        {
            "_id" : 3,
            "name" : "10.0.1.33:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            ......
        }
    ],
    "ok" : 1
}

切换目标:31升级为primary,32降级为secondary

primary:10.0.1.31
secondary:10.0.1.32 、10.0.1.33、192.168.1.230

切换步骤(均在mongodb shell上执行)

  • 1、primary上设定各个节点优先级
cfg = rs.conf()
cfg.members[0].priority = 1
cfg.members[1].priority = 0.5
cfg.members[2].priority = 0.5
cfg.members[3].priority = 0.5
rs.reconfig(cfg)
  • 2、33和230节点上执行rs.freeze(120)命令,组织其在120秒内成为primary节点
rs.freeze(120)
  • 3、primary上执行降级命令,使其120秒内不再成为primary
rs.stepDown(120)
  • 4、观察31节点发现已经成为primary
rs.status()
{
    ......
        "members" : [
        {
            "_id" : 0,
            "name" : "10.0.1.31:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            ......
        },
        {
            "_id" : 1,
            "name" : "10.0.1.32:27017",
            "health" : 1,
            "state" : 5,
            "stateStr" : "SECONDARY",
            ......
        },
        {
            "_id" : 2,
            "name" : "192.168.1.230:27017",
            "health" : 1,
            "state" : 5,
            "stateStr" : "SECONDARY",
            ......
        },
        {
            "_id" : 3,
            "name" : "10.0.1.33:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            ......
        }
    ],
    "ok" : 1
}
  • 5、升级32节点mongodb到3.4版本

    详细过程 mongodb3.0.7扩容存储记录 文中有介绍

  • 6、重新将32节点加入复制集

    从节点31上复制集配置文件过来,将bindip修改为本机32保存退出,执行systemctl start mongod即可。

注意事项

  • 设定优先级要一定要先做,否则当primary发布stepDown之后,各节点投票选举的primary不一定是期望的节点
  • 事先准备好各主机执行命令及执行顺序,每个节点开一个 shell 窗口,然后把事先准备好的命令粘贴进来按照顺序执行
  • 升降级完成之后,各连接mongodb的应用,需要重启连接新的primary,这个执行命令也要事先准备好

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

区块链核心算法解析

区块链核心算法解析

【瑞士】Roger Wattenhofer(罗格.瓦唐霍费尔) / 陈晋川、薛云志、林强、祝庆 / 电子工业出版社 / 2017-8 / 59.00

《区块链核心算法解析》介绍了构建容错的分布式系统所需的基础技术,以及一系列允许容错的协议和算法,并且讨论一些实现了这些技术的实际系统。 《区块链核心算法解析》中的主要概念将独立成章。每一章都以一个小故事开始,从而引出该章节的内容。算法、协议和定义都将以形式化的方式描述,以便于读者理解如何实现。部分结论会在定理中予以证明,这样读者就可以明白为什么这些概念或算法是正确的,并且理解它们可以确保实现......一起来看看 《区块链核心算法解析》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具