MongoDB的Sharding机制解决了海量存储和动态扩容的问题,但离生产环境的高可靠,高可用还有距离,Sharding在单点出现故障时就无能为力了。但是MongoDB的副本集却可以很轻松的处理单点故障,所以就有了Replica Sets + Sharding的高可用,高安全的架构。

架构如下:

1,shard服务器:使用Replica Sets确保每个数据节点都具有备份、自动容错转移、自动恢复的能力。

2,配置服务器:使用使用3个配置服务器确保元数据完整性

3,路由进程:使用3个路由进程实现平衡,提高客户端接入性能,架构如下

3个分片进程:shard11,shard12,shard13组成一个副本集,提供Sharding中shard1的功能。

3个分片进程:shard21,shard22,shard23组成一个副本集,提供Sharding中shard2的功能。

3个配置服务器进程和3个路由器进程

--------------------------------------------------------------------------------------------

现在我们开始搭建整个架构(因为没那么多机器,我还是用本地的目录来模拟机器)

主机  ip 服务及端口

ServerA

mongodb1

mongodb2

mongodb3

mongodb4  

127.0.0.1

mongod shard11:10000

mongod shard21:20000

mongod config 1:30000

mongos :40000

ServerB

mongodb5

mongodb6

mongodb7

mongodb4  

127.0.0.1 

mongod shard12:10001

mongod shard22:20001

mongod config 2:30001

mongos :40000

ServerC

mongodb9

mongodb8

mongodb11

mongodb4 

 127.0.0.1

mongod shard13:10002

mongod shard23:20002

mongod config 3:30002

mongos :40000

1,启动Shard1进程并配置Replica Sets

启动mongod shard11进程,副本集名称:shard1

启动mongod shard12进程,并设置副本集:shard1

启动mongod shard13进程,并设置副本集:shard1

把这三个进程配置成副本集,新开一个cmd,用来执行各种非启动命令,连接到上面三个进程中的任何一个,把他们配置成副本集,操作如下

2,启动Shard2进程并配置Replica Sets

启动mongod shard21进程,副本集名称:shard2

启动mongod shard22进程,并设置副本集:shard2

启动mongod shard23进程,并设置副本集:shard2

把这三个进程配置成副本集,操作如下

到此两个副本集够成的分片已经配置完成,下面配置Config server和Route process

3,配置3个Config Server

4配置Route Process

chunk大小为1M,方便我们测试效果。

5配置分片的表和片键

我用的还是Friends库中的FriendUser表来做分片,片键是_id,因为cmd宽度太小了添加分片的命令显示不完全,我手动把他们列出来

添加分片

db.runCommand({addshard:"shard1/127.0.0.1:10000,127.0.0.1:10001,127.0.0.1:10002"})

db.runCommand({addshard:"shard2/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002"})

到此整个构架已经配置完成了,我们来验证下配置的情况,我通过客户端添加10000条数据到数据库中

可以看到分片已经执行。

------------------------------------------------------------------------------------------------

现在做下容灾的测试,我停掉shard11,看看结果会如何。

打开shard11的 cmd窗口,Ctrl+C停止进程

查看下状态

状态完好,我在插入20000条数据,看看效果

可以看到依然可以运行。

这里会出现这种情况:当有三台机器做副本集的时候,只能是一太服务器当掉,当有两台当掉的时候,第三台不能由从库变为主库。

这里应该注意副本集的选举规则: 当主库当掉时,次节点将触发选举。 收到副本集大多数成员投票的第一个节点将成为主节点。副本集选举最重要的功能是副本集的大多数原始成员节点必须参与选举才能成功。如果您的副本集包含三个 成员,有两个或三个节点可以相互连接时该副本集可选出一个主节点。如果该副本集中有两个节点脱机,则剩余的一个节点仍将作为次节点。

转载于:https://www.cnblogs.com/spnt/archive/2012/07/26/2610070.html

Mongodb的Replica Sets + Sharding架构相关推荐

  1. 公司的实战Replica Sets+Sharding方案

    公司的实战Replica Sets+Sharding方案 公司mongo集群分片实战 准备九台服务器, 分片1: 172.16.0.124:11731 主 172.16.0.127.11731 备 1 ...

  2. Mongo之架构部署(Replica Sets+Sharding)

    一.环境 要构建一个 MongoDB Sharding Cluster,需要三种角色: •Shard Server: mongod 实例,用于存储实际的数据块. •Config Server: mon ...

  3. Mongodb -(3) replica set+sharding

    分片集搭建 ---何旭东 目录 分片集搭建............................................................................... ...

  4. 学习MongoDB(Troubleshoot Replica Sets) 集群排除故障

    Test Connections Between all Members(集群中节点网络测试) 在进行Mongodb集群时,每个节点的网络都需要互动,假设有3个服务器节点. m1.example.ne ...

  5. Replica Sets+Sharding方案之真枪实弹篇

    话说在虚拟机中会报各种错误.在真实的环境中就不会那么痛苦了. 想了一下虚拟机中报错的原因有. 机器卡,处理的时间长就会抛出错误 还有虚拟机假设给的空间太小.也会报异常. 此处讲讲我的大致思路. 第一, ...

  6. 实战mongodb3.06 Relica Sets+sharding集群

    实战mongodb3.06 Relica Sets+sharding集群 前  言 MongoDB 的Sharding机制解决了海量存储和动态扩容的问题,但离实际生产环境所需要的高可靠.高可用还有些距 ...

  7. mongodb的sharding架构搭建

    sharding是一种将海量数据水平扩展的集群系统,数据分表存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式mongodb集群. sharding不是某个特定数据库 ...

  8. Mongodb安装搭建Replica Set+Sharding集群

    2019独角兽企业重金招聘Python工程师标准>>> Mongodb安装搭建Replica Set+Sharding集群 一.简介 Replica Set:复制在为数据提供了冗余同 ...

  9. 基于docker容器下mongodb 4.0.0 的Replica Sets+Sharded Cluster集群

    目标 使用三台物理机做数据库集群 任意一台宕机之后不会影响线上的业务运转 不会有任何的数据丢失 方案 采用的是Replica Sets+Sharded Cluster的集群 具有高可用,故障转移,分布 ...

最新文章

  1. Bootstrap中文本的样式
  2. 详解MariaDB数据库的触发器
  3. 使用Emit的TypeBUilder动态创建接口程序集的性能报告。
  4. springboot整合mybatis记录
  5. psp进度(11月25号-31号)
  6. 我2017年游泳特训安排
  7. jmeter从mysql取值_Jmeter获取数据库值并作为参数请求(转载)
  8. wireshark: there are no interfaces on which a capture can be done
  9. Python——编码风格建议
  10. python文本菜单程序_从〇到一: Python GUI 程序:记事本
  11. 75-100-024-测试-MySQL 双表优化案例
  12. Android RadioButton 语言切换问题
  13. OMG!最难啃的《深度学习》圣经花书,居然新出版了视频课!
  14. Firefox中文版与英文版转换
  15. spyder5 更改为简体中文的方法,与spyder4不同
  16. 用来打发时间的EUserv
  17. echarts 图例翻页+图例自定义样式
  18. 计算机桌面 文字大小,怎样调整电脑字体大小_怎样调整字体大小
  19. CH579中ADC增益多通道自动换挡
  20. Weston 窗口管理(2)

热门文章

  1. 网站地图对优化的优势有哪些?
  2. android BiConsumer 使用 ClassNotDefException
  3. go语言学习(3)面向对象,结构体和方法
  4. pandas groupby 分组操作
  5. go语言笔记——还是大爱的我的python,开发效果高,tornado的性能也很不错
  6. lucene底层数据结构——底层filter bitset原理,时间序列数据压缩将同一时间数据压缩为一行...
  7. VMware中安装CentOS Linux release 7.4.1708 (Core)
  8. 【linux基础】CMake如何生成动态链接库文件
  9. 第一期站立会议2(11.16个人)
  10. SQLite数据库管理工具(SQLiteStudio)v3.1.1