mongodb 分片代替数据库分表

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

MongoDB 的Sharding机制解决了海量存储和动态扩容的问题,但离生产环境的高可靠,高可用还有距离,Sharding在单点出现故障时就无能为力了。但是 MongoDB的副本集却可以很轻松的处理单点故障,所以就有了Replica Sets + Sharding的高可用,高安全的架构Mongodb支持自动分片和划分架构,可以利用它构建一个水平扩展的数据库集群系统,将数据库分表存储在各个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,用来执行各种非启动命令,连接到上面三个进程中的任何一个,把他们配置成副本集,操作如下

这里启动只多了一个命令:shardsvr,用这个命令就表示这个进程是Shard进程。

 

 

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条数据,看看效果

可以看到依然可以运行。

 

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

 

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

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
1月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
2月前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
22 1
|
2月前
|
存储 NoSQL 前端开发
MongoDB 分片
10月更文挑战第17天
37 2
|
2月前
|
存储 NoSQL Shell
MongoDB 创建数据库
10月更文挑战第12天
72 4
|
2月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
2月前
|
存储 NoSQL MongoDB
mongodb的数据库表怎么创建
在此过程中,理解并掌握这些基本操作,是深入探索MongoDB魅力,乃至构建高效数据解决方案的关键所在。通过实践,您将更加深刻地体会到这种随需应变的数据管理模式带来的便利与效率提升。
35 0
|
2月前
|
存储 NoSQL MongoDB
小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态
基于MongoDB灵活模式的特性,小川实现了功能的快速迭代和上线,而数据库侧无需任何更改
|
2月前
|
运维 NoSQL BI
简道云搭载阿里云MongoDB数据库,帮助数以万计企业重构业务系统
通过与MongoDB和阿里云团队的合作,让简道云少走了弯路,保障了线上服务的长期稳定运行,提高了吞吐效率,并相应降低了线上运行成本