mongodb sharding分布式

mongodb分布需要以下三种类型服务

1.Query Routers:用来直接面对用户,路由数据写入路径

2.Config servers:用来存储分布式的元数据,即具体数据在各服务上的分布情况,至少三个Config server

3.Shards:存储数据,其中Shard最好是Replica Set,并且至少两个Shard

1.首先要先部署好shard集群

配置文件示例如下:

systemLog:
    quiet: true
    destination: file
    path: "/opt/local/mongodb-conf/logs_pisa_fls/system.log"
    logAppend: true
processManagement:
    fork: true
net:
    port: 8000
    bindIp: 10.130.161.98
storage:
    dbPath: "/opt/local/mongodb-conf/data_pisa_fls/"
    journal:
      enabled: true
    smallFiles: true
replication:
    replSetName: "pisa_fls_1"
sharding:
    clusterRole: shardsvr

此处由于是在一台虚拟机上进行的测试,所以将smallFiles选项设为true,否则每个mongodb服务都装初始化一个占用物理磁盘5%空间的oplog,空间会不够用

2.配置Config servers

配置文件示例如下

systemLog:
    quiet: true
    destination: file
    path: "/opt/local/mongodb-conf-2/logs_pisa_fls_2/system.log"
    logAppend: true
processManagement:
    fork: true
net:
    port: 8006
    bindIp: 10.130.161.98
storage:
    dbPath: "/opt/local/mongodb-conf-2/data_pisa_fls_2/"
    journal:
      enabled: true
sharding:
    clusterRole: configsvr

3.配置Query Routers

Query Routers一定是在配好Config server并且已运行的情况下再进行配置和启动

配置示例如下

systemLog:
    quiet: true
    destination: file
    path: "/opt/local/mongodb-router-conf/logs_pisa_fls_router/system.log"
    logAppend: true
processManagement:
    fork: true
net:
    port: 8009
    bindIp: 10.130.161.98
sharding:
    chunkSize: 1024
    configDB: 10.130.161.98:8006,10.130.161.98:8007,10.130.161.98:8008

其中 configDB项为所需的Config server,router不需要数据存储项,否则会报错

4.启动服务

Config servers和Shards用mongod启动即可,例:

./mongod --config /opt/local/mongodb-conf/mongodb_pisa_fls.conf 
#Query Routers需要用mongos启动,例:
./mongos --config /opt/local/mongodb-router-conf/mongodb_pisa_fls_router.conf

5.关联集群

首先shell登录Query Routers

./mongo --host 10.130.161.98 --port 8009

使用sh.addShard([replica-set-name]/[hostname]:port)添加集群

mongos> sh.addShard("pisa_fls_1/10.130.161.98:8000")
{ "shardAdded" : "pisa_fls_1", "ok" : 1 }

mongos> sh.addShard("pisa_fls_2/10.130.161.98:8003")
{ "shardAdded" : "pisa_fls_2", "ok" : 1 }

创建要分片的集合

mongos> db.createCollection("geographic")
{
	"ok" : 1,
	"$gleStats" : {
		"lastOpTime" : Timestamp(1411103931, 1),
		"electionId" : ObjectId("541ba83559d3eec53f313ec7")
	}
}

创建集合索引

mongos> db.geographic.createIndex({loc:"2dsphere"})
{
	"raw" : {
		"pisa_fls_1/10.130.161.98:8000,10.130.161.98:8001,10.130.161.98:8002" : {
			"createdCollectionAutomatically" : false,
			"numIndexesBefore" : 1,
			"numIndexesAfter" : 2,
			"ok" : 1
		}
	},
	"ok" : 1
}

设置集合为分片模式sh.shardCollection("db name:collection name", shardKey)

mongos> sh.shardCollection("pisa_fls.geographic", {"_id":"hashed"})

显示当前分布式状态

mongos> sh.status()
--- Sharding Status --- 
  sharding version: {
	"_id" : 1,
	"version" : 4,
	"minCompatibleVersion" : 4,
	"currentVersion" : 5,
	"clusterId" : ObjectId("541ba6bbe965332128382725")
}
  shards:
	{  "_id" : "pisa_fls_1",  "host" : "pisa_fls_1/10.130.161.98:8000,10.130.161.98:8001,10.130.161.98:8002" }
	{  "_id" : "pisa_fls_2",  "host" : "pisa_fls_2/10.130.161.98:8003,10.130.161.98:8004,10.130.161.98:8005" }
  databases:
	{  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
	{  "_id" : "test",  "partitioned" : false,  "primary" : "pisa_fls_1" }
	{  "_id" : "pisa_fls",  "partitioned" : true,  "primary" : "pisa_fls_1" }
		pisa_fls.geographic
			shard key: { "_id" : "hashed" }
			chunks:
				pisa_fls_1	2
				pisa_fls_2	2
			{ "_id" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-4611686018427387902") } on : pisa_fls_1 Timestamp(2, 2) 
			{ "_id" : NumberLong("-4611686018427387902") } -->> { "_id" : NumberLong(0) } on : pisa_fls_1 Timestamp(2, 3) 
			{ "_id" : NumberLong(0) } -->> { "_id" : NumberLong("4611686018427387902") } on : pisa_fls_2 Timestamp(2, 4) 
			{ "_id" : NumberLong("4611686018427387902") } -->> { "_id" : { "$maxKey" : 1 } } on : pisa_fls_2 Timestamp(2, 5) 

列出各集群状态

mongos> use admin
switched to db admin
mongos> db.runCommand({listShards:1})
{
	"shards" : [
		{
			"_id" : "pisa_fls_1",
			"host" : "pisa_fls_1/10.130.161.98:8000,10.130.161.98:8001,10.130.161.98:8002"
		},
		{
			"_id" : "pisa_fls_2",
			"host" : "pisa_fls_2/10.130.161.98:8003,10.130.161.98:8004,10.130.161.98:8005"
		}
	],
	"ok" : 1
}

查看集合详细分布情况

mongos> db.geographic.stats()
{
	"sharded" : true,
	"systemFlags" : 1,
	"userFlags" : 1,
	"ns" : "pisa_fls.geographic",
	"count" : 20,
	"numExtents" : 2,
	"size" : 4800,
	"storageSize" : 16384,
	"totalIndexSize" : 49056,
	"indexSizes" : {
		"_id_" : 16352,
		"_id_hashed" : 16352,
		"loc_2dsphere" : 16352
	},
	"avgObjSize" : 240,
	"nindexes" : 3,
	"nchunks" : 4,
	"shards" : {
		"pisa_fls_1" : {
			"ns" : "pisa_fls.geographic",
			"count" : 7,
			"size" : 1680,
			"avgObjSize" : 240,
			"storageSize" : 8192,
			"numExtents" : 1,
			"nindexes" : 3,
			"lastExtentSize" : 8192,
			"paddingFactor" : 1,
			"systemFlags" : 1,
			"userFlags" : 1,
			"totalIndexSize" : 24528,
			"indexSizes" : {
				"_id_" : 8176,
				"loc_2dsphere" : 8176,
				"_id_hashed" : 8176
			},
			"ok" : 1
		},
		"pisa_fls_2" : {
			"ns" : "pisa_fls.geographic",
			"count" : 13,
			"size" : 3120,
			"avgObjSize" : 240,
			"storageSize" : 8192,
			"numExtents" : 1,
			"nindexes" : 3,
			"lastExtentSize" : 8192,
			"paddingFactor" : 1,
			"systemFlags" : 1,
			"userFlags" : 1,
			"totalIndexSize" : 24528,
			"indexSizes" : {
				"_id_" : 8176,
				"loc_2dsphere" : 8176,
				"_id_hashed" : 8176
			},
			"ok" : 1
		}
	},
	"ok" : 1
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值