美文网首页
Docker+Mongodb+集群

Docker+Mongodb+集群

作者: 紫薇大舅 | 来源:发表于2018-08-07 17:28 被阅读0次

    一、创建分片服务 shardsvr

    docker run --name rs1_container1 -d -p 20001:20001 -v $PWD/db1:/data/db1 mongo:latest --shardsvr --replSet "rs1" --port 20001 --bind_ip_all --dbpath /data/db1
    docker run --name rs1_container2 -d -p 20002:20001 -v $PWD/db2:/data/db2 mongo:latest --shardsvr --replSet "rs1" --port 20001 --bind_ip_all --dbpath /data/db2
    docker run --name rs1_container3 -d -p 20003:20001 -v $PWD/db3:/data/db3 mongo:latest --shardsvr --replSet "rs1" --port 20001 --bind_ip_all --dbpath /data/db3
    
    docker run --name rs2_container1 -d -p 20011:20001 -v $PWD/db4:/data/db4 mongo:latest --shardsvr --replSet "rs2" --port 20001 --bind_ip_all --dbpath /data/db4
    docker run --name rs2_container2 -d -p 20012:20001 -v $PWD/db5:/data/db5 mongo:latest --shardsvr --replSet "rs2" --port 20001 --bind_ip_all --dbpath /data/db5
    docker run --name rs2_container3 -d -p 20013:20001 -v $PWD/db6:/data/db6 mongo:latest --shardsvr --replSet "rs2" --port 20001 --bind_ip_all --dbpath /data/db6
    

    二、创建配置服务 configsvr

    docker run --name config_container1 -d -p 21001:20001 -v $PWD/cdb1:/data/db mongo:latest --configsvr --replSet "crs" --port 20001 --bind_ip_all --dbpath /data/db
    docker run --name config_container2 -d -p 21002:20001 -v $PWD/cdb2:/data/db mongo:latest --configsvr --replSet "crs" --port 20001 --bind_ip_all --dbpath /data/db
    

    三、启动路由服务 mongos

    docker run --name mongos_container1 -d -p 22001:20001 --entrypoint "mongos" mongo:latest --configdb crs/192.168.0.15:21001,192.168.0.15:21002 --port 20001 --bind_ip_all
    docker run --name mongos_container2 -d -p 22002:20001 --entrypoint "mongos" mongo:latest --configdb crs/192.168.0.15:21001,192.168.0.15:21002 --port 20001 --bind_ip_all
    

    四、初始化分片rs1副本集

    # 任意选择rs1分片的一个副本
    mongo --port 20001
    # 切换数据库
    use admin
    # 写配置文件
    config = {_id:"rs1",members:[ {_id:0,host:"192.168.0.15:20001"}, {_id:1,host:"192.168.0.15:20002"}, {_id:2,host:"192.168.0.15:20003",arbiterOnly:true} ] }
    # 初始化副本集
    rs.initiate(config)
    # 查看副本集状态
    rs.status()
    

    五、初始化分片rs2副本集

    # 任意选择rs2分片的一个副本
    mongo --port 20011
    # 切换数据库
    use admin
    # 写配置文件
    config = {_id:"rs2",members:[ {_id:0,host:"192.168.0.15:20011"}, {_id:1,host:"192.168.0.15:20012"}, {_id:2,host:"192.168.0.15:20013",arbiterOnly:true} ] }
    # 初始化副本集
    rs.initiate(config)
    # 查看副本集状态
    rs.status()
    

    六、初始化配置服务副本集

    # 任意选择crs分片的一个副本
    mongo --port 21001
    # 切换数据库
    use admin
    # 写配置文件
    config = {_id:"crs", configsvr:true, members:[ {_id:0,host:"192.168.0.15:21001"}, {_id:1,host:"192.168.0.15:21002"} ] }
    # 初始化副本集
    rs.initiate(config)
    # 查看副本集状态
    rs.status()
    

    七、通过mongos添加分片关系到configsvr

    mongo --port 22001
    use admin
    db.runCommand({addshard:"rs1/192.168.0.15:20001,192.168.0.15:20002,192.168.0.15:20003"})
    db.runCommand({addshard:"rs2/192.168.0.15:20011,192.168.0.15:20012,192.168.0.15:20013"})
    db.runCommand({listshards:1})
    

    八、设置数据库、集合分片

    db.runCommand({enablesharding:"mydb"})
    db.runCommand({shardcollection:"mydb.person", key:{id:1, company:1}})
    

    九、测试分片结果

    use mydb
    for (i =0; i<10000;i++){db.person.save({id:i, company:"baidu"})}
    db.person.stats()
    

    十、其他

    # 设置一个仲裁者
    rs.addArb("192.168.1.122:27017") 
    

    相关文章

      网友评论

          本文标题:Docker+Mongodb+集群

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