目前官方已不推荐使用mongodb
MongoDB 的副本集不一样于以往的主从模式。
在集群Master故障的时候,副本集能够自动投票,选举出新的Master,并引导其他的Slave服务器链接新的Master,而这个过程对于应用是透明的。能够说MongoDB的副本集,是自带故障转移功能的主从复制。docker
Sharding cluster是一种能够水平扩展的模式,在数据量很大时特给力,实际大规模应用通常会采用这种架构去构建。sharding分片很好的解决了单台服务器磁盘空间、内存、cpu等硬件资源的限制问题,把数据水平拆分出去,下降单节点的访问压力。每一个分片都是一个独立的数据库,全部的分片组合起来构成一个逻辑上的完整的数据库。所以,分片机制下降了每一个分片的数据操做量及须要存储的数据量,达到多台服务器来应对不断增长的负载和数据的效果数据库
csrs1: image: mongo volumes: - /home/work/dbdata/mongo/cs/rs1:/data/db command: mongod --noauth --bind_ip_all --configsvr --replSet csrs --dbpath /data/db csrs2: image: mongo volumes: - /home/work/dbdata/mongo/cs/rs2:/data/db command: mongod --noauth --bind_ip_all --configsvr --replSet csrs --dbpath /data/db csrs3: image: mongo volumes: - /home/work/dbdata/mongo/cs/rs3:/data/db command: mongod --noauth --bind_ip_all --configsvr --replSet csrs --dbpath /data/db
// 进入primary节点容器(注意必定要是primary节点), config server 默认端口是27019 docker-compose exec csrs1 mongo --port 27019 // 初始化副本集 rs.initiate() // 将另外两个节点加入到当前的副本集 rs.add('csrs2:27019') rs.add('csrs3:27019') // 查看副本集状态 rs.status()
shrs1: image: mongo volumes: - /home/work/dbdata/mongo/sh/rs1:/data/db command: mongod --noauth --bind_ip_all --dbpath /data/db --shardsvr --replSet shrs shrs2: image: mongo volumes: - /home/work/dbdata/mongo/sh/rs2:/data/db command: mongod --noauth --bind_ip_all --dbpath /data/db --shardsvr --replSet shrs shrs3: image: mongo volumes: - /home/work/dbdata/mongo/sh/rs3:/data/db command: mongod --noauth --bind_ip_all --dbpath /data/db --shardsvr --replSet shrs
// 进入primary节点容器(注意必定要是primary节点), shard server 默认端口是27018 docker-compose exec shrs1 mongo --port 27018 // 初始化副本集 rs.initiate() // 将另外两个节点加入到当前的副本集 rs.add('shrs2:27018') rs.add('shrs3:27018') // 查看副本集状态 rs.status()
mongo: image: mongo command: mongos --noauth --bind_ip_all --configdb csrs/csrs1:27019,csrs2:27019,csrs3:27019
// 进入primary节点容器(注意必定要是primary节点), mongos 默认端口是27017 docker-compose exec mongo mongo --port 27017 // 将另外两个节点加入到当前的副本集 sh.addShard('shrs1:27018') // 查看副本集状态 sh.status()
mongo-express: image: mongo-express restart: always ports: - 10081:8081
localhost:10081