基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)

简介: 基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群(1)

目标


使用三台物理机做数据库集群
任意一台宕机之后不会影响线上的业务运转 
不会有任何的数据丢失


方案


采用的是Replica Sets+Sharded Cluster的集群
具有高可用,故障转移,分布式存储等特性


image.png


image.png


依上图所示我们此次集群配置如下:
三台物理机,每台物理机拥有完整的分片集群配置,都可独立运行
配置服务器:使用使用3个配置服务器确保元数据完整性。
路由(mongos)进程:使用3个路由进程实现平衡,提高客户端接入性能
3 个分片进程:Shard11,Shard12,Shard13 组成一个副本集,提供Sharding 中 Shard1 的功能。
3 个分片进程:Shard21,Shard22,Shard23 组成一个副本集,提供Sharding 中 Shard2 的功能。


构建一个 mongoDB Sharding Cluster 需要三种角色:shard 服务器(ShardServer)、配置服务器(config Server)、路由进程(Route Process)


  • Shard 服务器


shard 服务器即存储实际数据的分片,
每个 shard 可以是一个 mongod 实例, 
也可以是一组 mongod 实例构成的 Replica Sets.
为了实现每个 Shard 内部的故障 自动转换,
MongoDB 官方建议每个 shard 为一组 Replica Sets.


  • 配置服务器


为了将一个特定的 collection 存储在多个 shard 中,
需要为该 collection 指定 一个 shard key,
决定该条记录属于哪个 chunk,
配置服务器可以存储以下信息, 
每个shard节点的配置信息,
每个chunk的shard key范围,
chunk在各shard 的分布情况,
集群中所有 DB 和 collection 的 sharding 配置信息。


  • 路由(mongos)进程


它是一个前端路由,客户端由此接入,
首先询问配置服务器需要到哪个 shard 上查询或保存记录,
然后连接相应的 shard 执行操作,最后将结果返回给客户端,
客户端只需要将原本发给 mongod 的查询或更新请求原封不动地发给路由进程,
而不必关心所操作的记录存储在哪个shard 上。


实施


目前我在自己电脑上搭建该环境即就一台物理机


先规划下端口分配


mongos1 mongos2 mongos3
10011 10012 10013
config1 config2 config3
10021 10022 10023
share11 share12 share13
10031 10032 10033
share21 share22 share23
10041 10042 10043


文件目录


先创建一个如下的目录结果
mengfaniaodeMBP:third_software mengfanxiao$ tree mongodb/
mongodb/
├── node1
│   ├── config-server1
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   ├── mongos1
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   ├── shard11
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   └── shard21
│       ├── backup
│       ├── config
│       │   └── config.conf
│       └── db
├── node2
│   ├── config-server2
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   ├── mongos2
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   ├── shard12
│   │   ├── backup
│   │   ├── config
│   │   │   └── config.conf
│   │   └── db
│   └── shard22
│       ├── backup
│       ├── config
│       │   └── config.conf
│       └── db
└── node3
    ├── config
    ├── config-server3
    │   ├── backup
    │   ├── config
    │   │   └── config.conf
    │   └── db
    ├── db
    ├── mongos3
    │   ├── backup
    │   ├── config
    │   │   └── config.conf
    │   └── db
    ├── shard13
    │   ├── backup
    │   ├── config
    │   │   └── config.conf
    │   └── db
    └── shard23
        ├── backup
        ├── config
        │   └── config.conf
        └── db
如果3台物理机的话 把对应的node1 node2 node3复制过去即可
相关文章
|
10月前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
1074 44
|
10月前
|
NoSQL MongoDB 数据库
使用 docker 快速搭建开发环境的 mongodb 服务
本指南介绍如何使用 Docker 和 Docker Compose 部署 MongoDB 和 Mongo Express。首先,通过 Docker 命令分别启动 MongoDB(镜像 `mongo:7.0.14`)和 Mongo Express(镜像 `mongo-express:1.0.2-20-alpine3.19`),并配置环境变量确保两者能正确连接。接着,提供了一个 `docker-compose.yaml` 文件示例,包含 MongoDB 数据卷、健康检查及服务依赖配置,简化多容器管理。
1731 2
|
10月前
|
存储 NoSQL 安全
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
389 0
|
存储 NoSQL MongoDB
docker安装Mongodb
这篇文章详细说明了如何使用Docker安装MongoDB,包括拉取镜像、创建并运行容器、数据持久化存储以及访问容器内的MongoDB服务的具体步骤。
1271 1
|
存储 NoSQL 算法
MongoDB保姆级指南(中):从副本集群、分片集群起航,探索分布式存储的趋势!
本文一起来聊聊MongoDB集群,顺带以MongoDB集群为起点,共同探讨一下分布式存储的发展趋势~
2984 15
|
自然语言处理 运维 NoSQL
MongoDB集群同步
实现 MongoDB Cluster-to-Cluster 即集群同步的工具是:mongosync 详情可参考如下官方文档: https://www.mongodb.com/zh-cn/docs/cluster-to-cluster-sync/current/quickstart/ 以上这个地址的文档一看就是机器翻译的,可能有不恰当的地方,但基本可参考使用。 以下是本次在某项目地配置集群同步的简要步骤,可参考使用。
312 6
|
存储 运维 NoSQL
轻松上手:逐步搭建你的高可用MongoDB集群(分片)
【8月更文挑战第13天】在数据激增的背景下,传统单机数据库难以胜任。MongoDB作为流行NoSQL数据库,采用分片技术实现水平扩展,有效处理海量数据。分片将数据分散存储,提高并发处理能力和容错性,是高可用架构基石。构建MongoDB集群需理解shard、config server和router三组件协同工作原理。通过具体实例演示集群搭建流程,包括各组件的启动及配置,确保数据高可用性和系统稳定性。合理规划与实践可构建高效稳定的MongoDB集群,满足业务需求并支持未来扩展。
805 0
|
5月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
5月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
491 79