美文网首页
Docker + MongoDB Replica Set

Docker + MongoDB Replica Set

作者: GongZH丶 | 来源:发表于2019-04-01 15:01 被阅读0次

    环境
    系统:mac os x
    Docker :18.09.0
    MongoDB安装:https://www.jianshu.com/p/cd146d07e153

    Deploy a Replica Set 搭建一个复制集(副本集)

    1. 在mongodb_test目录下创建mongo1,mongo2,mongo3三个目录,用于存放配置文件和mongodb数据库的数据。分别在这三个目录下创建mongo1.conf,mongo2.conf,mongo3.conf三个配置文件,内容暂时为空。


      image.png
    2. 创建三个mongodb实例,分别为test-mongo1,test-mongo2,test-mongo3。

    docker run -p 28001:27017 --name test-mongo1 -v /Users/gzh/Desktop/测试项目/mongodb_test/mongo1:/etc/mongo -v /Users/gzh/Desktop/测试项目/mongodb_test/mongo1:/data/db -d mongo:4.0 --config /etc/mongo/mongo1.conf
    
    docker run -p 28002:27017 --name test-mongo2 -v /Users/gzh/Desktop/测试项目/mongodb_test/mongo2:/etc/mongo -v /Users/gzh/Desktop/测试项目/mongodb_test/mongo2:/data/db -d mongo:4.0 --config /etc/mongo/mongo2.conf
    
    docker run -p 28003:27017 --name test-mongo3 -v /Users/gzh/Desktop/测试项目/mongodb_test/mongo3:/etc/mongo -v /Users/gzh/Desktop/测试项目/mongodb_test/mongo3:/data/db -d mongo:4.0 --config /etc/mongo/mongo3.conf
    
    
    
    image.png
    cd mongo1
    vi mongo1.conf
    
    1. 编辑mongo1.conf,mongo2.conf,mongo3.conf配置文件
    replSet = replSetOne   // "replSet"为复制集的名称
    
    1. 通过docker inspect 得到每个mongodb容器的IPAddress
      如下,是mongo2的IPAddress
    image.png
    1. 进入mongo1(以mongo1为主节点)容器,连接mongodb服务,配置复制集信息
    docker exec -it mongo1 bash //进入容器
    
    mongo   //连接mongodb
    
    
    rs.initiate( {
       _id : "replSetOne",
       members: [
          { _id: 0, host: "172.17.0.3:27017" },       //mongo1
          { _id: 1, host: "172.17.0.4:27017" },      //mongo2
          { _id: 2, host: "172.17.0.5:27017" }       //mongo3
       ]
    })
    
    image.png
    1. 查看复制集信息
    rs.status()
    
    image.png
    1. 判断是否是主节点
    db.isMaster()
    
    image.png
    1. 验证复制集
      主节点插入数据,(只有主节点可以写入数据)从节点会复制主节点的数据


      image.png
    image.png
    1. 重新选举
      关掉mongo1服务,查看复制集状态
    docker stop test-mongo1
    rs.status()
    

    可以看到mongo2变成了PRIMARY主节点,mongo2的权限提升到可以写入数据了


    image.png image.png
    1. 故障恢复
      重新启动mongo1
    docker start test-mongo1
    

    可以看到复制集的所有成员节点数据是同步的。


    image.png

    相关文章

      网友评论

          本文标题:Docker + MongoDB Replica Set

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