美文网首页
MongoDB Replica Set(副本集)三节点(2+1)

MongoDB Replica Set(副本集)三节点(2+1)

作者: shaun_x | 来源:发表于2019-01-07 17:20 被阅读0次

    官方文档:https://docs.mongodb.com/manual/replication/

    安装配置

    安装MongoDB 3.6.9

    $ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
    $ sudo apt-get update
    $ sudo apt-get install mongodb-org
    

    添加配置

    $ sudo vi /etc/mongo.conf
    replication:
      oplogSizeMB: 2048
      replSetName: rs0
    

    启动数据库

    $ mongod -f /etc/mongo.conf
    

    添加集群信息

    一个主节点,一个从节点,一个仲裁节点

    $ mongo
    >cfg={ _id:"rs0", members:[ {_id:0,host:'192.168.56.100:27017',priority:2}, {_id:1,host:'192.168.56.101:27017',priority:1}, {_id:2,host:'192.168.56.102:27017',arbiterOnly:true}] };
    >rs.initiate(cfg)
    

    主节点权重稍微提高一点
    初始化完成后,从节点自动同步主节点的所有数据

    设置从节点可读

    避免每次使用mongo client登录都需要设置,这里直接配置文件

    $ vi ~/.mongorc.js
    rs.slaveOk();
    

    KeyFile权限配置

    集群内部访问通过KeyFile
    生成keyfile, MongoDb支持6~1024长度,文件权限需要修改为600

    openssl rand -base64 567 > /var/lib/mongodb/keyfile
    chmod 600 /var/lib/mongodb/keyfile
    

    添加配置文件

    security:
        authorization: enabled
        clusterAuthMode: keyFile
        keyFile: /var/lib/mongodb/keyfile
    

    MongoDB副本集-失效备援后的回滚

    当主节点挂掉后,从节点升级为主节点承载读写操作,这时可能会存在没有同步到从节点的写操作。
    当老主节点恢复后,会废弃掉这些操作,并在dbPath目录下产生一个rollback/目录,存储这部分操作为bson文件,可人工用bsondump/mongorestore等方式导入主节点

    如何避免,参考MongoDb Write Concern: https://docs.mongodb.com/manual/core/replica-set-write-concern/

    注:如果只有一个mongodb存活,则降级为secondary,不可写

    主从切换

    Spring boot 连接mongoDB副本集配置多节点地址

    spring.data.mongodb.uri=mongodb://host1:port2,host2:port2/million?replcaSet=_rsName_
    

    可能会产生connector切换,如果副本集配置的members host是内网地址,则要求driver也在内网,否则切换不成功,报connect timeout错误。(估计connector切换是读取的mongo副本集配置,而不是读取driver配置的地址)

    外网调试,则直接连接主节点的外网地址

    命令参考

    降级

    rs.stepDown()
    

    添加成员

    rs.add({host:"localhost:27017"})
    // 添加arbiter
    rs.add({host:"localhost:27017",arbiterOnly:true})
    // 或者
    rs.addArb({host:"localhost:27017"})</pre>
    

    移除成员

    rs.remove({host:"localhost:27017"})</pre>
    

    修改优先级

    var config=rs.config()
    config.members[2].priority=2
    rs.reconfig(config)</pre>
    

    更多信息

    隐藏节点,延迟节点等

    相关文章

      网友评论

          本文标题:MongoDB Replica Set(副本集)三节点(2+1)

          本文链接:https://www.haomeiwen.com/subject/litprqtx.html