乐趣区

mongo分片集群搭建

mongodb 集群搭建方式

1.master-slave 主从复制

目前官方已不推荐使用

2.Replica Sets 副本集


MongoDB 的副本集不同于以往的主从模式。
在集群 Master 故障的时候, 副本集可以自动投票, 选举出新的 Master, 并引导其余的 Slave 服务器连接新的 Master, 而这个过程对于应用是透明的。可以说 MongoDB 的副本集, 是自带故障转移功能的主从复制。

3.sharding 分片


Sharding cluster 是一种可以水平扩展的模式, 在数据量很大时特给力, 实际大规模应用一般会采用这种架构去构建。sharding 分片很好的解决了单台服务器磁盘空间、内存、cpu 等硬件资源的限制问题,把数据水平拆分出去,降低单节点的访问压力。每个分片都是一个独立的数据库,所有的分片组合起来构成一个逻辑上的完整的数据库。因此,分片机制降低了每个分片的数据操作量及需要存储的数据量,达到多台服务器来应对不断增加的负载和数据的效果

docker-compose 搭建 mongodb 分片集群

1.config server 集群搭建

  • docker-compose 代码
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()

2.shard server 集群搭建

  • docker-compose 代码
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()

3.router mongos 集群搭建

  • docker-compose 代码
mongo:
    image: mongo
    command: mongos --noauth --bind_ip_all --configdb csrs/csrs1:27019,csrs2:27019,csrs3:27019
  • 将 mongos 连接到 shard set
// 进入 primary 节点容器 (注意一定要是 primary 节点), mongos 默认端口是 27017
docker-compose exec mongo mongo --port 27017
// 将另外两个节点加入到当前的副本集
sh.addShard('shrs1:27018')
// 查看副本集状态
sh.status()

3.mongo-express 图形化界面安装

  • docker-compose 代码
  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 10081:8081
  • 浏览器连接 GUI 客户端
localhost:10081
退出移动版