MongoDB分片集群

Mongodb Sharding分片集群
OS                      CentOS6.5
192.168.3.100		server1		configport=27017
192.168.3.100		server1		mongosport=27018
192.168.3.101		node1		mongodport=27018
192.168.3.102		node2		mongodport=27018
#CentOS安装mongo软件包
yum -y install mongodb mongodb-server
#开启配置服务器
mkdir /mongod
mongod --dbpath=/mongod --logpath=/mongod/config.log --port=27017 --fork

#路由服务器启动
mkdir /mongos
mongos --configdb=192.168.3.100:27017 --logpath=/mongos/mongos.log --port=27018 --fork

#启动mongod分片服务器,也就是添加片,端口为:27018,27018
#node1配置
mkdir /mongo1
mongod --dbpath=/mongo1 --logpath=/mongo1/mongo1.log --port=27018 --fork

#node2配置
mkdir /mongo2
mongod --dbpath=/mongo2 --logpath=/mongo2/mongo2.log --port=27018 --fork
#服务配置,将27019,27020的mongod交给mongos,添加分片也就是addshard()
mongo 192.168.3.100:27018/admin
mongos> db.runCommand({addshard:"192.168.3.101:27018"});
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> db.runCommand({addshard:"192.168.3.102:27018"});
{ "shardAdded" : "shard0001", "ok" : 1 }

#查看数据库
mongos> show dbs;  
admin	(empty)
config	0.1875GB
#创建数据库,如果建的数据库是空的那么将不会生成,所以紧接着在数据库里面建集合
mongos> use testdb  
mongos> db.testdocument01.insert({"name":"wsq","id":1,"address":"gaugnzhou","mobile":"13838383830","sex":"M"});
mongos> show tables;
system.indexes
testdocument01
mongos> db.testdocument01.find();
{ "_id" : ObjectId("55114e25f00c7c97c710566e"), "name" : "wsq", "id" : 1, "address" : "guangzhou", "mobile" : "13838383830", "sex" : "M" }

#开启分片功能需要进入admin集合当中操作,开启分片功能
mongos> use admin
mongos> db.runCommand({"enablesharding":"testdb"});

#指定集合分片主键,这里指定为testdocument01.id字段
mongos> db.runCommand({"shardcollection":"testdb.testdocument01","key":{"_id":1}});
#至此分片操作全部结束,接下来通过mongos向mongodb插入多条文档,然后通过printShardingStatus命令查看mongodb的数据分片情况主要看三点信息:
  ① shards: 我们清楚的看到已经别分为两个片了,shard0000和shard0001
  ② databases: 这里有个partitioned字段表示是否分区,这里清楚的看到已经分区
  ③ chunks: 集合
mongos> use testdb;
mongos> db.printShardingStatus();	#查看分片信息
--- Sharding Status --- 
  sharding version: {
	"_id" : 1,
	"version" : 3,
	"minCompatibleVersion" : 3,
	"currentVersion" : 4,
	"clusterId" : ObjectId("555f5b7d30c41ebb264764b1")
}
  shards:
	{  "_id" : "shard0000",  "host" : "192.168.3.101:27018" }
	{  "_id" : "shard0001",  "host" : "192.168.3.102:27018" }
  databases:
	{  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
	{  "_id" : "testdb",  "partitioned" : true,  "primary" : "shard0000" }
		testdb.testdocument01
			shard key: { "_id" : 1 }
			chunks:
				shard0000	1
			{ "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 0)
#循环插入10000条文档
mongos> for (var i=0;i<10000;i++){db.testdocument01.insert({"name":"wsq"+i,"id":2+i,"address":"guangzhou","mobile":13838383830+i,"sex":"M"})};
#node1登陆查看分片效果
[[email protected] /]# mongo 192.168.3.101:27018
MongoDB shell version: 2.4.12
connecting to: 127.0.0.1:27018/test
> show dbs;
local	0.078125GB
testdb	0.203125GB
> use testdb;
switched to db testdb
> show tables;
system.indexes
testdocument01
> db.testdocument01.count()
5802
#node2登陆登陆查看分片效果
[[email protected] /]# mongo 192.168.3.102:27018
MongoDB shell version: 2.4.12
connecting to: 127.0.0.1:27018/test
> show dbs;
local	0.078125GB
testdb	0.203125GB
> use testdb;
switched to db testdb
> show tables;
system.indexes
testdocument01
> db.testdocument01.count()
4199
#移除分片
mongos> db.runCommand({"removeshard":"192.168.3.101:27018"});
时间: 2024-10-23 06:09:21

MongoDB分片集群的相关文章

Bugsnag的MongoDB分片集群使用经验

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

使用HAProxy作为MongoDB分片集群mongos负载均衡

MongoDB分片集群的入口mongos自身没有failover机制.官方建议是将mongos和应用服务器部署在一起,多个应用服务器就要部署多个mongos实例,这样很是不方便.还可以使用LVS或者HAProxy来实现多个mongos的failover机制,但是一定要注意使用client affinity即客户端关联特性. global     chroot      /data/app_platform/haproxy/share/      log         127.0.0.1 loc

mongodb分片集群突然停电造成一些错误,分片无法启动

今天突然停电使mongodb分片集群造成这种错误,暂时不知道怎么解决,如果 有人知道请回复我 ,现在把记录下来,等后期处理. Fri Aug  8 10:49:52.165 [initandlisten] connection accepted from 172.16.0.115:59542 #2 (2 connections now open)Fri Aug  8 10:49:52.954 [initandlisten] connection accepted from 172.16.0.10

MongoDB 分片集群实战

背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁盘,此种方法虽然成本很高,但是实现比较简单,维护起来也比较方便. 水平扩展:通过使用更多配置一般的服务器来共同承担工作负载,此种方法很灵活,可以根据工作负载的大小动态增减服务器的数量,但是实现比较复杂,得有专门的人员来运维. Databases for MongoDB 试用 IBM Cloud 上提

mongoDB(三) mongoDB分片集群

mongoDB分片集群 介绍 解决数据分片,防止数据丢失生产环境需要擦用分片+副本集的部署方式 组成部分 route: 提供入口,不存储数据 configserver: 存储元数据信息,建议使用副本集 shardserver: 数据存储服务,存储真正数据, 也许要使用副本集 依赖关系 当数据插入时,需要从configsrv知道数据要插入哪个shardsrv分片 当用户获取数据时,需要从configsrv知道数据存储在哪个shardsrv分片 集群搭建 使用同一份mongodb二进制文件 修改对应

MongoDB分片集群配置实例

环境: windows操作系统 mongodb 3.4社区版 目标: 配置包含两个分片一个配置服务器的分片集群.其中每一个分片和一个配置服务器都被配置为一个单独的副本集.如下图所示: 注:每一个分片都应该被配置在一个单独的服务器设备上.方便起见,本文在同一台机器通过不同端口模拟不同服务器上的组件,实现分片集群的配置.(生产环境的配置与此相同,只需使用自己的主机名.端口.路径等即可). 下图为本文配置的分片集群架构,其中的任意节点(副本集节点和分片节点)都是可扩展的. 1.分别为config se

[ MongoDB ] 分片集群及测试

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

备份和还原MongoDB分片集群数据

1.使用mongodump备份小量分片集群数据 如果一个分片集群的数据集比较小,可以直接使用mongodump连接到mongos实例进行数据备份.默认情况下,mongodump到非primary的节点进行数据查询. 如: mongodump --host 192.168.100.200 --port 28018 -d taiwan_game1 -o . mongorestore --host 192.168.100.200 --port 28018 taiwan_game1 需要注意的是如果使用

MongoDB分片集群还原

从mongodb 3.0开始,mongorestore还原的时候,需要一个运行着的实例.早期的版本没有这个要求. 1.为每个分片部署一个复制集 (1)复制集中的每个成员启动一个mongod mongod --dbpath /mdb/data/s11 --logpath /mdb/mlog/s11.log --fork --port 27017 --replSet s1 --smallfiles & mongod --dbpath /mdb/data/s12 --logpath /mdb/mlog