可伸缩性是MongoDB的一个重要特征。虽然大多数数据库都支持手动分片,MongoDB支持自动分片。这篇文章提供了MongoDB自动分片的方法,15分钟,在MongoDB中创建分片。
数据分割以及在不同机器存储数据的过程称之为分片。通过在多台机器上分割数据,使得数据库系统能存储更多的数据,和处理更多的负载,在此过程中不需要更多更强大的机器。
有两种类型的分片,手动和自动分片。
在手动分片中,应用软件的代码管理不同服务器上的数据,并且在适当的服务器上查询并返回数据。手动分片可以使用虚拟数据库软件包完成。
MongoDB自动分片中,数据库服务器集群或shards处理数据的分割和数据自动重新负载。
自动分片
MongoDB分片的基本概念是分割集群成更小的块,或是文档。这些分档可以分布于很多的shards,这样每个shard负载总数据集得子集。
举个例子,思考一下。当你从集合选择一个key安装分片时,并使用key分割数据。这个key称为shard key。
假设你有一个联系人的集合。如果我们选择“姓”作为shard key,那么一个分片可以存储“姓”以A-F开头的,下一个分片可以存储“姓”以G-P开头的,最后一个分片存储“姓”以Q-Z开头的。当你添加和删除分片时,MongoDB会重新做数据的负载,这样每个分片会获取一定量的流量和实际量的数据。
所以你决定什么开始分片呢?考虑一下几个因素:
1. 你目前的机器的磁盘什么时候用完
2. 你希望比单一的mongod处理速度更快
3. 你希望在内存中保留更多的数据以改善性能
安装分片
分片需要包括不同的组件:
1. shard
分片存放数据集合的子集。分片可以是单一的mongod服务器(生产环境/测试环境),也可以是集合的复制(生产环境)
2. mongos
这是发送请求的过程。它发送数据请求,并且聚合服务器响应。它不会存储任何数据或是配置信息,虽然它从配置服务器做信息cache。
3. config server
配置服务器存储集群的配置信息。比如,数据位于哪个分片上,使用mongos决定请求的发送。
启动服务器
首先我们需要启动配置服务器和mongos。我们需要启动配置服务器,因为mongos使用配置服务器获取它的配置信息。
$ mkdir –p ~/dbs/config $ ./mongod –dbpath ~/dbs/config –port 20000
现在我们启动mongos进程。发送服务器甚至不需要数据目录,但需要知道配置服务器的位置。
$ ./mongs –port 30000 –configdb localhost:20000
由mongos管理分片。
添加新分片
动正常的mongod实例(或是复制)
$ mkdir –p ~/dbs/shard1 $ ./mongod –dbpath ~/dbs/shard1 –port 10000
现在连接到已启动的mongos进程,添加分片到集群
首先,打开shell连接到mongos进程:
$ ./mongo localhost:30000/admin
现在使用addshard数据库命令添加这个分片
>db.runCommand({addshard: “localhost:10000”, allowLocal:true}) { “added”:”localhost:10000”, “ok”:true }
如果你运行分片在localhost才需要“allowLocal”这个键,让MongoDB知道你是在生产环境中,而且正在做什么。
数据分片
为了允许MongoDB分布数据,你必须开启数据和集合上分片。比如,启用数据库acme的分片功能:
>db.runCommand({“enablesharding”:”acme”})
一旦已经在数据库acme上启用,通过运行shardcollection命令对集合分片:
>db.runCommand({“shardcollection”:”acme.products”,”key”,:{“_id”:1}})
集合根据”_id”键实现了分片。当有数据被添加到acme上时,它会自动地根据”_id”值分布在分片上。
转自: http://simple-is-better.com/news/626
分享到:
相关推荐
mongodb-spark官方连接器,运行spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:1.1.0可以自动下载,国内网络不容易下载成功,解压后保存到~/.ivy2目录下即可。
MongoDB权威指南:MongoDB:The Definitive Guide第一版 第二版 中、英文4本合集
centos7.0+mongodb 3.4 集群搭建:分片+副本集。3台虚拟机。如有问题可留言。
MongoDB程序员认证: MongoDB Certified Developer Study Guide - Study Guide - Exam Preparation - Practise Questions
mongodb副本集加分片集群安全认证使用账号密码登录
04mongodb基本概念:文档.mp4
mongoDB数据库资源:xc_cms.zip
第三方mongo spark连接器,运行spark-submit --packages com.stratio.datasource:spark-mongodb_2.10:0.11.2可以自动下载,国内网容易下载失败,把这个文件解压后拷贝到~/.ivy2目录下即可。 ...
MongoDB4.2分片及副本集群搭建 MongoDB集群 MongoDB分片 MongoDB副本 MongoDB副本集群
MongoDB分片介绍
MongoDB排序错误:Sort operation used more than the maximum 33554432 bytes of RAM错误描述我
mongodb的分片备份 复制集的备份和配置的备份
FoundationDB文档层 FoundationDB文档层是一个无状态微服务器,它公开了面向文档的数据库API。 文档层使用MongoDB:registered:有线协议,允许通过... 不需要分片键,因为FoundationDB后端会自动处理数据分发。 您可以
技术关键词: MongoDB 内容关键词: NoSQL文档数据库 用途: 用于存储和检索大量的分布式数据 内容描述: 一个基于分布式文件存储的开源数据库系统。MongoDB是一个NoSQL数据库,使用文档来存储数据,非常适合处理...
MongoDB数据库
mongodb中文API及分布式分片实例详解。
本文详细介绍了MongoDB的集群模式,包括复制集的构建和管理,分片机制的原理及其应用。重点阐述了如何通过复制集实现MongoDB的高可用性,包括数据的复制、读写分离、异地容灾等关键技术。同时,文章深入分析了分片...
mongodb集群分片操作以及增加acl,有什么问题联系我!
MongoDB分片副本级 详细的讲述了MongoDB分片副本级配置
13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群...