zoukankan      html  css  js  c++  java
  • Linux下将Mongodb单机升级至副本集

    将单机升级至副本集,我目前实践的方法是使用新的服务器做为临时的primary节点进行服务,通过备份还原的方法将数据同步到新搭建的服务器(最小程度的影响线上的服务)
    完成后修改线上web的连接字符串,让应用连接集群,如果有必要的话也可以将迁移期间产生的数据还原至新服务器

    1.首先得准备两台mongodb服务器,一个做为secondary节点(临时做为primary节点),一个做为arbiter节点
    在mongodb服务器中加入集群元素,keyfile文件是集群内服务器共用的

    keyFile=/usr/local/mongodb/keyfile
    replSet=rs0

    可能需要修改keyfile的访问权限

    chmod 600 keyfile


    2.初始化集群

    config={
       _id : "rs0",
       members: [
          { _id: 0, host: "192.168.0.2:27017" },
          { _id: 1, host: "192.168.0.3:27017",arbiterOnly:true}
       ]
    }
    rs.initiate(config)


    3.完成后检查集群的状态

    #查看现在集群的状态
    rs0:PRIMARY> rs.status();
    #检查是否是主节点
    rs0:PRIMARY> rs.isMaster();


    4.备份还原

    1)进入原单机服务器备份 /usr/local/mongodb/bin/mongodump
    2)压缩打包 tar -zcvf backup2020.tar.gz backup2020
    3)通过ftp上传至新服务器
    4)解压 tar -zxvf backup2020.tar.gz
    5)还原 
    /usr/local/mongodb/bin/mongorestore
    6)修改web应用连接字符串,更新部署

    5.正常运行后可以将原单机服务器加至集群,这里在同步之前需要将原单机服务器的data文件夹和log文件夹里面的内容删除(在操作之前需要备份一下数据)
    完成同步后,使用rs.stepDown(),将当前主库降级,primary角色交给192.168.0.1

    rs0:PRIMARY> rs.add("192.168.0.1:27017")
    rs0:PRIMARY> rs.stepDown()

    6.强制关闭其中一个primary点后,另外一台服务器会成为primary节点

    rs0:PRIMARY> db.shutdownServer();

     
    7.设置副本集的优先级(该操作需要在primary节点进行)
    首先通过rs.config()查看当前副本集的优先级情况
    然后通过rs.reconfig(config)进行更新

    rs0:PRIMARY> config=rs.conf()
    rs0:PRIMARY> config.members[0].priority=3
    rs0:PRIMARY> config.members[0].votes=1
    rs0:PRIMARY> rs.reconfig(config);

    当节点的投票数为0的时候无法设置优先级,需要修改节点的投票数
     

  • 相关阅读:
    Django集成celery发送异步邮件
    Bootstrap表格实现列左右调整大小
    Django通用类视图实现忘记密码重置密码功能
    Django项目使用ckeditor(不使用admin)
    HTML提交form表单后获取返回的数据
    Django后端发送小程序微信模板消息(服务通知)
    Django对接支付宝实现支付宝充值金币功能
    Django全文搜索django-haystack+whoosh+jieba实现中文全文搜索
    Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
    PHP socket 接收 java端口 netty 网络字节序
  • 原文地址:https://www.cnblogs.com/chenjianxiang/p/12526967.html
Copyright © 2011-2022 走看看