mongodb的sharding(分片)横向扩容的方法

转载 2016年08月29日 17:48:05

sharding是mongodb进行横向扩容的方法sharding把一个集合的不同部分存储到不同的机器上,当一个数据库集合变得很大时,你只需要加入新的机器即可。sharding自动把集合的数据分布到新的服务器上,sharding自动实现数据和读写负载均衡。

为了使集群具有sharding功能,首先需要建立一个sharding集群。然后就可以在集群内指定某个数据库是否启用sharding,在启用sharding的数据库内,可以选择哪个集合(collection)可以sharding,每个sharding的集合要有一个shard key。shard key用于决定该集合内的所有文档如何在集群内的机器上分布。shard key是一个字段,存在于每一个文档中。一个给定的分片保存了所有key值在其范围内的文档。shard key如同indexes一样,可以使单字段或多字段的。

在一个shard内,mongodb还把文档分为chunks,每个chunk代表本shard内的一个小的范围。当一个chunk的大小超过chunk size时,mongodb把chunk切分为更小的chunk,但依然属于这个shard。

shard key的选择

shard key的好坏直接影响到集群的性能,容量和能力。选择shard key要考虑数据的模式和你的应用程序读写数据库的方式。

理想的shard key具有以下特点:

    1. 易于切分,最好是无限的。

    2. 具有高度的随机性。

    3. 应该是你的请求的主要字段。

mongodb使用balancing进行分布式数据均衡。当一个shard与其它shard相比具有太多的chunk时,mongodb自动在shard间均衡数据,但应用层对此无感知。

sharding会给集群带来一些负载,在以下情况发生时,可以考虑使用sharding:

1. 数据接近或超过单个节点的存储容量。

2.系统中活动working set的大小很快将要超过系统RAM的最大容量。

3.系统有大量的写请求,单个mongodb实例不足以支持。

设计系统时,如果预见到最终需要扩容时,考虑哪个集合需要sharding,并为其设计shard key。

一个sharded集群需要以下配置:


  • 三台配置服务器.


  • 2台以上的shards服务器,每个服务器运行一个或多个mongod实例。


  • 一个或多个mongos实例

MongoDB集群如何无缝扩容扩展

1、什么情况下需要进行扩容 数据量接近单机磁盘总容量 数据容量接近磁盘容量80% df内存使用量接近内存容量80% free访问量 iostat -xdk 1 storage与dat...
  • hanyueqi
  • hanyueqi
  • 2017年03月06日 15:50
  • 1301

关于Mongodb的全面总结

MongoDB的内部构造《MongoDB The Definitive Guide》 MongoDB的官方文档基本是how to do的介绍,而关于how it worked却少之又少,本人也刚...
  • q454684431
  • q454684431
  • 2015年10月09日 17:52
  • 24621

mongodb + php扩展文件

  • 2017年10月30日 15:20
  • 18.22MB
  • 下载

【php + mongodb】windows php5.4 配置 mongodb 扩展(附各种其它版本下载地址)

参考: http://jingyan.baidu.com/article/d5c4b52bef7268da560dc5f8.html http://www.jb51.net/article/51601...
  • snow_finland
  • snow_finland
  • 2016年02月15日 16:58
  • 1958

mongodb 运行时添加新的分片复制集

由于业务迅速扩展,当前的分片已经不能满足要求,需要在mongodb线上在增加一个分片。 1、在master2上建立3个mongodb先设立好ip和域名的映射关系:vim /etc/hosts192.1...
  • mchdba
  • mchdba
  • 2016年07月09日 16:31
  • 4737

linux上安装mongodb扩展——mongo和mongodb

实现目的: 安装PHP的MongoDB数据库扩展,通过PHP程序连接MongoDB数据库 具体操作: 一、安装PHP的MongoDB数据库扩展(在Web服务器192.168.21.127上操作) 下...
  • han_cui
  • han_cui
  • 2017年01月10日 14:52
  • 1530

MongoDB

一、Introduction MongoDB是一个面向文档的数据库。mysql等是面向记录的。MongoDB中,一个记录是一个文档。是NoSQL类型的产品。即非关系型的。类似还有memcache、r...
  • xingzhishen
  • xingzhishen
  • 2018年01月16日 15:54
  • 30

windows下安装mongoDB扩展

windows环境下安装mongoDB的扩展
  • For_My_Own_Voice
  • For_My_Own_Voice
  • 2015年08月29日 17:00
  • 1293

笔记:数据平滑扩容和迁移

3种方式 1)停止服务 ->  qian 2)
  • span76
  • span76
  • 2014年09月01日 16:34
  • 1680

mongo扩容

目前部署是mongoS有三台,即mongo服务器 mongoDb有三组,每一组有三台主副机,其中一台主,两台副 起初在设置的时候,每组副本集其IP都在server.conf里面写死了,一组...
  • fishmai
  • fishmai
  • 2016年06月18日 07:19
  • 954
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mongodb的sharding(分片)横向扩容的方法
举报原因:
原因补充:

(最多只允许输入30个字)