MongoDB学习笔记10——分片

Wesley13
• 阅读 492

分片(Sharding)这种技术可以将数据分散到多台机器,但对于应用而言,仍然如同在使用单个数据库一样。在使用MongoDB时,水平分区是唯一可采用的方式。

在MongoDB中由MongoS路径进程管理数据的分割,并将请求路由到必需的分片服务器。

在进行分片的时候需要mongod配置服务器和mongos分片服务器。

1)创建分片设置:

打开新的终端窗口:

$ mkdir -p /db/config/data

$ mongod --port 27022 --dbpath /db/config/data --configsvr --replSet config

$ mongo --port 27022

rs.initiate()

创建分片控制器:

$ mongos --configdb config/:27022 --port 27021 --chunkSize 1

启动分片服务器:

$ mkdir -p /db/share0/data

$ mongod --port 27023 --dbpath /db/share0/data

创建一个名为testdb的数据库,然后在数据库中激活一个名为testcollection的集合,对该集合进行分片,赋予它一个名为testkey的参数,作为分片函数:

sh.enableSharing("testdb")

sh.shardCollection("testdb.testcollection",{testkey:1})

验证:

$mongo localhost:27021

use testdb

db.testcollection.count()

在集群中添加新的分片:

$ sudomkdir -p /db/shard2/data

$ sudomongod --port 27025 --dbpath /db/shard2/data

$ mongo localhost:27021

sn.addShard(":27025")

在集群中移除分片服务器:

$ mongo localhost:27021

use admin

db.runCommand({removeShard:":27025"})

确定连接的方式:

$ mongo

use testdb

db.runCommand({isdbgrid:1})

isdbgrid:1字段,意味着目前连接到系统中已经启用的分片;如果包含了isdbgrid:0字段,表示连接到mongod。

列出分片服务器的状态:

$ mongo localhost:27021

sh.status()

2)均衡器:

MongoS中包含一个均衡器元素,它将会移动集群中数据的逻辑块,从而保证它们均匀分布在所有分片服务器中。

启动均衡器:

sh.startBalancer()

停止均衡器:

sh.stopBalancer()

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
MongoDB分片(Sharding)技术
分片(sharding)是MongoDB用来将大型集合分割到不同服务器(或者说一个集群)上所采用的方法。尽管分片起源于关系型数据库分区,但MongoDB分片完全又是另一回事。和MySQL分区方案相比,MongoDB的最大区别在于它几乎能自动完成所有事情,只要告诉MongoDB要分配数据,它就能自动维护数据在不同服务器之间的均衡。2.1MongoDB
Stella981 Stella981
2年前
MongoDb分片集群认证
本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html),MongoDb分片集群认证几个主要流程1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFi
Wesley13 Wesley13
2年前
MongoDB DBA 实践8
在Linux系统中,主要是使用命令行进行mongodb的分片集群部署一、先决条件  mongodb安装成功,明确路径,MongoDB的几个路径:1./var/lib/mongodb2./var/log/mongodb3./etc/mongod.conf4.usr/bin/二、分片部署   
Wesley13 Wesley13
2年前
MongoDB 集群设置集合分片生效及查看集合分片情况
一、设计DB分片与Collection分片连接mongos/opt/mongodb/mongodblinuxx86_642.4.8/bin/mongo 127.0.0.1:27017使用admin数据库useadmin指定testdb分片生效db.runCommand({ena
Wesley13 Wesley13
2年前
Mongo权威指南(初级篇)
MongoDB学习笔记特点:空间换时间易于扩展全文索引SQL与NoSQL的合并,解决了SQL的效率既有SQL的形式,又有NoSQL的自由分片(Sharding)将大的集合分割到不同的服务器(集群),MongoDB自动完成数据的分配,而且对应用层透明集群mongos是用户与集群的交互点,用户可以把一个集群当成一台服务器
Wesley13 Wesley13
2年前
MongoDB的分片集群的安装
简介所谓分片,指的就是把数据拆分,将其分散到不同机器上的过程。MongoDB支持自动分片,对应用而言,好像始终和一个单机的服务器交互一样。分片和复制复制是让多台服务器拥有相同的数据副本,而分片是每个分片都拥有整个数据集的一个子集,且相互是不同的数据,多个分片的数据合起来构成整个数据集。Mongos用来
Wesley13 Wesley13
2年前
MongoDB 查看集合是否分片
MongoDB会把分片过的集合保存在config.collection集合中,若需要查看分片键,则需要根据该集合进行查找。官方的其他很多分片快捷命令也都处于config库三种方式1、去config库中查询这种办法可以查看分片键信息db.collections.find({$and:\{'dropped':{$
Wesley13 Wesley13
2年前
MongoDB分片介绍
本文简单介绍MongoDB的分片功能,对分片进行了概述,具体的功能详解,后续文章会陆续推出分片是把数据分配到多个服务器上的一种方式,MongoDB使用分片实现大数据部署以及高吞吐操作。大数据以及高吞吐量的应用会对单个服务器的容量造成很大的挑战。比如,高频率的查询操作会消耗服务器的CPU,如果数据集大于系统的RAM容量,也会对硬盘的性能造成影响。应
Stella981 Stella981
2年前
Mongodb集群节点故障恢复场景分析(转)
一个适当配置的Mongodb分片集群是没有单点故障。本文描述了分片集群中存在的几种不同的潜在的节点故障场景,以及Mongodb对这些节点故障是怎么处理的。1、Mongos节点宕机一个Mongos进程应该运行在每一个应用程序服务器上,这个服务器应该独占这个Mongos进程,并且通过它与分片集群来通讯。Mongos进程不是持久化的,相反,
Wesley13 Wesley13
2年前
MongoDB分片
分片mongos把分片的mongod管理起来何时分片单个节点磁盘不足单个mongod不能满足写数据的性能要求将大量数据放到内存中提高性能什么是片键选择递增(分布不均匀,查询比较好)还是随机片键片键对操作和性能的影响实施分片启动配置服务器启动mongos添加mongod实例对数据库启