MongoDB分片测试

ReplicaSet+Sharding部署:http://blog.csdn.net/lichangzai/article/details/50927588

1. 连接到mongos可查看系统相关信息

configsvr> show dbs

configsvr> use config

configsvr> show collections

onfigsvr> db.mongos.find()

{ "_id" :"racdb:28885", "ping" :ISODate("2016-03-21T09:23:05.106Z"), "up" :NumberLong(1436), "waiting" : true, "mongoVersion" :"3.2.3" }

{ "_id" :"host8.localdomain:28885", "ping" :ISODate("2016-03-21T09:23:07.960Z"), "up" :NumberLong(1427), "waiting" : true, "mongoVersion" :"3.2.3" }

{ "_id" :"host9.localdomain:28885", "ping" :ISODate("2016-03-21T09:23:03.521Z"), "up" :NumberLong(1407), "waiting" : true, "mongoVersion" :"3.2.3" }

configsvr> db.shards.find()

{ "_id" : "shard1","host" : "shard1/host8:28017,racdb:28017" }

{ "_id" : "shard2","host" : "shard2/host8:28018,racdb:28018" }

configsvr> db.databases.find()

{ "_id" :"im_offline_msg", "primary" : "shard1","partitioned" : true }

{ "_id" : "testdb","primary" : "shard2", "partitioned" : true }

{ "_id" : "test","primary" : "shard1", "partitioned" : true }

{ "_id" : "blogdb","primary" : "shard2", "partitioned" : false }

2. 对数据库启用分片

2.1 当前可连接到 mongos 查看数据库或者集合的分片情况(没有分片):

[plain] view plain copy 在CODE上查看代码片派生到我的代码片

mongos> db.stats()

mongos> db.tab.stats()

2.2 对数据库激活分片功能:

[plain] view plain copy 在CODE上查看代码片派生到我的代码片

# mongo racdb:28885

mongos>sh.enableSharding("test")

#或者

# mongo racdb:28885

mongos> use admin

mongos> db.runCommand( { enableSharding:"blogdb"} )

2.3 此时查看数据库分区情况,partitioned变为 “true”。

configsvr> use config

switched to db config

configsvr> db.databases.find()

{ "_id" :"im_offline_msg", "primary" : "shard1","partitioned" : true }

{ "_id" : "testdb","primary" : "shard2", "partitioned" : true }

{ "_id" : "test","primary" : "shard1", "partitioned" : true }

{ "_id" : "blogdb","primary" : "shard2", "partitioned" : true }

启用数据库分片并没有将数据进行分开,还需要对 collection 进行分片。

3. 对集合启用分片

启用前,有几个问题需要考虑的:

  • 选择哪个键列作为shard key  。(更多参考:Considerations for Selecting Shard Keys)
  • 如果集合中已经存在数据,在选定作为shard key 的键列必须创建索引;如果集合为空,mongodb 将在激活集合分片(sh.shardCollection)时创建索引。
  • 集合分片函数sh.shardCollection ,

sh.shardCollection("<database>.<collection>",shard-key-pattern)

mongos>sh.shardCollection("test.tab", { "_id": "hashed"})

测试插入数据:

--使用python命令

#创建python文件

$ vi batch_insert.py

#-*- coding: UTF-8 -*-

import pymongo

client = pymongo.MongoClient("racdb", 28885)

db = client.testdb

#查看testdb数据库中集合信息

print (db.collection_names())

#连接到my_collection集合

print (db.my_collection)

#清空my_collection集合文档信息

db.my_collection.remove()

#显示my_collection集合中文档数目

print (db.my_collection.find().count())

#插入10000条文档信息

for i in  range(10000):

    db.my_collection.insert({"id":i,"name":"Licz"})

#显示my_collection集合中文档数目

print  (‘插入完毕,当前文档数目:‘)

print (db.my_collection.find().count())

#执行插入

[[email protected] ~]$ python2.7.3batch_insert.py

[u‘system.indexes‘, u‘table1‘,u‘my_collection‘]

Collection(Database(MongoClient(host=[‘racdb:28885‘],document_class=dict, tz_aware=False, connect=True), u‘testdb‘), u‘my_collection‘)

0

插入完毕,当前文档数目:

10000

#或是用mongo shell插入测试数据

for (var i=1; i<=100000; i++) {

db.cc.insert({"id": i,"myName" : "cc"+i, "myDate" : new Date()});

}

启用集合分片

mongos> show collections

mongos> db.cc.find()

mongos> db.cc.createIndex({"id": "hashed" })

mongos> db.cc.getIndexes()

mongos>sh.shardCollection("testdb.cc", { "id": "hashed"})

mongos> db.stats()

mongos> db.cc.stats()

--查看sharding 状态

mongos> db.printShardingStatus();

参考:http://blog.csdn.net/kk185800961/article/details/45932747

http://www.cnblogs.com/magialmoon/archive/2013/04/11/3015394.html

??

时间: 2024-08-09 02:19:19

MongoDB分片测试的相关文章

MongoDB分片存储的集群架构实现

MongoDB分片存储的集群架构实现 如果需要存储大量数据,或者系统的读写吞吐量很大的时候,单个server就很难满足需求了.这个时候我们可以使用MongoDB的分片机制来解决这些问题. 分片的基本概念 分片(sharding)是一种水平扩展(horizontal scaling)的方式,把一个大的数据集分散到多个片服务器上,所有的片服务器将组成一个逻辑上的数据库来存储这个大的数据集.分片对用户(应用层)是透明的,用户不会知道数据很被存放到哪个片服务器上. 这种方式有两个好处: 分片之后,每个片

Mongodb分片(Sharding)功能实现

MongoDB 分片概述 分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量.这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据. 为什么使用分片 复制所有的写入操作到主节点 延迟的敏感数据会在主节点查询 单个副本集限制在12个节点 当请求量巨大时会出现内存不足. 本地磁盘不足 垂直扩展价格昂贵 MongoDB分片 下图展

Bugsnag的MongoDB分片集群使用经验

Bugsnag是一家为移动应用开发者提供实时的Bug追踪及检测服务的创业公司,Bugsnag已经使用MongoDB存储超过TB级的文档数据.从Bugsnag的第一个版本开始他们就使用MongoDB存储业务数据.近日,Bugsnag的工程师Simon Maynard在博客上分享了他们的MongoDB分片集群经验,并开源了几个他们常使用的脚本. 带标签的分片(Tag Aware Sharding) 带标签的分片是MongoDB 2.2版本中引入的新特性,此特性支持人为控制数据的分片方式,从而使数据存

MongoDB基础教程系列--第九篇 MongoDB 分片

1.分片介绍 分片(sharding)是将数据拆分,将其分散存到不同机器上的过程.MongoDB 支持自动分片,可以使数据库架构对应用程序不可见.对于应用程序来说,好像始终在使用一个单机的 MongoDB 服务器一样,另一方面,MongoDB 自动处理数据在分片上的分布,也更容易添加和删除分片. 请记住:复制是让多台服务器拥有同样的数据副本,每一台服务器都是其他服务器的镜像,而每一个分片都与其他分片拥有不同的数据子集. 通常,分片可以用来: 增加可用的内存 增加可用的磁盘空间 减轻单台服务器的负

搭建mongodb分片

搭建mongodb分片 http://gong1208.iteye.com/blog/1622078 Sharding分片概念 这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB集群. MongoDB 的数据分块称为 chunk.每个 chunk 都是 Collection 中一段连续的数据记录,通常最大尺寸是 200MB,超出则生成新的数据块. 要构建一个 MongoDB Sharding C

MongoDB 分片的原理、搭建、应用

一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分.通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器).大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨分片查询.使用分片的时机: 1,机器的磁盘不够用了.

mongo-副本集分片测试

http://www.cnblogs.com/yuechaotian/archive/2012/10/31/2747951.html mongo-副本集分片测试 1. 启动一对副本集(增加分片参数) D:\mongodb>mongod --dbpath=d:\mongodb\db --port 2222 --replSet neu/127.0.0.1:3333 --shardsvr E:\mongodb>mongod --dbpath=e:\mongodb\db --port 3333 --r

MongoDB 分片的原理、搭建、应用 !

一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移).通过一个名为mongos的路由进程进行操作,mongos知道数据和片的对应关系(通过配置服务器).大部分使用场景都是解决磁盘空间的问题,对于写入有可能会变差(+++里面的说明+++),查询则尽量避免跨

MongoDB 分片搭建

MongoDB 已经到了第三篇,同时也是搭建的最后一篇文章了. MongoDB 的分片搭建. 为什么使用分片? 我们为什么要使用分片呢? 因为现在的数据量越来越大了,为了扩大DB 的性能 以及吞吐量. MongoDB 分片构架 A MongoDB sharded cluster consists of the following components: shard: Each shard contains a subset of the sharded data. Each shard can