mongodb 手动分片的命令汇总

手动分片的操作

自动分片会带来性能的下降. 所以要合理使用手动分片. 并且配合Tag一起使用.

# 对于4个shard的程序, 预先处理的指令
1. 加入分片服务器
sh.addShard( "192.168.1.60:27017" )
sh.addShard( "192.168.1.61:27017" )
sh.addShard( "192.168.1.62:27017" )
sh.addShard( "192.168.1.63:27017" )

2. 启动collection分片, 并指定分片键
db.location.ensureIndex({"hostid":1})
sh.enableSharding("mydb")
sh.shardCollection("mydb.location", { "hostid": 1})

运行 sh.status()

{ "_id" : "mydb", "partitioned" : true, "primary" : "shard0003" }
mydb.location
shard key: { "hostid" : 1 }
chunks:
shard0003 1
{ "hostid" : { "$minKey" : 1 } } -->> { "hostid" : { "$maxKey" : 1 } } on : shard0003 Timestamp(1, 0)

sh.addShardTag("shard0000", "TAG0")
sh.addShardTag("shard0001", "TAG1")
sh.addShardTag("shard0002", "TAG2")
sh.addShardTag("shard0003", "TAG3")

# 具体操作
1. 加入tagrange,
加入两个
sh.addTagRange("mydb.location", { hostid: "0000000" }, { hostid: "3100000" }, "TAG0")
sh.addTagRange("mydb.location", { hostid: "3100000" }, { hostid: "3200000" }, "TAG1")

由于当前的primary位 shard0003,
sh.addTagRange("mydb.location", { hostid: "3200000" }, { hostid: "3300000" }, "TAG2")
sh.addTagRange("mydb.location", { hostid: "3300000" }, { hostid: "3500000" }, "TAG3")
sh.addTagRange("mydb.location", { hostid: "3500000" }, { $maxKey: 1 }, "TAG3")

4. add chunck
// 将primary 放到第二个分片上
db.runCommand({movePrimary:"mydb",to:"shard0001"})
查看分片情况
db.chunks.find({ns:"mydb.location"})

手动建立空的chunk
for ( var x=300; x<350; x++ ){
var prefix = String(x*10000);
sh.splitAt( "mydb.location", { "hostid":prefix } )
}

然后移动chunk到对应的地方, 移动chunk的命令
sh.moveChunk("mydb.location", { hostid: "3000000"}, "shard0000")

==shard0000
for ( var x=300; x<310; x++ ){
var prefix = String(x*10000);
sh.moveChunk( "mydb.location", { "hostid":prefix }, "shard0000" )
}

==shard0001 310 - 320
==shard0002 320 - 330
==shard0003 330 - 350

其他一些查询操作
// 查找大于 340000的数据, 并且
db.chunks.find({ns:"mydb.location", min:{$gte:{ "hostid" : "3400000" }}})

db.getSiblingDB("admin").runCommand( { moveChunk : "mydb.location" ,
find : { "hostid" : "3400000" } ,
to : "shard0003" } )

1. 建立索引
use mydb
db.location.ensureIndex({"hostid":1})
db.location.ensureIndex({"posTime":1})
db.location.ensureIndex({"hostno":1})
db.location.createIndex( { loc : "2dsphere" } )

db.location.ensureIndex({"posTime":1,"loc":"2dsphere"})
db.location.ensureIndex({"posTime":1,"hostno":1,"loc":"2dsphere"})
db.location.getIndexes()

时间: 2024-11-05 12:07:32

mongodb 手动分片的命令汇总的相关文章

MongoDB的分片集群配置

1.分片 概念:在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据也足以提供可接受的读写吞吐量.这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据. 1.分片简介 分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能 强大的大型计算机就可以存储更多的数据,处理更大的负载. 使用几乎所有数据库软件都能进行手动分片,应用

MongoDB之分片

本文介绍分片的思想和MongoDB中的实现方法. 首先须要介绍一些主要的概念. 分片 分片.也叫做分区.是一种经常使用的数据库优化技术.其含义就是将数据拆分,将数据分散到不同机器上的过程.这样就能够使得系统能够存储很多其它的数据,处于更大的负载. 差点儿全部的数据库软件都能够进行手动分片,通过应用程序管理不同server上的不同数据,查询也须要寻找正确的server.这样尽管能够减轻负载,可是却难以维护,比方我们向集群加入节点或者删除节点.都须要相应的调整数据的分布. MongoDB在这一点上做

MongoDB:分片(简介 &amp; 自动分片 &amp; 片键)

分片(增加服务器,水平扩展)是MongoDB的扩展方式,通过分片能过增加更多的机器来应对不断增加的负载和数据,还不影响应用. [简介] 分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程.在关系型数据库中,当一个表太大(超过几亿行数据)时,我们也有分表的做法,和这里的分片是类似的概念. 手动分片:当我们应用的瓶颈出现在数据库系统时,如果我们使用的是关系型数据库,我们通常要进行手动分片.即通过我们的应用层代码去维护与若干个数据库系统的连接,并且每个连接都是独立的.我们应用层代码

【MongoDB】在window系统下搭建MongoDB的分片系统(一)

这篇主要讲述分片集群的主要原理 坦白说,刚看到这个分片系统(Sharding)有点蒙,感觉有点太高大上了.看美国作家Kyle Banker<Mongodb in action>没有明白.又查询资料,首先对与分片的做个说明.从其他书本上看的,说分片这是一种将海量数据水平扩展的数据库集群系统,数据分表存储在sharding的各个节点上,使用者通过简单的配置就可以很方便地够将一个分布式MongoDB集群. 一.角色说明 要构建一个MongoDB分片集群,需要三个角色: shard server  即

Vertica数据库常用管理命令汇总

1.查询数据库是否有等待 select * from resource_queues where node_name=(select node_name from nodes order by node_name limit 1) order by queue_entry_timestamp desc; 2.查当前数据库执行的sql(包含在队列里等待的) select substr(current_statement, 1, 200), count(1) from sessions where

MongoDB 自动分片 auto sharding

MongoDB部署实验系列文章 MongoDB做为NoSQL数据库,最近几年持续升温,越来越多的企业都开始尝试用MongoDB代替原有Database做一些事情.MongoDB也在集群,分片,复制上也有相当不错的的表现.我通过将做各种MongoDB的部署实验进行介绍. 原网址:http://blog.fens.me/mongodb-shard/ 第三篇 MongoDB 自动分片 auto sharding,分为6个部分 初始化文件目录 启动shard节点 配置shard节点 插入数据分片实验 删

linux基础命令汇总

说明 本文仅仅对一些基础命令做演示,不涉及过多的原理性,以及概念性的东西, 示例中仅仅列出常用的选项,对于不常用的选项不做介绍以及演示. 其中部分帮助信息是来源于man查寻结果,未作翻译,请谅解. enable(内置命令) 命令示例 enable -a 显示所有激活和禁用的内置命令 enable -n 显示所有已经禁用的内置命令 enable -n echo 禁用内置命令 echo 命令演示 禁用命令 [[email protected] ~]#enable -n echo [[email pr

【Oracle】 RMAN命令汇总

RMAN命令汇总 2013年写了关于RMAN命令的汇总,先转换为MD文档,温故而知新. 1.进入RMAN 进入本地数据库 [[email protected] ~]$ rman target / 进入远程数据库 [[email protected] ~]$ rman target zsd/[email protected]_1.9 使用日志功能 [[email protected] logs]$ rman target / msglog /data/backup/logs/full_dbback

解决mongodb的安装mongod命令不是内部或外部命令

1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现以下文件 在安装的盘C:下建立mongodb文件夹,拷贝bin文件夹到该目录下,这样就相当于安装了mongodb的相关命令. 为了启动mongodb方便,将mongod.exe路径加入环境变量,电脑->属性->高级系统设置->环境变量,在path里加入路径: 这样在命令行任何地方都能用到mongod命令. 2:建立数据文件及启动 然后在D盘新建一个mongodb