资讯专栏INFORMATION COLUMN

mongo分片集群搭建

BlackHole1 / 3547人阅读

摘要:集群搭建方式主从复制目前官方已不推荐使用副本集的副本集不同于以往的主从模式。分片是一种可以水平扩展的模式在数据量很大时特给力实际大规模应用一般会采用这种架构去构建。

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
遇到的一些问题

mongo-express连接不上mongos, 启动mongos要加上--bind_ip_all, 否则就只能容器里面才能访问mongos服务

添加其他节点添加不上, 注意一定要在primary节点添加其他节点, 只有primary节点有权对集群状态做出改变

当shrad节点只剩下一个活着时, 无法选出新的primary, 这是shard set不能提供服务

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19534.html

相关文章

  • 搭建 MongoDB分片(sharding) / 分区 / 集群环境

    摘要:搭建分片分区集群环境安装三台机器关闭防火墙主节点副节点仲裁仲裁主节点副节点副节点仲裁主节点端口分配下载并且安装所有版本二进制文件自行下载改名分别在每台机器建立六个目录,因为不存储数据,只需要建立日志文件目录即可。 搭建 MongoDB分片(sharding) / 分区 / 集群环境 1. 安装 MongoDB 三台机器 关闭防火墙 systemctl stop firewalld.se...

    KunMinX 评论0 收藏0
  • 初识MongoDB分片

    摘要:复制一份,命名为,修改文件内容如下注意改为我们第一步创建的目录,端口号改为这个随意,只要该端口没被占用即可,表示这是一个配置服务器,另外由于我们的配置服务器要做成备份集,所以要设置。 分片是指将数据拆分,拆分后存放在不同的机器上的过程,以此来降低单个服务器的压力,同时也解决单个服务器硬盘空间不足的问题,让我们可以用廉价的机器实现高性能的数据架构。有的小伙伴不理解分片和副本集的差异,一言...

    Nino 评论0 收藏0
  • UCloud MongoDB 如何应对高考填志愿的上亿流量高峰

    摘要:优志愿张海鹏宋体背景宋体每年月下旬到月下旬期间是高考填志愿的高峰期,也是优志愿后端面临大流量高并发请求的业务高峰期。对于优志愿读多写少的场景及其业务高峰期,用户可以按需增删节点,更好地实现读取性能的扩展。 随着用户规模的增长,数据库的压力也在成倍增加。面对大流量、高并发,UCloud MongoDB 做到了高效,并展现出了更好的性能体验。 —— 优志愿 CTO 张海鹏 背景...

    cppprimer 评论0 收藏0
  • 【云数据库 MySQL UDB】什么是UDB?产品功能,规格版本和使用限制

    摘要:版本目前支持和,用户可以根据需求选择相应的云数据库版本。硬盘云数据库的硬盘大小。云数据库提供自动备份和手动备份两种方式,防止数据丢失,避免误操作带来的风险。日志日志是用于记录云数据库操作事件的记录文件。什么是云数据库MongoDB?云数据库简介: 云数据库MongoDB是基于成熟云计算技术的高可用、高性能的数据库服务,完全兼容MongoDB 协议,支持灵活部署,除副本集实例架构外,云数据库...

    Tecode 评论0 收藏0
  • mongoDB运维篇④】Shard 分片集群

    摘要:简述为何要分片减少单机请求数,降低单机负载,提高总负载减少单机的存储空间,提高总存空间。就是用来存储所有节点的配置信息每个的范围在各的分布情况该集群中所有和的配置信息。 简述 为何要分片 减少单机请求数,降低单机负载,提高总负载 减少单机的存储空间,提高总存空间。 showImg(http://static.oschina.net/uploads/space/2014/0201/1...

    yy736044583 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<