目前官方已不推薦使用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